Documentation

Mathlib.Algebra.DualQuaternion

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 #

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} [CommRing R] (q : Quaternion (DualNumber R)) :
    (TrivSqZeroExt.fst (Quaternion.dualNumberEquiv q)).re = TrivSqZeroExt.fst q.re
    @[simp]
    theorem Quaternion.imI_fst_dualNumberEquiv {R : Type u_1} [CommRing R] (q : Quaternion (DualNumber R)) :
    (TrivSqZeroExt.fst (Quaternion.dualNumberEquiv q)).imI = TrivSqZeroExt.fst q.imI
    @[simp]
    theorem Quaternion.imJ_fst_dualNumberEquiv {R : Type u_1} [CommRing R] (q : Quaternion (DualNumber R)) :
    (TrivSqZeroExt.fst (Quaternion.dualNumberEquiv q)).imJ = TrivSqZeroExt.fst q.imJ
    @[simp]
    theorem Quaternion.imK_fst_dualNumberEquiv {R : Type u_1} [CommRing R] (q : Quaternion (DualNumber R)) :
    (TrivSqZeroExt.fst (Quaternion.dualNumberEquiv q)).imK = TrivSqZeroExt.fst q.imK
    @[simp]
    theorem Quaternion.re_snd_dualNumberEquiv {R : Type u_1} [CommRing R] (q : Quaternion (DualNumber R)) :
    (TrivSqZeroExt.snd (Quaternion.dualNumberEquiv q)).re = TrivSqZeroExt.snd q.re
    @[simp]
    theorem Quaternion.imI_snd_dualNumberEquiv {R : Type u_1} [CommRing R] (q : Quaternion (DualNumber R)) :
    (TrivSqZeroExt.snd (Quaternion.dualNumberEquiv q)).imI = TrivSqZeroExt.snd q.imI
    @[simp]
    theorem Quaternion.imJ_snd_dualNumberEquiv {R : Type u_1} [CommRing R] (q : Quaternion (DualNumber R)) :
    (TrivSqZeroExt.snd (Quaternion.dualNumberEquiv q)).imJ = TrivSqZeroExt.snd q.imJ
    @[simp]
    theorem Quaternion.imK_snd_dualNumberEquiv {R : Type u_1} [CommRing R] (q : Quaternion (DualNumber R)) :
    (TrivSqZeroExt.snd (Quaternion.dualNumberEquiv q)).imK = TrivSqZeroExt.snd q.imK
    @[simp]
    theorem Quaternion.fst_re_dualNumberEquiv_symm {R : Type u_1} [CommRing R] (d : DualNumber (Quaternion R)) :
    TrivSqZeroExt.fst ((AlgEquiv.symm Quaternion.dualNumberEquiv) d).re = (TrivSqZeroExt.fst d).re
    @[simp]
    theorem Quaternion.fst_imI_dualNumberEquiv_symm {R : Type u_1} [CommRing R] (d : DualNumber (Quaternion R)) :
    TrivSqZeroExt.fst ((AlgEquiv.symm Quaternion.dualNumberEquiv) d).imI = (TrivSqZeroExt.fst d).imI
    @[simp]
    theorem Quaternion.fst_imJ_dualNumberEquiv_symm {R : Type u_1} [CommRing R] (d : DualNumber (Quaternion R)) :
    TrivSqZeroExt.fst ((AlgEquiv.symm Quaternion.dualNumberEquiv) d).imJ = (TrivSqZeroExt.fst d).imJ
    @[simp]
    theorem Quaternion.fst_imK_dualNumberEquiv_symm {R : Type u_1} [CommRing R] (d : DualNumber (Quaternion R)) :
    TrivSqZeroExt.fst ((AlgEquiv.symm Quaternion.dualNumberEquiv) d).imK = (TrivSqZeroExt.fst d).imK
    @[simp]
    theorem Quaternion.snd_re_dualNumberEquiv_symm {R : Type u_1} [CommRing R] (d : DualNumber (Quaternion R)) :
    TrivSqZeroExt.snd ((AlgEquiv.symm Quaternion.dualNumberEquiv) d).re = (TrivSqZeroExt.snd d).re
    @[simp]
    theorem Quaternion.snd_imI_dualNumberEquiv_symm {R : Type u_1} [CommRing R] (d : DualNumber (Quaternion R)) :
    TrivSqZeroExt.snd ((AlgEquiv.symm Quaternion.dualNumberEquiv) d).imI = (TrivSqZeroExt.snd d).imI
    @[simp]
    theorem Quaternion.snd_imJ_dualNumberEquiv_symm {R : Type u_1} [CommRing R] (d : DualNumber (Quaternion R)) :
    TrivSqZeroExt.snd ((AlgEquiv.symm Quaternion.dualNumberEquiv) d).imJ = (TrivSqZeroExt.snd d).imJ
    @[simp]
    theorem Quaternion.snd_imK_dualNumberEquiv_symm {R : Type u_1} [CommRing R] (d : DualNumber (Quaternion R)) :
    TrivSqZeroExt.snd ((AlgEquiv.symm Quaternion.dualNumberEquiv) d).imK = (TrivSqZeroExt.snd d).imK