Linear and Affine Algebra 297
A straightforward implementation of quaternions and the associated alge-
bra is provided by the interface shown in Listing 6.27. The
Rotate and Slerp
functions are discussed later in this section.
template <typename Real>
class Quaternion : public Vector <4, R eal >
{
public :
// The quaternions are of the form q = x∗ i+y∗ j+z∗k + w. In tuple
// form, q = (x,y,z,w).
// Construction and destruction . The default constructor does not
// initialize the members.
˜Quaternion ();
Quaternion ();
Quaternion (Quaternion const&q);
Quaternion ( Vector <4, R ea l> const&q);
Quaternion ( Real x , Real y , Real z , Real w);
// assignment
Quaternion& operator=(Quaternion const&q);
Quaternion& operator= ( Vector <4, R ea l> const&q);
// special quaternions ...