# Rotazioni spaziali con i quaternioni

I quaternioni forniscono una notazione matematica conveniente per la rappresentazione di orientamenti e rotazioni di oggetti in tre dimensioni. In confronto agli angoli di Eulero presentano funzioni più semplici da comporre ed evitano il problema del blocco cardanico. Confrontati con le matrici di rotazione essi sono più stabili numericamente e forse più efficienti. Quando vengono usati per rappresentare le rotazioni, i quaternioni vengono anche chiamati versori o quaternioni di rotazione, quando invece vengono usati per rappresentare le direzioni sono chiamati quaternioni di orientamento.

## Utilizzare i quaternioni per le rotazioni

Qualsiasi rotazione in tre dimensioni può essere rappresentata come una combinazione di un asse ed un angolo di rotazione. I quaternioni rappresentano un modo semplice per codificare questa rappresentazione asse-angolo in quattro numeri e applicare la rotazione corrispondente ad un vettore di posizione che rappresenta un punto relativamente all'origine in R$^3$. I quaternioni precedono l'uso dei vettori in matematica, quindi alcune notazioni necessarie continuano ad essere utilizzate nel contesto di vettori. La notazione vettoriale $i$, $j$, $k$ è un residuo di questo tempo, in cui un vettore come $(2,3,4)$ o $(a_{x},a_{y},a_{z})$ può essere riscritta come $2i+3j+4k$ o $a_{x}i+a_{y}j+a_{z}k$. Usando questa notazione per la formula di Eulero, una rotazione in quaternioni può essere rappresentata utilizzando la formula:
    $\mathbf {q} =e^{{\tfrac {\theta }{2}}{(a_{x}i+a_{y}j+a_{z}k)}}=\cos {\tfrac {\theta }{2}}+(a_{x}i+a_{y}j+a_{z}k)\sin {\tfrac {\theta }{2}},$
dove $\theta$ è l'angolo di rotazione ed il vettore $(a_{x},a_{y},a_{z})$ è un versore che rappresenta l'asse di rotazione. Il fattore 1/2 consente di rappresentare le rotazioni sia in senso orario che antiorario. Per applicare le rotazioni a un punto $\mathbf {p}$ rappresentato dal vettore posizione $\mathbf {p} =(p_{x},p_{y},p_{z})$, si calcola il prodotto di Hamilton:
    $p_{x}'i+p_{y}'j+p_{z}'k=\mathbf {q} (p_{x}i+p_{y}j+p_{z}k)\mathbf {q} ^{*},$
dove $(p_{x}',p_{y}',p_{z}')$ è il nuovo vettore posizione del punto dopo la rotazione, e $\mathbf {q} ^{*}$ è il coniugato di $\mathbf {q}$:
    $\mathbf {q} ^{*}=e^{-{\tfrac {\theta }{2}}{(a_{x}i+a_{y}j+a_{z}k)}}=\cos {\tfrac {\theta }{2}}-(a_{x}i+a_{y}j+a_{z}k)\sin {\tfrac {\theta }{2}}.$
Due quaternioni rappresentanti due rotazioni possono essere combinati in un unico quaternione equivalente mediante la relazione:
    $\mathbf {q} '=\mathbf {q} _{2}\mathbf {q} _{1},$
dove $\mathbf {q} '$ corrisponde alla rotazione $\mathbf {q} _{1}$ seguita dalla rotazione $\mathbf {q} _{2}$ (si noti che la moltiplicazione tra quaternioni non è commutativa). Pertanto, un numero arbitrario di rotazioni può essere composto ricorsivamente e quindi applicato come una singola rotazione.
Semplificando le moltiplicazioni fra quaternioni $\mathbf {q} \mathbf {p} \mathbf {q} ^{*}$, esse possono essere riscritte come una matrice di rotazione in una rappresentazione asse-angolo di rotazione:
    ${\begin{pmatrix}a_{x}^{2}\left(1-\cos \theta \right)+\cos \theta &a_{x}a_{y}\left(1-\cos \theta \right)-a_{z}\sin \theta &a_{x}a_{z}\left(1-\cos \theta \right)+a_{y}\sin \theta \\a_{y}a_{x}\left(1-\cos \theta \right)+a_{z}\sin \theta &a_{y}^{2}\left(1-\cos \theta \right)+\cos \theta &a_{y}a_{z}\left(1-\cos \theta \right)-a_{x}\sin \theta \\a_{z}a_{x}\left(1-\cos \theta \right)-a_{y}\sin \theta &a_{z}a_{y}\left(1-\cos \theta \right)+a_{x}\sin \theta &a_{z}^{2}\left(1-\cos \theta \right)+\cos \theta \end{pmatrix}}.$
Nonostante si debba prestare attenzione ai casi degeneri (quando il quaternione diventa il quaternione identità o il seno di ${\tfrac {\theta }{2}}$ diventa zero), l'asse e l'angolo possono essere ricavati, a partire dal quaternione di rotazione $\mathbf {q} =q_{r}+q_{i}i+q_{j}j+q_{k}k,$ nel modo seguente:
    ${\begin{aligned}\theta &=2\arccos q_{r},\\(a_{x},a_{y},a_{z})&={\frac {1}{\sin {\tfrac {\theta }{2}}}}(q_{i},q_{j},q_{k}).\end{aligned}}$
Si osservi che l'asse di rotazione deve passare per l'origine, altrimenti deve essere traslato in modo che passi per origine prima di applicare la rotazione e poi traslato di nuovo nella sua posizione originale.

## Operazioni di rotazione con i quaternioni

Una formale spiegazione delle proprietà usate in questa sezione è data da Altmann.

### L'ipersfera delle rotazioni
#### Visualizzare lo spazio delle rotazioni

I quaternioni unitari rappresentano lo spazio matematico delle rotazioni in tre dimensioni in modo molto chiaro e semplice. La corrispondenza tra rotazioni e quaternioni può essere compresa visualizzando lo spazio delle rotazioni stesso.
Qualsiasi rotazione in tre dimensioni può essere descritta da una rotazione di un certo angolo rispetto ad alcuni assi. Consideriamo il caso particolare in cui l'asse di rotazione passa per l'origine e giace nel piano $xy.$ Possiamo quindi specificare l'asse di una di queste rotazioni scegliendo un punto su una circonferenza, e possiamo usare il raggio della circonferenza per specificare l'angolo di rotazione. Alternativamente, una rotazione il cui asse di rotazione passi per l'origine e si trovi nel piano $xy$ può essere descritta come un punto su una sfera di raggio fissato in tre dimensioni. Iniziando dal polo nord di una sfera nello spazio tridimensionale, si può definire in esso la rotazione identità (con angolo di rotazione zero). In questo caso nessun asse di rotazione è definito, e l'angolo di rotazione (zero) è irrilevante. Una rotazione con un angolo di rotazione molto piccolo può essere specificato da una sezione piana della sfera parallela al piano $xy$ e molto vicino al polo nord. Il raggio della circonferenza definita da questa sezione sarà molto piccolo, corrispondente al piccolo angolo di rotazione. Come gli angoli di rotazione diventano più grandi, la sezione si muove nella direzione negativa dell'asse $z$ e i raggi delle circonferenze diventano più grandi fino a quando viene raggiunto l'equatore della sfera, che corrisponde a un angolo di rotazione di 180 gradi. Proseguendo verso sud, i raggi delle circonferenze diventano più piccoli (corrispondentemente al valore assoluto dell'angolo di rotazione considerato come un numero negativo). Non appena il polo sud viene raggiunto, si ha nuovamente la rotazione identità.
Si noti che un certo numero di caratteristiche di tali rotazioni e le loro rappresentazioni viene mantenuto da questa visualizzazione. Lo spazio delle rotazioni è continuo, ogni rotazione ha un intorno di rotazioni che sono quasi le stesse, e questo intorno diventa "piatto" (vale a dire che può essere rappresentato da uno spazio euclideo tridimensionale di punti) come l'insieme si restringe. Inoltre, ogni rotazione è in realtà rappresentata da due punti antipodali sulla sfera, che sono agli estremi opposti di una linea attraverso il centro della sfera. Questo riflette il fatto che ogni rotazione può essere rappresentata come una rotazione su alcuni assi, o, equivalentemente, come una rotazione negativa su un asse che punta nella direzione opposta (è un rivestimento doppio di gruppi). La "latitudine" di un cerchio che rappresenta un particolare angolo di rotazione sarà metà dell'angolo di rotazione, dato che il punto viene spostato dal nord al polo sud, la latitudine varia da zero a 180 gradi, mentre l'angolo di rotazione va da 0 a 360 gradi. La "longitudine" di un punto rappresenta quindi un determinato asse di rotazione. Si noti tuttavia che questo insieme di rotazioni non è chiuso rispetto all'operazione di composizione. La composizione di due rotazioni successive con gli assi nel piano $xy$ non corrisponderanno necessariamente a una rotazione il cui asse giace nel piano $xy,$ e quindi non può essere rappresentata come un punto sulla sfera. Quindi questo non è il caso generale di una rotazione nello spazio tridimensionale, il cui insieme delle rotazioni forma un insieme chiuso rispetto alla composizione.
Questa visualizzazione può essere estesa a una rotazione generale in uno spazio tridimensionale, aggiungendo una dimensione al caso visto sopra (le circonferenze diventano sfere): la rotazione identità rimane un punto, un piccolo angolo di rotazione stavolta non corrisponde a un punto su una circonferenza molto piccola ma un punto su una sfera molto piccola. All'aumentare dell'angolo di rotazione il raggio della sfera cresce, fino a quando l'angolo di rotazione raggiunge i 180 gradi, a questo punto la sfera comincia a restringersi, diventando un punto non appena l'angolo si avvicina a 360 gradi (o zero gradi rispetto alla direzione negativa). Questo insieme ottenuto dall'espansione e dalla contrazione di sfere rappresenta una ipersfera in uno spazio a quattro dimensioni (anche detta 3-sfera). Proprio come l'esempio più semplice di cui sopra, ogni rotazione rappresentata come un punto sulla ipersfera è associata al suo punto antipodale su tale ipersfera. La "latitudine" sulla ipersfera sarà la metà del corrispondente angolo di rotazione, e l'intorno di qualsiasi punto, restringendosi, diventa più "piatto" (vale a dire che può essere rappresentato da uno spazio euclideo tridimensionale di punti). Questo comportamento si sposa con l'insieme dei quaternioni unitari: un quaternione generale rappresenta un punto in uno spazio a quattro dimensioni, ma la condizione di avere norma unitaria permette di associarlo a un punto dello spazio a tre dimensioni equivalente alla superficie di una ipersfera di raggio unitario. La parte vettoriale di un quaternione unitario rappresenta il raggio della 2-sfera corrispondente all'asse di rotazione, e la sua norma è il seno di metà dell'angolo di rotazione. Ogni rotazione è rappresentata da due quaternioni unitari di segno opposto, e, come nell'insieme delle rotazioni in tre dimensioni, il prodotto di due quaternioni unitari produrrà un quaternione unitario. Inoltre, lo spazio dei quaternioni unitari è "piatto" in ogni intorno infinitesimale di un quaternione unitario.

#### Parametrizzazione dello spazio delle rotazioni

La superficie di una sfera può essere parametrizzata con due coordinate, come ad esempio latitudine e longitudine. Purtroppo una parametrizzazione che usa latitudine e longitudine presenta una degenerazione ai poli, cioè ai poli la longitudine perde di significato. Una rappresentazione di questo tipo non è ottimale in quanto i poli vengono trattati come punti speciali il che non è corretto in quanto non sono intrinsecamente differenti da tutti gli altri punti della sfera. Si può dimostrare che nessuna parametrizzazione che usi due sole coordinate può evitare tale degenerazione. Per aggirare il problema si deve considerare la superficie della sfera immersa in uno spazio tridimensionale e parametrizzarla usando tre coordinate cartesiane $(w,x,y),$ ponendo il polo nord a $(w,x,y)=(1,0,0),$ il polo sud a $(w,x,y)=(-1,0,0)$ e l'equatore a $w=0,x^{2}+y^{2}=1.$ I punti sulla sfera soddisfano il vincolo $w^{2}+x^{2}+y^{2}=1,$ in modo da mantenere comunque due gradi di libertà tra le coordinate. Un punto $(w,x,y)$ sulla sfera rappresenta una rotazione nello spazio ordinario attorno all'asse orizzontale data dal vettore $(0,x,y)$ di un angolo $\alpha =2\arccos w=2\arcsin {\sqrt {x^{2}+y^{2}}}$.
Allo stesso modo l'ipersfera spazio delle rotazioni tridimensionali può essere parametrizzata da tre angoli (ad esempio gli angoli di Eulero), ma anche in questo caso si hanno delle degenerazioni in determinati punti, (si veda il problema del blocco cardanico). Anche qui si può aggirare il problema usando quattro coordinate $(w,x,y,z),$ con $w^{2}+x^{2}+y^{2}+z^{2}=1.$ Il punto $(w,x,y,z)$ rappresenta una rotazione attorno all'asse data dal vettore $(x,y,z)$ di angolo $\alpha =2\arccos w=2\arcsin {\sqrt {x^{2}+y^{2}+z^{2}}}.$

### Dalle rotazioni ai quaternioni
#### I quaternioni

I numeri complessi possono essere definiti introducendo il simbolo astratto i che soddisfi le usuali regole dell'algebra e inoltre soddisfi la regola i$^2$ = −1. Questo è sufficiente a riprodurre tutte le regole dell'aritmetica dei numeri complessi, ad esempio:
    $(a+b\mathbf {i} )(c+d\mathbf {i} )=ac+ad\mathbf {i} +b\mathbf {i} c+b\mathbf {i} d\mathbf {i} =ac+ad\mathbf {i} +bc\mathbf {i} +bd\mathbf {i} ^{2}=(ac-bd)+(bc+ad)\mathbf {i} .$
Allo stesso modo i quaternioni possono essere definiti introducendo i simboli astratti i, j, k che soddisfino le regole i$^2$ = j$^2$ = k$^2$ = ijk = −1 più le usuali regole algebriche ad eccezione della proprietà commutativa del prodotto (un tipico esempio di moltiplicazione non commutativa è la moltiplicazione di matrici). Da questo segue che si può mostrare:
    $(a+b\mathbf {i} +c\mathbf {j} +d\mathbf {k} )(e+f\mathbf {i} +g\mathbf {j} +h\mathbf {k} )=(ae-bf-cg-dh)+(af+be+ch-dg)\mathbf {i} +(ag-bh+ce+df)\mathbf {j} +(ah+bg-cf+de)\mathbf {k} .$
La parte immaginaria $b\mathbf {i} +c\mathbf {j} +d\mathbf {k}$ del quaternione si può associare a un vettore ${\vec {v}}=(b,c,d)$ nello spazio tridimensionale e la parte a si associa a uno scalare $\mathbb {R}$. Quando i quaternioni sono usati in geometria è più conveniente definirli come somma scalare+vettore:
    $a+b\mathbf {i} +c\mathbf {j} +d\mathbf {k} =a+{\vec {v}}.$
La somma scalare+vettore può essere vista come la somma di due quaternioni, uno con la parte vettoriale uguale a ${\vec {0}}$ e uno con quella scalare uguale a $0$
    $a+{\vec {v}}=(a+{\vec {0}})+(0+{\vec {v}}).$
Per i quaternioni si può esprimere il prodotto ricorrendo al prodotto vettoriale e quello scalare degli usuali vettori. In virtù delle regole i$^2$ = j$^2$ = k$^2$ = ijk = −1 si ha:
    ${\vec {v}}{\vec {w}}={\vec {v}}\times {\vec {w}}-{\vec {v}}\cdot {\vec {w}},$
dove:
* ${\vec {v}}{\vec {w}}$ è il quaternione prodotto;
* ${\vec {v}}\times {\vec {w}}$ è il vettore risultato del prodotto vettoriale;
* ${\vec {v}}\cdot {\vec {w}}$ è lo scalare risultato del prodotto scalare.
Nei quaternioni il prodotto non è commutativo, a causa del prodotto vettoriale. Da queste regole segue che:
    $(s+{\vec {v}})(t+{\vec {w}})=(st-{\vec {v}}\cdot {\vec {w}})+(s{\vec {w}}+t{\vec {v}}+{\vec {v}}\times {\vec {w}}).$