Yoo, Kyunghwan

Quaternion representation

A quaternion is a four-dimensional complex number

An arbitrary orientation of frame B relative to frame A

_B^AOverscript[q,^]

[Graphics:HTMLFiles/index_2.gif]

A rotation of angle θ around an axis ^AOverscript[r,^] defined in frame A

^AOverscript[r,^] = ({{r_x, r_y, r_z}})

normalized four-dimensional vector

_B^AOverscript[q,^] = ({{q_1, q_2, q_3, q_4}}) = ({{Cos[θ/2], -r_xSin[θ/2], -r_ySin[θ/2], -r_zSin[θ/2]}})

the quaternion paramentrization obeys

q_1^2 + q_2^2 + q_3^2 + q_4^2 = 1

hypercomplex numbers {i,j,k}

a + b i + c j + d k

i^2 = j^2 = k^2 = -1

i j = -j i = k

j k = -k j = i

k i = -i k = j

A quaternion conjugate

_B^AOverscript[q,^]^* = _A^BOverscript[q,^] = ({{q_1, -q_2, -q_3, -q_4}})

A quaternion product ⊗

_C^AOverscript[q,^] = _C^BOverscript[q,^] ⊗_B^AOverscript[q,^]

Hamilton rule

a⊗b = ({{a_1, a_2, a_3, a_4}}) ⊗ ({{b_1, b_2, b_3, b_4}})

     = ({{a_1, a_2, a_3, a_4}}) . ({{b_1, b_2, b_3, b_4}, {-b_2, b_1, -b_4, b_3}, {-b_3, b_4, b_1, -b_2}, {-b_4, -b_3, b_2, b_1}})

Euler axis

Overscript[e,^] = ({{e_x}, {e_y}, {e_z}})

Angle

θ

Vector's Elements

q_1 = Cos[θ/2]

q_2 = e_xSin[θ/2]

q_3 = e_ySin[θ/2]

q_4 = e_zSin[θ/2]

Half Angle Identities

Sin[θ/2] = ± (1 - Cos[θ])/2^(1/2)

Cos[θ/2] = ± (1 + Cos[θ])/2^(1/2)

Choice of ± sign depends on the quadrant in which θ/2 lies .

A three dimensional vector

Quaternion _B^AOverscript[q,^]

^Bυ = _B^AOverscript[q,^] ⊗^Aυ⊗_B^AOverscript[q,^]^* = _A^BOverscript[q,^]^* ⊗^Aυ⊗_A^BOverscript[q,^]

^Cυ = _C^BOverscript[q,^] ⊗^Bυ⊗_C^BOverscript[q,^]^*

_C^AOverscript[q,^] = _C^BOverscript[q,^] ⊗_B^AOverscript[q,^]

Rotation Matrix_A^BR

^Bυ = _A^BR . ^Aυ

^Cυ = _B^CR . ^Bυ

^Cυ = _A^CR . ^Aυ = _B^CR . _A^BR . ^Aυ = _B^CR . ^Bυ

_A^CR = _B^CR . _A^BR

_A^ER = _V^ER . _A^VR

_B^ER = _V^ER . _B^VR

_B^ER = _V^ER . _A^VR . _B^AR = _V^ER . _B^VR = _A^ER . _B^AR

Euler Angle (Roll φ Overscript[x,^] _B, Pitch θ Overscript[y,^] _B, Yaw ψ Overscript[z,^] _B, ZYX) →Rotation Matrix_A^BR

RowBox[{RowBox[{_A^BR, Cell[]}], =, ({{r_11, r_12, r_13}, {r_21, r_22, r_23}, {r_31, r_32, r_33}}) = R_Overscript[z,^][ψ] R_Overscript[y,^][θ] R_Overscript[x,^][φ]}]

Axis/Angle→Rotation Matrix_A^BR

Quaternion _B^AOverscript[q,^] →Rotation Matrix_A^BR

_B^AOverscript[q,^] = ({{q_1, q_2, q_3, q_4}}) = ({{Cos[θ/2], -r_xSin[θ/2], -r_ySin[θ/2], -r_zSin[θ/2]}})

Quaternion _B^AOverscript[q,^] →Rotation Matrix_A^BR→Euler Angle (Roll φ Overscript[x,^] _B, Pitch θ Overscript[y,^] _B, Yaw ψ Overscript[z,^] _B, ZYX)

φ around Overscript[x,^] _B, θ around Overscript[y,^] _B, ψ around Overscript[z,^] _B

φ = ArcTan[_A^BR_33, _A^BR_32] = ArcTan[2q_1^2 - 1 + 2q_4^2, 2 (q_3q_4 - q_1q_2)]

θ = -ArcSin[_A^BR_31] = -ArcTan[(1 - _A^BR_31^2)^(1/2), _A^BR_31] = -ArcSin[2 (q_2q_4 + q_1q_3)]

ψ = ArcTan[_A^BR_11, _A^BR_21] = ArcTan[2q_1^2 - 1 + 2q_2^2, 2 (q_2q_3 - q_1q_4)]

Roll = atan2 (R_32, R_33)

Pitch = -asin (R_31)

Yaw = atan2 (R_21, R_11)

Orientation _B^AOverscript[q,^] → Roll φOverscript[x,^] _B,Pitch θOverscript[y,^] _B,Yaw ψOverscript[z,^] _B

φ = ArcTan[_B^AR_33, _B^AR_32] = ArcTan[2q_1^2 - 1 + 2q_4^2, 2 (q_3q_4 - q_1q_2)]

θ = -ArcTan[(1 - _B^AR_31^2)^(1/2), _B^AR_31] = ArcSin[-_B^AR_31] = -ArcSin[2 (q_2q_4 + q_1q_3)]

ψ = ArcTan[_B^AR_11, _B^AR_21] = ArcTan[2q_1^2 - 1 + 2q_2^2, 2 (q_2 q_3 - q_1 q_4)]

Rotation Matrix_A^BR →Quaternion_B^AOverscript[q,^]

q_1 = 1/2 (r_11 + r_22 + r_33 + 1)^(1/2)

q_2 = -Sign[r_32 - r_23]/2 (r_11 - r_22 - r_33 + 1)^(1/2)

q_3 = -Sign[r_13 - r_31]/2 (r_22 - r_33 - r_11 + 1)^(1/2)

q_4 = -Sign[r_21 - r_12]/2 (r_33 - r_11 - r_22 + 1)^(1/2)

Euler Angle (Roll φ Overscript[x,^] _B, Pitch θ Overscript[y,^] _B, Yaw ψ Overscript[z,^] _B, ZYX) →Quaternion_B^AOverscript[q,^]

q_1 = 1/2 √ (1 + Cos[θ] Cos[φ] + Cos[θ] Cos[ψ] + Cos[φ] Cos[ψ] + Sin[θ] Sin[φ] Sin[ψ])

Q[φ, 0, 0] = {1/2 (2 + 2 Cos[φ])^(1/2), -1/2 (2 - 2 Cos[φ])^(1/2) Sign[Sin[φ]], 0, 0} = {Cos[φ/2], -Sin[φ/2], 0, 0}

Q[0, θ, 0] = {1/2 (2 + 2 Cos[θ])^(1/2), 0, -1/2 (2 - 2 Cos[θ])^(1/2) Sign[Sin[θ]], 0} = {Cos[θ/2], 0, -Sin[θ/2], 0}

Q[0, 0, ψ] = {1/2 (2 + 2 Cos[ψ])^(1/2), 0, 0, -1/2 (2 - 2 Cos[ψ])^(1/2) Sign[Sin[ψ]]} = {Cos[ψ/2], 0, 0, -Sin[ψ/2]}

{Cos[φ/2], -Sin[φ/2], 0, 0} ⊗ {Cos[θ/2], 0, -Sin[θ/2], 0} ⊗ {Cos[ψ/2], 0, 0, -Sin[ψ/2]}

q_1 = Cos[θ/2] Cos[φ/2] Cos[ψ/2] + Sin[θ/2] Sin[φ/2] Sin[ψ/2]

q_2 = -Cos[θ/2] Cos[ψ/2] Sin[φ/2] + Cos[φ/2] Sin[θ/2] Sin[ψ/2]

q_3 - Cos[φ/2] Cos[ψ/2] Sin[θ/2] - Cos[θ/2] Sin[φ/2] Sin[ψ/2]

q_4 = Cos[ψ/2] Sin[θ/2] Sin[φ/2] - Cos[θ/2] Cos[φ/2] Sin[ψ/2]