Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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?

like image 507
Robin Rodricks Avatar asked Jan 28 '11 21:01

Robin Rodricks


3 Answers

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

like image 59
bobobobo Avatar answered Oct 07 '22 00:10

bobobobo


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

like image 24
payne Avatar answered Oct 07 '22 00:10

payne


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

like image 24
Judge Maygarden Avatar answered Oct 06 '22 23:10

Judge Maygarden