Retrieving angle of rotation from transformation matrix

Click For Summary
SUMMARY

The discussion focuses on calculating the angle of rotation from a 4x4 transformation matrix in projective three-dimensional space. Key insights include the necessity of finding eigenvalues and eigenvectors, which reveal the axes of rotation. For the provided transformation matrix, the eigenvalues should align with the identity matrix, indicating the presence of real eigenvalues corresponding to the rotation axes. The angles of rotation can be derived from the complex eigenvalues expressed in the form cos(θ) ± i sin(θ).

PREREQUISITES
  • Understanding of 4x4 transformation matrices
  • Knowledge of eigenvalues and eigenvectors
  • Familiarity with projective geometry
  • Basic trigonometric functions (cosine and sine)
NEXT STEPS
  • Study the properties of eigenvalues and eigenvectors in linear algebra
  • Learn about transformation matrices in computer graphics
  • Explore the application of complex numbers in rotation calculations
  • Investigate projective space and its implications in 3D transformations
USEFUL FOR

Mathematicians, computer graphics developers, and anyone involved in 3D transformations and rotations will benefit from this discussion.

Phong
Messages
5
Reaction score
0
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
 
Physics news on Phys.org
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.
 
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?
 

Similar threads

  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 6 ·
Replies
6
Views
2K
Replies
27
Views
5K
  • · Replies 7 ·
Replies
7
Views
3K
  • · Replies 1 ·
Replies
1
Views
4K
  • · Replies 12 ·
Replies
12
Views
5K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 8 ·
Replies
8
Views
2K