Game Development Reference
In-Depth Information
// Accessors
void GetAxisAngle(Vec3 &axis, float &angle) const
{
D3DXQuaternionToAxisAngle(this, &axis, &angle);
}
// Initializers
void BuildRotYawPitchRoll(
const float yawRadians,
const float pitchRadians,
const float rollRadians)
{
D3DXQuaternionRotationYawPitchRoll(
this, yawRadians, pitchRadians, rollRadians);
}
void BuildAxisAngle(const Vec3 &axis, const float radians)
{
D3DXQuaternionRotationAxis(this, &axis, radians);
}
void Build(const class Mat4x4 &mat)
{
D3DXQuaternionRotationMatrix(this, &mat);
}
Quaternion(D3DXQUATERNION &q) : D3DXQUATERNION(q) { }
Quaternion() : D3DXQUATERNION() { }
static const Quaternion g_Identity;
};
inline Quaternion operator * (const Quaternion &a, const Quaternion &b)
{
// for rotations, this is exactly like concatenating
// matrices - the new quat represents rot A followed by rot B.
Quaternion out;
D3DXQuaternionMultiply(&out, &a, &b);
return out;
}
const Quaternion Quaternion::g_Identity(D3DXQUATERNION(0,0,0,1));
The quaternion is useful for orienting objects in a three-dimensional space. The
Quaternion class just presented gives you the three most used methods for initial-
izing it: from yaw-pitch-roll angles, an axis and rotation around that axis, and a 4 × 4
Search WWH ::




Custom Search