Game Development Reference
U PDATING BY THE A NGULAR V ELOCITY
The final operation we need to do is to update the orientation quaternion by applying
the angular velocity for a specified duration of time. In section 9.3 we saw that this is
handled by the equation
is the quaternion form of the angular velocity and t is the duration to update
by. This can be implemented as
Excerpt from include/cyclone/core.h
* Holds a three degree of freedom orientation.
// ... other Quaternion code as before ...
* Adds the given vector to this, scaled by the given amount.
* This is used to update the orientation quaternion by a rotation
* and time.
* @param vector The vector to add.
* @param scale The amount of the vector to add.
void addScaledVector(const Vector3& vector, real scale)
vector.x * scale,
vector.y * scale,
vector.z * scale);
q *= *this;
r += q.r * ((real)0.5);
i += q.i * ((real)0.5);
j += q.j * ((real)0.5);
k += q.k * ((real)0.5);