Quaternioni

Son: Well, Papa, can you multiply triplets?
Father: No [sadly shaking his head], I can only add and subtract them. (William Rowan Hamilton, Conversation with his sons (1843))

I quaternioni sono un tentativo di estensione dei numeri complessi a una dimensione maggiore. Tale formulazione è stata proposta per la prima volta da Sir William Rowan Hamilton. Sono rappresentati da un vettore di $\mathbb{R}^{4}$ nella forma

\begin{displaymath}
\mathbf{q} = \begin{bmatrix}
q_w \\ q_x \\ q_y \\ q_z
\end{bmatrix} = q_w + q_x i + q_y j + q_z k
\end{displaymath} (A.18)

a volte indicato anche $\mathbf{q} = \begin{pmatrix}q_0 & q_1 & q_2 & q_3 \end{pmatrix} = \begin{pmatrix}q_1 & q_2 & q_3 & q_4 \end{pmatrix}$. I quaternioni hanno differenti proprietà rispetto agli ordinari vettori quadridimensionali (come per esempio lo sono anche le coordinate omogenee). Il quaternione (A.18) può essere visto come composto da una parte vettoriale $\mathbf{v} \in \mathbb{R}^{3}$ e da una parte scalare $q_w$:
\begin{displaymath}
\mathbf{q} = \begin{bmatrix}
q_w \\ \mathbf{v}
\end{bmatrix}
\end{displaymath} (A.19)

$q_w$ è definita parte scalare (o componente reale) mentre $q_x,q_y,q_z$ sono le componenti vettoriali (o immaginarie). Un quaternione con solo la parte scalare è chiamato reale mentre un quaternione con solo la parte vettoriale puro.

Il prodotto tra quaternioni per esempio non è commutativo (ma è comunque associativo).

È possibile creare un vettore aumentato (augmented vector) di un vettore $\mathbf{r} \in \mathbb{R}^{3}$ nello spazio dei quaternioni come:

\begin{displaymath}
\bar{\mathbf{r}} = \begin{bmatrix}
0  \mathbf{r}
\end{bmatrix}
\end{displaymath} (A.20)

Il complesso coniugato di un quaternione $\mathbf{q}^{*}$ è

\begin{displaymath}
\mathbf{q}^{*} = \begin{bmatrix}
q_w \\ - \mathbf{v}
\end{bmatrix}
\end{displaymath} (A.21)

La norma $\vert \mathbf{q} \vert$ è

\begin{displaymath}
\vert \mathbf{q} \vert = \sqrt{ \mathbf{q}^{*} \mathbf{q} } = \sqrt{ q_w^{2} + \mathbf{v}^{2} }
\end{displaymath} (A.22)

Un quaternione $\vert\mathbf{q}\vert=1$ è chiamato quaternione unità. L'inverso di un quaternione unità è il suo complesso coniugato $\mathbf{q}^{-1} = \mathbf{q}^{*}$.

La proprietà più importante di un quaternione è che esso rappresenta una rotazione in $\mathbb{R}^3$.

Una rotazione $\mathbf{R} = e^{ \vartheta \hat{\mathbf{u}} }$, espressa in rappresentazione asse/angolo, può essere scritta sotto forma di quaternione

\begin{displaymath}
\mathbf{q} = \exp(\vartheta \hat{\mathbf{u}}) =
\begin{b...
... \mathbf{u} } \sin \left( \vartheta/2 \right)
\end{bmatrix}
\end{displaymath} (A.23)

con $\vartheta$ un angolo di rotazione e $\hat{ \mathbf{u} }$ un versore tridimensionale. In questo caso è un quaternione unità e rappresenta la rotazione di un angolo $\vartheta$ intorno all'asse $\hat{ \mathbf{u} }$. Si noti che una rotazione di $-\vartheta$ rispetto a $-\hat{ \mathbf{u} }$ fornisce lo stesso quaternione che la rotazione di $\vartheta$ intorno a $\hat{ \mathbf{u} }$ risolvendo la singolarità della rappresentazione asse/angolo. Allo stesso modo è possibile definire il “logaritmo” di un quaternione:
\begin{displaymath}
\vartheta \hat{\mathbf{u}} = \log \mathbf{q} = \left\{
...
...v} \neq 0 \\
0 & \mathbf{v} = 0 \\
\end{array} \right.
\end{displaymath} (A.24)

che ritorna la consueta rappresentazione asse-angolo di una rotazione dato un quaternione.

Le rotazioni sono rappresentate da quaternioni di lunghezza unitaria $\mathbf{q}^{\top}\mathbf{q}=1$.

È possibile ruotare un punto usando direttamente i quaternioni $\mathbf{p}' = \mathbf{q} \mathbf{p} \mathbf{q}^{-1}$, o un quaternione unitario può essere convertito in una matrice di rotazione (directional cosine matrix):

\begin{displaymath}
\mathbf{R} = \begin{bmatrix}
q^{2}_w + q^{2}_x - q^{2}_y...
...x & q^{2}_w - q^{2}_x - q^{2}_y + q^{2}_z \\
\end{bmatrix}
\end{displaymath} (A.25)

o in maniera equivalente:
\begin{displaymath}
\mathbf{R} = \begin{bmatrix}
1 - 2(q_y^2 + q_z^2) & 2(q_...
...& 2(q_y q_z + q_w q_x) & 1 - 2(q_x^2 + q_y^2)
\end{bmatrix}
\end{displaymath} (A.26)

in modo da calcolare poi $\mathbf{p}' = \mathbf{R} \mathbf{p}$.

È da notare che $\mathbf{q}$ e $-\mathbf{q}$ rappresentano la medesima matrice di rotazione $\mathbf{R}$.

Viceversa dalla matrice di rotazione è possibile ricavare il quaternione attraverso per esempio

\begin{displaymath}
\begin{array}{rl}
q^{2}_w & = (r_{11} + r_{22} + r_{33} +...
...w) \\
q_z & = (r_{21} - r_{12}) / (4 q_w) \\
\end{array}
\end{displaymath} (A.27)

(operativamente si cerca la componente maggiore e si calcolano gli altri componenti rispetto a quella).

Il prodotto tra due quaternioni rappresenta infine la composizione di rotazioni:

\begin{displaymath}
\mathbf{q} \times \mathbf{t} = \begin{bmatrix}
t_w q_w - ...
...
t_w q_z - t_x q_y + t_y q_x + t_z q_w \\
\end{bmatrix}
\end{displaymath} (A.28)

Paolo medici
2025-03-12