Quaternions in Computer Graphics
Introduction
While crossing a bridge with his wife, Sir William Hamilton made a mathematical discovery so profound he carved it onto a stone. After 10 years of work, he had finally found a way to simultaneously rotate about multiple axis. He named his discovery Quaternions.
Although his discovery went unnoticed for a while, it wasn't until the flight simulation and computer graphics industry that Quaternions mathematics became alive again. Quaternions are mainly used in computer graphics when a 3D character rotation is involved. Quaternions allows a character to rotate about multiple axis simultaneously, instead of sequentially as matrix rotation allows. For example, to rotate 45 degrees about the xy-axis using matrix rotations, the character must first rotate about the x-axis and then rotate about the y-axis. With quaternions this sequential process is not necessary.
Why use Quaternions to rotate a 3D character when matrices can do the same job? There are two reasons why Quaternions are preferred in computer graphics:
- Matrix rotations suffer from what is known as Gimbal Lock.
- Quaternions consume less memory and are faster to compute than matrices.
Gimbal lock is the loss of one degree of freedom in a three-dimensional, three-gimbal mechanism that occurs when the axes of two of the three gimbals are driven into a parallel configuration, "locking" the system into rotation in a degenerate two-dimensional space. 2
The goal to talk about quaternions is to see how they can help us rotate characters more efficiently. However, before we talk about rotations, let's learn a bit more about quaterion arithmetics. .
Quaternions
Quaternions are composed of a scalar and a vector. They are represented in various different ways such as:
where S is a scalar number and V is a vector representing an axis.
Adding and Subtracting
Quaternions can be added and subtracted among themselves. In quaternion addition and subtraction, the corresponding scalar and vectors from each quaternion are added/subtracted, respectively. Mathematically, quaternion addition/subtraction is represented as follows:
For example, the addition of two quaternions is calculated as follows:
Product
Quaternions can be multiplied among themselves. Mathematically, quaternion multiplication is represented as follows:
Scalar Multiplication
Just like vectors and matrices, a quaternion can be multiplied by a scalar. Mathematically, this is represented as follows:
where k is a scalar real number.
Square
The square of a quaternion is given by
For example, the square of quaternion q is calculated as follows:
Norm
Mathematically, the norm of a quaternion is represented as follows:
For example, the norm of quaterion q is calcuated as follows:
Unit Norm
The unit norm of a quaternion, also known as Normalised quaternion, is calculated as follows:
For example, normalizing the quaternion q is calculated as follows:
Conjugate
The conjugate of a quaternion is very important in computing the inverse of a quaternion. Mathematically, the conjugate of quaternion q is calculated as follows:
Inverse
The ability to divide in quaternion arithmetic is very important. To be able to divide a quaternion, you need its inverse. By definition the inverse quaternion satisfies the following:
The inverse of a quaternion is defined as:
Reference: Quaternions for Computer Graphics by John Vince