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

3 vues (au cours des 30 derniers jours)
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!

Réponse acceptée

Jan
Jan le 20 Nov 2016
Modifié(e) : Jan le 21 Nov 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 commentaires
Daniel Schneider
Daniel Schneider le 20 Déc 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 le 21 Fév 2017
Jan: "Corresponding discussions tend to end in flamewars."
My experience also ...

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Coordinate Transformations dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by