Quaternion: Difference between revisions

 
(21 intermediate revisions by the same user not shown)
Line 1: Line 1:
Quaternions are a number system which can be used to represent [[rotations]] in 3D space.   
Quaternions are a number system which can be used to represent [[rotations]] in 3D space.
An extension called [[Dual quaternion]], involving quaternions of dual numbers or two quaternions of real numbers, are able to represent both rotations and translations in 3D space.
 
Double quaternion allows representing 4D rotations using two quaternions.   
[[Dual quaternion]] allows represent both rotations and translations in 3D space
The algebra of quaternions, double quaternions, and dual quaternions is called Clifford algebras.


==Background==
==Background==
Line 8: Line 11:
The conjugate is <math>\bar{q} = (q_0, -\mathbf{q})</math>.
The conjugate is <math>\bar{q} = (q_0, -\mathbf{q})</math>.
===Multiplication===
===Multiplication===
Multiplication is <math>\mathbf{q} * \mathbf{p} = (q_0 p_0 - \mathbf{q} \cdot \mathbf{p}, q_0 \mathbf{p} + p_0 \mathbf{q} + \mathbf{q} \times \mathbf{p})</math>.   
Multiplication is <math>q*p = (q_0 p_0 - \mathbf{q} \cdot \mathbf{p}, q_0 \mathbf{p} + p_0 \mathbf{q} + \mathbf{q} \times \mathbf{p})</math>.   


Similar to imaginary numbers, <math>\mathbf{i}^2=\mathbf{j}^2=\mathbf{k}^2=\mathbf{i}\mathbf{j}\mathbf{k}=-1</math>.   
Similar to imaginary numbers, <math>\mathbf{i}^2=\mathbf{j}^2=\mathbf{k}^2=\mathbf{i}\mathbf{j}\mathbf{k}=-1</math>.   
Line 25: Line 28:
<math>R(q*p) = R(q) \cdot R(p)</math>
<math>R(q*p) = R(q) \cdot R(p)</math>


The quaternion <math>q=(\cos(\theta/2), \hat{n}_1 \sin(\theta/2), \hat{n}_2 \sin(\theta/2), \hat{n}_3 \sin(\theta/2))</math> is equivalent to the rotation around axis <math>\hat{n}</math> by angle <math>\theta</math>.
The quaternion <math>q=(\cos(\frac{\theta}{2}), \hat{n}_1 \sin(\frac{\theta}{2}), \hat{n}_2 \sin(\frac{\theta}{2}), \hat{n}_3 \sin(\frac{\theta}{2}))=\cos(\frac{\theta}{2}) + \sin(\frac{\theta}{2}) \mathbf{\hat{n}}</math> is equivalent to the rotation around axis <math>\hat{n}</math> by angle <math>\theta</math>.


===Slurp===
===Slurp===
Line 107: Line 110:
\mathbf{S}_{\text{chord}} = \sum_{k=1}^{N}\left( \min( \Vert (q*p_k) - r_k \Vert, \Vert (q*p_k)+r_k \Vert ) \right)^2
\mathbf{S}_{\text{chord}} = \sum_{k=1}^{N}\left( \min( \Vert (q*p_k) - r_k \Vert, \Vert (q*p_k)+r_k \Vert ) \right)^2
</math>
</math>
==Double Quaternions==
Note that double quaternions are different from dual quaternions. 
Double quaternions are written as <math>q_1 + \epsilon q_2</math> with <math>\epsilon^2 = 1</math> and applied to a quaternion <math>p</math> representing a point as <math>q_1 p \bar{q}_2</math>. 
Dual quaternions are written as <math>q_1 + \varepsilon q_2</math> with <math>\varepsilon^2 = 0</math> and applied to a dual quaternion <math>p</math> representing a point as <math>(q_1 + \varepsilon q_2) p (\bar{q}_1 + \varepsilon \bar{q}_2)</math>
===Cayley Factorization===
See [Federico Thomas].
Any 4D rotation matrix can be decomposed into a right and a left isoclinic rotation matrix: 
<math>R = R^L R^R = R^R R^L</math> 
<math>R^R</math> and <math>R^L</math> can be viewed as a matrix representation of single double quaternion <math>(q_1, q_2)</math>. 
For a double quaternion, the 4D rotation written is <math>x' = q_1 x q_2</math>.
The product of left and right isoclinic rotation matrices commute. 
Furthermore, the product of two left isoclinic rotation matrices is a left isoclinic rotation matrix. Same with right. 
Thus, <math>R_1 R_2 = (R_1^L R_1^R) (R_2^L R_2^R) = (R_1^L R_2^L) (R_1^R R_2^R) = R</math>. 
This shows that the composition of two double quaternions will be a double quaternion.
===Approximating 3D Translations using Double quaternions===
See Ge ''et. al.''<ref name="ge1998double"></ref>
<!-- {{hidden | Algebraic Verification |
Suppose our point is <math>\mathbf{x} \in \mathbb{R}^3</math> and our translation has direction <math>\mathbf{d} \in \mathbb{R}^3</math> with distance <math>d</math>.
Let <math>q=1+\frac{d}{2}\mathbf{n}</math> and <math>q^* = 1-\frac{d}{2}\mathbf{n}</math>. 
<math>
\begin{aligned}
q(1+\mathbf{x})(q^*)^* &= (1+\frac{d}{2}\mathbf{n})(1+\mathbf{x})(1+\frac{d}{2}\mathbf{n})\\
&= [(1 - \frac{d}{2} \mathbf{n} \cdot \mathbf{x}) + (\frac{d}{2}\mathbf{n} + \mathbf{x} + \frac{d}{2}\mathbf{n} \times \mathbf{x})](1+\frac{d}{2}\mathbf{n})\\
&= \left(1 - \frac{d}{2} \mathbf{n} \cdot \mathbf{x} - ((\frac{d}{2}\mathbf{n} + \mathbf{x} + \frac{d}{2}\mathbf{n} \times \mathbf{x})) \cdot \frac{d}{2} \mathbf{n}\right) + \left(\frac{d}{2}\mathbf{n} + \mathbf{x} + \frac{d}{2}\mathbf{n} \times \mathbf{x} +\frac{d}{2}\mathbf{n} + (\frac{d}{2}\mathbf{n} + \mathbf{x} + \frac{d}{2}\mathbf{n} \times \mathbf{x})\times(\frac{d}{2}\mathbf{n})\right)\\
&= c + \left(d\mathbf{n} + \mathbf{x} + \frac{d}{2}\mathbf{n} \times \mathbf{x} + (\frac{d}{2}\mathbf{n}\times(\frac{d}{2}\mathbf{n}) + \mathbf{x}\times(\frac{d}{2}\mathbf{n}) + (\frac{d}{2}\mathbf{n} \times \mathbf{x})\times(\frac{d}{2}\mathbf{n}))\right)\\
&= c + \left(d\mathbf{n} + \mathbf{x} + \frac{d}{2}\mathbf{n} \times \mathbf{x} + (0 + \mathbf{x}\times(\frac{d}{2}\mathbf{n}) + 0)\right)\\
&= c + \left(d\mathbf{n} + \mathbf{x} + \frac{d}{2}\mathbf{n} \times \mathbf{x} - \frac{d}{2}\mathbf{n}\times \mathbf{x}\right)\\
&= c + \left(\mathbf{x} + d\mathbf{n}\right)\\
\end{aligned}
</math>
}} -->
==Dual Quaternions==
{{main | Dual quaternion}}
Dual quaternions are used to represent 3D rotations and translations together.


==Combined Point + Frame Alignment Problem==
==Combined Point + Frame Alignment Problem==
Line 121: Line 168:
==Resources==
==Resources==
* [https://arxiv.org/pdf/1804.03528.pdf The Quaternion-Based Spatial Coordinate and Orientation Frame Alignment Problems by Andrew Hanson] [https://journals.iucr.org/a/issues/2020/04/00/ib5072/ib5072.pdf Edited Paper]
* [https://arxiv.org/pdf/1804.03528.pdf The Quaternion-Based Spatial Coordinate and Orientation Frame Alignment Problems by Andrew Hanson] [https://journals.iucr.org/a/issues/2020/04/00/ib5072/ib5072.pdf Edited Paper]
* [https://www.researchgate.net/publication/265550132_Approaching_Dual_Quaternions_From_Matrix_Algebra Approaching Dual Quaternions From Matrix Algebra by Federico Thomas]
* Double Quaternions for Motion Interpolation by Q.J. Ge, Amitabh Varshney, Jai P. Menon, Chu-Fei Chang
* [https://probablydance.com/2017/08/05/intuitive-quaternions/ Less Weird Quaternions by Malte Skarupke]
** Derives rotations as a sequence of reflection and quaternion algebra from wedge products.
** Presents quaternions as a sequence of (90 deg rotation + scaling) operations in 3D space.
==References==
{{reflist|refs=
<ref name="ge1998double">Q.J. Ge, Amitabh Varshney, Jai P. Menon, Chu-Fei Chang (1998) Double Quaternions for Motion Interpolation</ref>
}}