Article directory
Quaternion Arithmetic
Multiplication of basis quaternion elements
Normalization
Conjugate
Multiplication
Division
Conversion
Quaternion to Rotation Matrix
Given the unit quaternion:
Q = ( w , x , y , z ) Q = (w, x, y, z) Q=(w,x,y,z)
The equivalent 3×3 rotation matrix is:
Rotation Matrix to Quaternion
Given a rotation matrix R:
R = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] R=\left[\begin{matrix} r_{11} & r_{12}&r_{13}\\ r_{21} & r_{22}&r_{23}\\ r_{31} & r_{32}&r_{33}\\ \end{matrix} \right] R=⎣⎡r11r21r31r12r22r32r13r23r33⎦⎤
The equivalent quaternion will be
Quaternion to Euler Angle
Choose Rotation Matrix or Quaternion
Choosing between Euler angles and quaternions is tricky. Euler angles are intuitive for artists, so if you write some 3D editor, use them. But quaternions are handy for programmers, and faster too, so you should use them in a 3D engine core.
The general consensus is exactly that: use quaternions internally, and expose Euler angles whenever you have some kind of user interface.
Attention
Several consecutive quaternion computation will result in accumulated error, thus, periodic normalization is needed for quaternion.
Reference
- Rotation Matrix: https://en.wikipedia.org/wiki/Rotation_matrix
- Quaternion: https://en.wikipedia.org/wiki/Quaternion
- Use Which One: http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-17-quaternions/
- Quaternions and spatial rotation: https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation
- Quaternion&Rotation: https://www.zhoulujun.cn/html/theory/Mathematics/Geometry/8149.html
- Quaternion Physical Signature: https://codeantenna.com/a/FYa8JjhUVg
- Quaternion Division: https://ww2.mathworks.cn/help/aeroblks/quaterniondivision.html
- Quaternion Mult.: https://ww2.mathworks.cn/help/aeroblks/quaternionmultiplication.html
- Quaternion Introduction Book:
https://mil.ufl.edu/nechyba/www/__eel6667.f2003/course_materials/t3.quaternions/intro_quaternions.pdf