Domanda

Sono un fisico e ho imparato un po 'di programmazione e ho incontrato molte persone usando quaternioni per rotazioni invece di scrivere cose in forma di matrice/vettoriale.

In fisica, ci sono ottime ragioni per cui non usiamo quaternioni (nonostante la bizzarra storia che occasionalmente si racconta su Hamilton/Gibbs/ecc.). La fisica richiede che le nostre descrizioni abbiano un buon comportamento analitico (questo ha un significato definito con precisione, ma in alcuni modi piuttosto tecnici che vanno ben oltre ciò che viene insegnato nelle normali classi introducenti, quindi non entrerò nei dettagli). Si scopre che i quaternioni non hanno questo bel comportamento, e quindi non sono utili, e i vettori/matrici lo fanno, quindi li usiamo.

Tuttavia, limitati a rotazioni rigide e descrizioni che non utilizzano strutture analitiche, le rotazioni 3D possono essere descritte in modo equivalente in entrambi i modi (o alcuni altri modi).

Generalmente, vogliamo solo una mappatura di un punto x = (x, y, z) a un nuovo punto x '= (x', y ', z') soggetto al vincolo che x2 = X '2. E ci sono molte cose che lo fanno.

Il modo ingenuo è semplicemente disegnare i triangoli questo definisce e usare la trigonometria o usare l'isomorfismo tra un punto (x, y, z) e un vettore (x, y, z) e la funzione f (x) = x 'e una matrice mx = x 'o usando quaternions o proiettando componenti del vecchio vettore lungo quello nuovo usando qualche altro metodo (x, y, z)T. (a, b, c) (x ', y', z '), ecc.

Da un punto di vista della matematica, queste descrizioni sono tutte equivalenti in questa impostazione (come teorema). Tutti hanno lo stesso numero di gradi di libertà, lo stesso numero di vincoli, ecc.

Allora perché i quaternioni sembrano preferiti dai vettori?

Le solite ragioni che vedo non sono un blocco gimbal o problemi numerici.

L'argomento di No Gimbal Lock sembra strano, dal momento che questo è solo un problema degli angoli di Eulero. È anche solo un problema di coordinate (proprio come la singolarità a r = 0 in coordinate polari (il rango di LACOBIE Giacobino)), il che significa che è solo un problema locale e può essere risolto cambiando coordinate, ruotando fuori dalla degenerazione, o utilizzando due sistemi di coordinate sovrapposti.

Sono meno sicuro delle questioni numeriche, dal momento che non so in dettaglio come sarebbero implementate entrambe (e qualsiasi alternativa). Ho letto che la ri-normalizzazione di un quaternione è più facile che farlo per una matrice di rotazione, ma questo è vero solo per una matrice generale; Una rotazione ha ulteriori vincoli che banalizzano questo (che sono integrati nella definizione di quaternioni) (in effetti, questo deve essere vero poiché hanno lo stesso numero di gradi di libertà).

Allora, qual è il motivo per l'uso di quaternioni rispetto ai vettori o ad altre alternative?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top