Direction Cosine Matrix using left-handed coordinate system?

6 views (last 30 days)
Hi, is there any reason why angle2dcm uses a left-handed coordinate system?
angle2dcm(pi/6, 0, 0, 'XYZ') =
1.0000 0 0
0 0.8660 0.5000
0 -0.5000 0.8660
When I multiply this with a vector in z-direction I can see that the function does not follow the right hand rule for rotation. The function rotx however rotates the other way round. I'm using a simulink 6dof model block. Matlab help says that the dcm which is one of the block outputs gives me the transformation from inertial to body and the used system is a right-handed system. Does anyone know why Matlab is doing this?
  2 Comments
John D'Errico
John D'Errico on 29 Dec 2016
It is always nice if you tell people where (which toolbox) a function comes from. Don't force people to search for it, as that just makes them work to answer your question. You want to make it as easy as possible to get an answer.
Tilman
Tilman on 29 Dec 2016
Sorry, the 6dof is part of the aerospace toolbox. angle2dcm is standard Matlab I think.

Sign in to comment.

Accepted Answer

Matt J
Matt J on 29 Dec 2016
Edited: Matt J on 29 Dec 2016
I can't be sure, but some Matlab Toolboxes (e.g., Image Processing) like to represent coordinates as row vectors instead of column vectors. This means they need to perform transformations by right-multiplying row vectors with transformation matrices instead of left-multiplying. If this is the convention of the Aerospace Toolbox as well, the result
R=angle2dcm(pi/6, 0, 0, 'XYZ')
is perfectly consistent with a right handed system. You are simply meant to be executing the transform as [0,0,1]*R instead of R*[0;0;1].
  1 Comment
Tilman
Tilman on 30 Dec 2016
Edited: Tilman on 31 Dec 2016
Thank you very much. angle2dcm is actually from the aerospace toolbox, too. It also looks like Simulink uses row vectors by default.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!