Decomposing a Transformation Matrix
26 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Kash Costello
el 28 de Nov. de 2018
Hi!
I have been trying to look for a function that will "undo" a transformation matrix.
I saw in Matlab that there's a function "makehgtform" to create a transformation matrix. Now, I'm looking for something that is the exact opposite of this.
Example:
M = makehgtform('xrotate',30*pi/180);
It would result to a 4x4 matrix. But I want to actually extract the X, Y, Z translation and X,Y,Z rotation.
Can anyone help me or just give me an idea? I would really appreciate it! :(
Thanks in advance!
0 comentarios
Respuesta aceptada
Matt J
el 28 de Nov. de 2018
Editada: Matt J
el 28 de Nov. de 2018
Here's an example that makes use of the attached file for rotation matrix decomposition.
>> M = makehgtform('translate',[1,2,3],'xrotate',30*pi/180)
M =
1.0000 0 0 1.0000
0 0.8660 -0.5000 2.0000
0 0.5000 0.8660 3.0000
0 0 0 1.0000
>> translation=M(1:3,end)
translation =
1
2
3
>> rotation=rot2taitbryan(M(1:3,1:3),'xyz'), %see attached file
rotation =
30.0000 0 0
9 comentarios
Matt J
el 28 de Nov. de 2018
Editada: Matt J
el 28 de Nov. de 2018
I guess I don't fully grasp what atan2 is
Even after googling? https://en.wikipedia.org/wiki/Atan2
Más respuestas (1)
Bruno Luong
el 28 de Nov. de 2018
Translation vector is T(1:3,4);
Rotation matrix is T(1:3,1:3).
If you want to decompose in rotation on axis, there are many conventions (intrinsic, extrinsic, Euler's angle, Tait–Bryan angles, etc...) see https://en.wikipedia.org/wiki/Euler_angles and pick your choice.
0 comentarios
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!