Why is the result of quaternion rotation an matrix multiplication not the same

3 visualizaciones (últimos 30 días)
Hi guys,
Consider the following:
R = [1,0,0;0,0,-1;0,1,0];
y = [0;1;0];
R*y
quatrotate(rotm2quat(R),[0,1,0])
The results are (in the same order):
(0; 0; 1)
(0, 0, -1)
Why is the result not the same?
I can force it to give the same result if I do
quatrotate(quatinv(rotm2quat(R)),y)
which yields
(0, 0, 1)
Thanks for the help!

Respuesta aceptada

Jan
Jan el 20 de Nov. de 2016
Editada: Jan el 21 de Nov. de 2016
See https://www.mathworks.com/matlabcentral/answers/155400-why-does-quatrotate-produce-negative-rotations : It is the difference between rotating the coordinates or the reference frame.
  4 comentarios
Daniel Schneider
Daniel Schneider el 20 de Dic. de 2016
OK Thanks. That was helpful!
So conclusively:
Let R be a rotation matrix rotating a vector in a fixed frame.
q = rotm2quat( R ).
quatrotate(q,v) will rotate the frame relative to a "fixed" vector v (equivalent to q^-1vq). In order to achieve
r = Rv
either do
qvq^-1
or
quatrotate(quatinv(q),v)
This is not (yet) documented in the MATLAB documentation (at least as we know).
James Tursa
James Tursa el 21 de Feb. de 2017
Jan: "Corresponding discussions tend to end in flamewars."
My experience also ...

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Coordinate Transformations 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!

Translated by