2009-12-03 22 views
19

Ho eseguito operazioni 2D e 3D, inclusa la grafica, per molti anni e non ho mai usato i quaternioni, quindi non ne ho un'idea. So che possono essere usati per determinate operazioni che sono difficili negli angoli di Eulero e anche che possono essere usati per trovare la rotazione richiesta per adattarsi al meglio ad un insieme di coordinate (X1, X2 ... XN, X = (xyz)) su un altro (X1 ', X2' ... XN ').Quando devo usare i quaternioni?

Ci sono luoghi in cui i quaternioni sono essenziali? E ci sono luoghi in cui rendono le soluzioni più eleganti o più efficienti?

+0

da Wikipedia: Rappresentazioni di rotazioni di quaternioni sono più compatti e più rapido da calcolare che rappresentazioni di matrici. – dnagirl

+0

Per coloro che cercano anche un collegamento per fare clic: http://en.wikipedia.org/wiki/Quaternion –

risposta

17

Hanno un minore ingombro di memoria rispetto alle matrici di rotazione e sono più efficienti di entrambe le rappresentazioni di matrice e angolo/asse.

anche:

  • È estremamente facile da interpolare tra due quaternioni, che è utile per i movimenti regolari della macchina fotografica ecc
  • Unità normalizzazione dei quaternioni floating point soffre meno difetti di arrotondamento rispetto rappresentazioni matriciali.
1

Il vantaggio dei quaternioni oltre matrici non solo il calcolo veloce, ma soprattutto perché una rappresentazione matriciale di rotazioni successive intorno angoli arbitrari eventualmente cedere a errori di arrotondamento a virgola mobile temibili e non rappresentano propri, rotazioni affine . Il "ripristino" di una matrice di rotazione è computazionalmente più costoso della normalizzazione di un quaternione. Pertanto, i quaternioni dovrebbero essere scelti su matrici di rotazione pure.

+0

I quaternioni in realtà richiedono un po 'più di calcolo, ei quationi successivi accumulano errori di arrotondamento proprio come le matrici. Il loro vantaggio non sta portando in giro la ridondanza trovata nelle matrici ortogonali. – DarenW

+1

@DarenW Mentre le moltiplicazioni di successo dei quaternioni ottengono errori, la differenza è che la loro rinormalizzazione richiede un prodotto dot e una radice sqaure. L'ortonormalizzazione di una matrice è un compito molto più complesso. –

3

Con i quaternioni si gestisce anche il problema del blocco del giunto cardanico. E sono più facili da utilizzare quando si desidera eseguire rotazioni arbitrarie.

+2

Il blocco del giunto cardanico è solo una proprietà degli angoli di Eulero. Indipendente dalla rappresentazione della rotazione. – Calmarius

3

quaternioni hanno molti vantaggi rispetto angoli di Eulero e sono spesso preferibile per rotazioni 3D:

  • facile (e ben definita) interpolazione tra quaternioni (o: orientamenti): il movimento risultante ha velocità angolare costante attorno ad un asse singolo, che è spesso esteticamente più piacevole. Questo processo è chiamato "slerp" e critico per l'animazione/fusione di rotazione. Inoltre, l'interpolazione del quaternio non soffre di serrature del giunto cardanico.
  • Sono facili da rinormalizzare.

Svantaggi:

  • Lo svantaggio principale è che essi richiedono un po 'più matematica e sono meno intuitivo angoli di Eulero cardaniche /.
  • Rispetto alle matrici di trasformazione affine, i quaternioni contengono solo una rotazione e nessuna conversione e ridimensionamento.
0

Rispetto agli angoli di Eulero sono più semplici da comporre ed evitare il problema del blocco del giunto cardanico.

Rispetto alle matrici di rotazione sono più numericamente stabili e la rappresentazione (4 numeri) è più compatta.

2

favore di quaternioni

  1. rapida moltiplicazione
  2. veloce da/per conversione matrice
  3. Evitare supplementare (da calcolo) rumore (scalatura, taglio), e rappresentano rotazione pura
  4. semplice interpolazione rotazione , in caso personalizzato per l'animazione in tempo reale può essere utilizzata l'interpolazione lineare.
  5. Alcune operazioni difficili disponibili, l'integrazione rapida rotazione, torsione a battente decomposizioni

Cons.

  1. La trasformazione del vettore non è così veloce come con la matrice 3x3.
  2. Contiene 4 scalari, ma rappresentazione rotazione compatto può usare solo 3.