Transformation Matrix

Feel free to ask any question here
Post Reply
juls
Posts: 3
Joined: Fri Nov 30, 2018 3:02 am

Transformation Matrix

Post by juls »

I'm using the fine alignment tool to assess the accuracy of data collection between two models of the same region. Ultimately, I would like to use the transformation matrix to determine the difference in scale, rotation about the z axis (to determine the orientation error in planform), and rotation about the x & y axis (to determine error in slope). What is the best method to do this?

I understand that the transformation matrix is a 3x3 rotation matrix (A1 thru C3), with a column vector for translation (A4 thru C4).
[A1, A2, A3, A4]
[B1, B2, B3, B4]
[C1, C2, C3, C4]
[0, 0, 0, 1]

To determine the scale, I'm looking at the diagonal of the 3x3 rotation matrix (i.e. A1, B2, and C3 on the matrix), where each number represents the scale in the x (A1), y (B2), and x (C3). Is this correct?

To determine the angles, I'm trying to figure out the angle rotation around each axis from the 3x3 rotation matrix. I tried to use workflows like this, but I'm not getting reasonable numbers. How can I pull out the rotation about x, y, and z axes separately from this transformation matrix?
daniel
Site Admin
Posts: 7717
Joined: Wed Oct 13, 2010 7:34 am
Location: Grenoble, France
Contact:

Re: Transformation Matrix

Post by daniel »

1) For the scale, it would be possible to read it from the diagonal only if the matrix was the identity... You have to compute the norm of a column (the 3 first element = sqrt(A1^2 + B1^2 + C1^2)). This should give you the scale

2) A rotation matrix in 3D cannot be decomposed as 3 "independent" rotations about X, Y and Z. You have to follow an order. You should indeed use Euler angles. But be sure to divide the rotation matrix elements (3x3 upper left matrix) by the scale first.

(A simpler option might be to use the 'Edit > Apply Transformation' matrix, and read the Euler angles from the 3rd tab).
Daniel, CloudCompare admin
Post Reply