Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Retrieving angle of rotation from transformation matrix

  1. Dec 19, 2009 #1
    Hi!

    How do I calculate the angle of rotation for each axis by a given 4x4 transformation matrix? The thing is that all values are a kind of mixed up in the matrix, so I cannot get discrete values to start calculating with anymore.

    Thanks,


    Phong
     
  2. jcsd
  3. Dec 19, 2009 #2

    HallsofIvy

    User Avatar
    Staff Emeritus
    Science Advisor

    A four by four transformation matrix? Are you rotating in four dimensional space or is this a projective space?

    First find the eigenvalues. A rotation matrix, in four dimensions may have two real and two complex-conjugate eigenvalues or two pairs of complex eigenvalues. If there are two real eigenvalues they must be either 1 or negative one. The eigenvectors corresponding to those eigenvalues give the axes of rotation. The complex eigenvalues will have modulus 1 and are of the form [itex]cos(\theta)\pm i sin(\theta)[/itex] where [itex]\theta[/itex] is the angle of rotation.

    Two pairs of complex rotation give two simultaneous rotations in four space but are again of the form [itex]cos(\theta)+ i sin(\theta)[/itex]. What those mean depends upon how you are writing vectors in four space.

    If you are talking about a matrix representing a rotation matrix projectively, then you can renormalize to make the last row [0 0 0 1] and the last column [tex]\begin{bmatrix}0 \\ 0 \\ 0\\ 1\end{bmatrix}[/tex]. The 3 by 3 matrix made up of the first three rows and columns will have one eigenvalue of 1 (the corresponding eigenvector gives the axis of rotation) and two complex conjugate eigenvalues of modulus 1. They will be of the form [itex]cos(\theta)+ i sin(\theta)[/itex] where [itex]\theta[/itex] is the angle of rotation.
     
  4. Dec 19, 2009 #3
    Hello!

    Thank you very much for your detailed reply. I must admit that I'm pretty new to transformation matrices and have not yet entirely understood the mathematical meaning of eigenvalues and eigenvectors although I try hard to understand everything I can read about it, but with some help I surely learn a lot faster.

    I'm rotating in a projective three-dimensional space, that's why I use a 4x4 matrix.
    To give a more specific example, I have a transformation matrix that is the following:

    [tex]\begin{bmatrix}0.893 & 0.060 & -0.447 & 20 \\ -0.157 & 0.97 & -0.184 & 15 \\ -0.423 & -0.235 & -0.875 & 45 \\ 0 & 0 & 0 & 1 \end{bmatrix}[/tex]

    This transformation matrix should transform the object with a translation of 20 15 45 and a rotation of -15 25 -10 (xyz).

    Now the eigenvalues. I don't know if I've understood the meaning of them correctly, but if yes the eigenvalues for this matrix should be in the identity matrix which is:

    [tex]\begin{bmatrix}1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{bmatrix}[/tex]

    So if I'm still on the right track, the eigenvectors, which are the axes of rotation, are simply
    [tex]\left(1, 0, 0, 0)[/tex] for x
    [tex]\left(0, 1, 0, 0)[/tex] for y
    [tex]\left(0, 0, 1, 0)[/tex] for z

    Am I still on the right track or am I totally and fatally wrong?
     
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?
Similar Discussions: Retrieving angle of rotation from transformation matrix
Loading...