I'm currently using a 3x3 rotation matrix to work with 3D points.
How does this matrix differ from a 4x4 Matrix?
And how do I convert a 3x3 matrix into a 4x4?
I'm currently using a 3x3 rotation matrix to work with 3D points.
How does this matrix differ from a 4x4 Matrix?
And how do I convert a 3x3 matrix into a 4x4?
A 4x4 matrix can be used to do both rotation and translation in a single matrix.
The tx
, ty
values down the right side of your matrix would be added to the x, y, z of the vertex you are transforming.
So to convert a 3x3 matrix to a 4x4, you simply copy in the values for the 3x3 upper left block, like so:
[ a11 a12 a13 ]
[ a21 a22 a23 ]
[ a31 a32 a33 ]
That 3x3 becomes this 4x4
[ a11 a12 a13 0 ]
[ a21 a22 a23 0 ]
[ a31 a32 a33 0 ]
[ 0 0 0 1 ]
Notice in the 4x4 the upper left block got straight copied, and 0's were entered for the other new, extra entries (indicating I don't want any translation to be added).
A 4x4 matrix will support all affine transforms, including rotation and translation.
See the answer to this question: Solution to skew bitmaps in flash
For the gory math, see: http://www.euclideanspace.com/maths/geometry/affine/matrix4x4/index.htm
A 4x4 matrix allows affine transformations of 3-dimensional vectors.