How to convert a 3x3 rotation matrix into 4x4 matr

2020-02-10 05:32发布

问题:

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?

回答1:

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).



回答2:

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



回答3:

A 4x4 matrix allows affine transformations of 3-dimensional vectors.