Quaternion: Difference between revisions

 
(13 intermediate revisions by the same user not shown)
Line 113: Line 113:
==Double Quaternions==
==Double Quaternions==
Note that double quaternions are different from dual 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>.   
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>.
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===
===Cayley Factorization===
Line 121: Line 121:
Any 4D rotation matrix can be decomposed into a right and a left isoclinic rotation matrix:   
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^L R^R = R^R R^L</math>   
<math>R^R</math> and <math>R^L</math> can be seen as a single double quaternion.
<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.   
The product of left and right isoclinic rotation matrices commute.   
Line 127: Line 128:
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>.   
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.
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==
==Dual Quaternions==
{{main | Dual quaternion}}
{{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 144: 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
* [https://www.researchgate.net/publication/265550132_Approaching_Dual_Quaternions_From_Matrix_Algebra Approaching Dual Quaternions From Matrix Algebra by Federico Thomas]
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>
}}