Here we have provided a C++ class for quaternional algebra. You need these two files: quaternion.h & quaternion.c++. To be able to work with Euler angles, you also need to download Ken Shoemake's QuatTypes.h, EulerAngles.h, EulerAngles.c and define SHOEMAKE in your makefile. Here is an example how to use it all together: (test.c++) and a makefile. For more on quaternions, read Prof. George Francis's introduction lecture.
Quaternions are elements of the 4-dimensional space formed by the real axis and 3 imaginary orthogonal axes , , and that obey Hamilton’s rule . They can be written in a standard quaternionial form as where , or as a 4D vector where is called scalar part and is called vector part. Quaternions possess the following properties:
Addition: for
Multiplication: for and
is the magnitude of , is its norm. If , the quaternion is referred to as a unit quaternion. For is a unit quaternion. Inverse of is defined as and the conjugate of is defined as . For any unit quaternion we have . Quaternions whose real part is zero are called pure quaternions.
Rotation of a 3D vector by a unit quaternion is defined as where is a pure quaternion build from by adding a zero real part. Sequences of rotations can be conveniently represented as the quaternionial product. For example, if is rotated by followed by , the result is the same as rotated by .
Document is created by Angela Bennett and Volodymyr
Kindratenko
Last modified: Tuesday, August 29,
2000 11:00:00 AM