# Dual quaternions #

Similar to the way that rotations in 3D space can be represented by quaternions of unit length, rigid motions in 3D space can be represented by dual quaternions of unit length.

## Main results #

• Quaternion.dualNumberEquiv: quaternions over dual numbers or dual numbers over quaternions are equivalent constructions.

## References #

The dual quaternions can be equivalently represented as a quaternion with dual coefficients, or as a dual number with quaternion coefficients.

See also Matrix.dualNumberEquiv for a similar result.

Equations
• One or more equations did not get rendered due to their size.
Instances For

Lemmas characterizing Quaternion.dualNumberEquiv.

@[simp]
theorem Quaternion.re_fst_dualNumberEquiv {R : Type u_1} [] (q : ) :
(TrivSqZeroExt.fst (Quaternion.dualNumberEquiv q)).re =
@[simp]
theorem Quaternion.imI_fst_dualNumberEquiv {R : Type u_1} [] (q : ) :
(TrivSqZeroExt.fst (Quaternion.dualNumberEquiv q)).imI = TrivSqZeroExt.fst q.imI
@[simp]
theorem Quaternion.imJ_fst_dualNumberEquiv {R : Type u_1} [] (q : ) :
(TrivSqZeroExt.fst (Quaternion.dualNumberEquiv q)).imJ = TrivSqZeroExt.fst q.imJ
@[simp]
theorem Quaternion.imK_fst_dualNumberEquiv {R : Type u_1} [] (q : ) :
(TrivSqZeroExt.fst (Quaternion.dualNumberEquiv q)).imK = TrivSqZeroExt.fst q.imK
@[simp]
theorem Quaternion.re_snd_dualNumberEquiv {R : Type u_1} [] (q : ) :
(TrivSqZeroExt.snd (Quaternion.dualNumberEquiv q)).re =
@[simp]
theorem Quaternion.imI_snd_dualNumberEquiv {R : Type u_1} [] (q : ) :
(TrivSqZeroExt.snd (Quaternion.dualNumberEquiv q)).imI = TrivSqZeroExt.snd q.imI
@[simp]
theorem Quaternion.imJ_snd_dualNumberEquiv {R : Type u_1} [] (q : ) :
(TrivSqZeroExt.snd (Quaternion.dualNumberEquiv q)).imJ = TrivSqZeroExt.snd q.imJ
@[simp]
theorem Quaternion.imK_snd_dualNumberEquiv {R : Type u_1} [] (q : ) :
(TrivSqZeroExt.snd (Quaternion.dualNumberEquiv q)).imK = TrivSqZeroExt.snd q.imK
@[simp]
theorem Quaternion.fst_re_dualNumberEquiv_symm {R : Type u_1} [] (d : ) :
TrivSqZeroExt.fst (Quaternion.dualNumberEquiv.symm d).re = .re
@[simp]
theorem Quaternion.fst_imI_dualNumberEquiv_symm {R : Type u_1} [] (d : ) :
TrivSqZeroExt.fst (Quaternion.dualNumberEquiv.symm d).imI = .imI
@[simp]
theorem Quaternion.fst_imJ_dualNumberEquiv_symm {R : Type u_1} [] (d : ) :
TrivSqZeroExt.fst (Quaternion.dualNumberEquiv.symm d).imJ = .imJ
@[simp]
theorem Quaternion.fst_imK_dualNumberEquiv_symm {R : Type u_1} [] (d : ) :
TrivSqZeroExt.fst (Quaternion.dualNumberEquiv.symm d).imK = .imK
@[simp]
theorem Quaternion.snd_re_dualNumberEquiv_symm {R : Type u_1} [] (d : ) :
TrivSqZeroExt.snd (Quaternion.dualNumberEquiv.symm d).re = .re
@[simp]
theorem Quaternion.snd_imI_dualNumberEquiv_symm {R : Type u_1} [] (d : ) :
TrivSqZeroExt.snd (Quaternion.dualNumberEquiv.symm d).imI = .imI
@[simp]
theorem Quaternion.snd_imJ_dualNumberEquiv_symm {R : Type u_1} [] (d : ) :
TrivSqZeroExt.snd (Quaternion.dualNumberEquiv.symm d).imJ = .imJ
@[simp]
theorem Quaternion.snd_imK_dualNumberEquiv_symm {R : Type u_1} [] (d : ) :
TrivSqZeroExt.snd (Quaternion.dualNumberEquiv.symm d).imK = .imK