OpenGL uses 4x4 matrix used in homogenous coordinate system. Where each coordinate is represented as [x,y,z,w].Where w=1 for the affine transformations such as translations, scaling, rotations. W can be any floating point number in the range -1.0 to 1.0 for projection matrices. During rasterization x, y, z coordinates are computed as x/w, y/w and z/w. This is known as perspective divide.
OpenGL uses columnar matrix multiplication as shown below.
Identity Matrix
A special matrix having all elements along diagonal as 1 as shown below.
It is associative, I*M = M*I = M. It's used in the computation of rotation, translation and scaling as discussed below.
Translation Matrix
Translation matrix is used for moving around 3d objects.
Example:
Let's say there is a point [1,2,3] and want to translate by [4,5,6]. It can be accomplished as below. Resulting in [5,7,9].
Scaling Matrix
Scaling matrix is used for Shrinking or Expanding 3d objects.
Example:
Let's say there is a point [1,2, 3] and want to scale by [2,2,2]. It can be accomplished as below. Resulting in [2,4,6].
Rotation
In 3D, rotation happens independently on three cardinal axes X, Y, and Z.
Pitch or Rotation on X axis
The following matrix represents rotation matrix on X axis.
Example:
Let's say there is a point [1,2, 3] and want to rotate by 90 degrees in X axis. It can be accomplished as below. Resulting in [1,-3,2].
The following matrix represents rotation matrix on Y axis.
Example:
Let's say there is a point [1,2, 3] and want to rotate by 90 degrees in Y axis. It can be accomplished as below. Resulting in [3,2,-1].
Roll or Rotation on Z axis
The following matrix represents rotation matrix on Z axis.
Example:
Let's say there is a point [1,2, 3] and want to rotate by 90 degrees in Z axis. It can be accomplished as below. Resulting in [-2,1,3].
No comments:
Post a Comment