PDA

View Full Version : rotation matrix

01-21-2006, 11:21 AM
Hi,

It's just a very basic math question. If after rotation (without translation), (1, 0, 0), (0, 1, 0) and (0, 0, 1) are rotated to (x1, y1, z1), (x2, y2, z2) and (x3, y3, z3). Is it true that a rotation 3x3 matrix can be represented as:

| x1, y1, z1 |
| x2, y2, z2 |
| z3, y3, z3 |

The web sites I found that teaches rotation all represent a rotation matrix from the perspect of rotation angles. So I don't know if the matrix above (without a concept of angles) is correct. Please advise. Thanks.

Tony

01-21-2006, 12:14 PM
A rotation matrix is just a coordinate system oriented in another coordinate system. Take the axes of any coordinate system and put them in the columns of a 3x3 matrix, and presto: rotation matrix.

It's helpful (to me anyway) to look at the effect a rotation matrix has on points when you multiply them together. Multiplying a point on the right side (post multiply) has the effect of scaling and adding the coordinate system axes together, while multiplying on the left (or on the right side of the matrix transpose) has the effect of projecting the point into the coordinate system contained within the columns (or rows of the transposed matrix).

Do that help?

Cheers,

:)

jyoung77
01-21-2006, 05:00 PM
Hi Smiley,

Thank you for this wonderful info. Your perspect is very helpful, which I need most. I know the rotation matrix has something to do with angles but didn't know the simplest truth, namely a coordinate system oriented in another coordinate system. I need this flesh reminding. I wonder which web sites people use the most for this purpose.

Thanks.

Tony

01-21-2006, 06:13 PM
Hi Jyoung77,

Sin and cos can be used to describe a point on a circle,
x = cos(a)
y = sin(a).

If treated like a direction instead of a point, this is really just a 2D coordinate system axis. Add another axis, such that it's always perpendicular to that one, and you have a 2 axes. All we need is a vector that's always 90 degrees ahead of the one above.
x' = cos(a+90) = -sin(a)
y' = sin(a+90) = cos(a)

Add one more axis, perpendicular to both of these, and you've got a coordinate system for 3D. Put all 3 in the columns of a matrix, and voila
(cos -sin 0.0)
(sin cos 0.0)
(0.0 0.0 1.0)

But you can use any method you want to generate these matrices. All you really need are 3 normalized, mutually orthogonal (perpendicular) vectors (be mindful of handedness).

If you'd like to learn more about this stuff I strongly recommend getting an introductory book in linear/matrix algebra. I have several and they have paid for themselves a 1000 times over. There are some good web sites out there I'm sure, but I don't know of any in particular off hand (a good book or 2 is all you really need, IMHO).

I hope this helps.

Cheers

:)