/ / Ruota angoli euler 3d in un sistema di coordinate basato su orientamento Quaternion C ++ - c ++, 3d, rotazione, angoli euler

Ruota angoli euler 3d in un sistema di coordinate basato su orientamento Quaternion C ++ - c ++, 3d, rotazione, angoli di Eulero

Ho un sistema di coordinate di XYZ, dove ruotodagli angoli di Eulero, iniziando con X, poi Y, poi Z. Ho bisogno di convertire questa rotazione, ad esso le rotazioni X Y Z equivalenti, ma relative ad un altro sistema di coordinate, come specificato da un orientamento quaternione.Sfortunatamente, sono bloccato.

Assi di coordinate

risposte:

0 per risposta № 1

Non esiste un modo semplice per farlo poiché gli angoli di Eulero sono solo nella loro versione infinitesimale compatibile con il prodotto delle matrici di rotazione.

Il modo più semplice nelle condizioni date è di trasformare gli angoli esistenti nel quaternione della rotazione, moltiplicare i due quaternioni ed estrarre i nuovi angoli di Eulero dal prodotto.


Un link utile che raccoglie molte, se non tutte, la rotazione dell'asse alle trasformazioni quaternarie e posteriori: http://www.euclideanspace.com/maths/geometry/rotations/conversions/eulerToQuaternion/index.htm


Indicare con a, b, c i semianchi per ilrotazioni attorno agli assi X, Y, Z e con (ca, sa) ecc. le corrispondenti coppie seno-coseno. Quindi la rotazione attorno all'asse X con l'angolo 2a corrisponde al quaternione

ca+sa*i

dove i, j, k sono i quaternioni di base nelle direzioni x, y, z. La rotazione Rz (2c) * Ry (2b) * Rx (2a) corrisponde al quaternione

r=(cc+sc*k)*(cb+sb*j)*(ca+sa*i)

Se q è un altro quaternione, quindi ruotatobase per la rotazione corrispondente a q è qiq ", qiq", qkq ", dove q" è il coniugato di q. L'obiettivo è rappresentare r con le rotazioni degli assi in questa nuova base. Se i nuovi semitoni sono u, v, w, allora si deve risolvere

r=(cw+sw*qkq")*(cv+sv*qjq")*(cu+su*qiq")

per questi semianchi, che semplifica a causa di qq "= 1 = q" q a

q"rq=(cw+sw*k)*(cv+sv*j)*(cu+su*i)

Ora puoi usare nuovamente le formule sul sito web.