Perché le persone usano i quaternioni?


15

Li sto usando come una scatola nera da un po ', sto solo imparando a conoscere la matematica, ma vorrei solo alcune risposte definitive a questa domanda.

Finora l'unico vantaggio che ho riscontrato personalmente è la capacità di SLERP tra due angoli: per ottenere lo stesso effetto con un vettore è necessario un lavoro piuttosto brutto (che collega intrinsecamente 0 e 2PI).


SLERP non è solo interpolazione tra due angoli: può essere fatto facilmente anche con matrice. Può interpolare tra due orientamenti arbitrari che è molto più complesso se fatto con le matrici.
Calmarius,

Risposte:


23

I quaternioni risolvono elegantemente alcuni problemi:

  • Sono compatti come rappresentazioni degli angoli degli assi (4 valori scalari)
  • Sono facilmente convertiti in e da rappresentazioni di matrici
  • L'interpolazione funziona da qualsiasi angolo iniziale a quello finale senza involucro speciale
  • Non esibiscono mai il blocco del gimbal

È possibile aggirare questi problemi con altre rappresentazioni, ma i quaternioni si adattano perfettamente alla loro semplicità algoritmica e alle loro prestazioni.


1
Questo e 'esattamente quello che stavo cercando!
SirYakalot,

@Kai Interpolation works from any start to end angle without special casing, in realtà c'è un caso speciale, quando non si trovano nello stesso emisfero dell'ipersfera, questo è in realtà un caso speciale che devi considerare, dato che ci sono sempre 2 direzioni per interpolare il bersaglio e vuoi scegliere quello giusto
Maik Semder

2
@Kai They never exhibit gimbal lock- non è del tutto vero. Possono, semplicemente moltiplicarsi q(Xaxis, 0) * q(YAxis, 90) * q(Zaxis, 20). È vero, possono essere usati per evitare il blocco del gimbal, ma anche matrici, angoli degli assi e altri. Quindi questa non è una proprietà unica dei quaternioni. In effetti puoi farlo con la maggior parte delle rappresentazioni di rotazione, ma con angoli di eulero. L'unico vero messaggio qui può essere "I fanciulli di Eulero soffrono di blocco del gimbal", ma può essere evitato da molte altre rappresentazioni di rotazione, non solo dai quaternioni.
Maik Semder,

Né le prestazioni di un quaternione sono generalmente migliori in tutti i casi, ad esempio è più veloce ruotare un vettore usando una matrice 3x3 che usare un quaternione. Ecco un articolo interessante a riguardo.
Maik Semder,

3

L'uso SLERP che menzioni è un caso specifico di un attributo più generale di quaternioni: puoi interpolare senza problemi tra diversi valori di rotazione.

Quando si interpolano i valori di rotazione degli angoli di eulero si ottengono movimenti dall'aspetto strano, e non c'è nessun modo logico di interpolare i valori delle rotazioni degli angoli degli assi (beh, a parte due angoli diversi attorno allo stesso asse).


+1. Si può interpolare tra (w1, alpha1) e (w2, alpha2) convertendo queste rappresentazioni degli assi angolari in quat e quindi impiegando SLERP. Ovviamente, si può fare una cosa del genere tramite uno schema / schema spline di Bezier / de Casteljau e usare un "poligono / insieme" di quaternioni chiave in questo modo e realizzare una rotazione complicata. Questa è forse l'unica cosa che i quaternioni fanno in modo più naturale rispetto ad altre rappresentazioni poiché SLERP e multiSLERP o le loro variazioni (NLERP, SQUAD) escono con coppie di assi / angoli di rotazione intermedi che giacciono su un percorso di rotazione geodetico / più breve. Complimenti.
teodron,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.