/*---------------------------------------------------------------------*//** 球面三次補間 **//*---------------------------------------------------------------------*/ void Quaternion::squad(Vector4F* ret, const Vector4F* q1, const Vector4F* q2, const Vector4F* a, const Vector4F* b, f32 t) { Vector4F c, d; slerpNoInvert(&c, q1, q2, t); slerpNoInvert(&d, a, b, t); slerpNoInvert(ret, &c, &d, 2 * t * (1 - t)); }
CQuaternion CQuaternion::squad(const CQuaternion &q1, const CQuaternion &q2, const CQuaternion &a, const CQuaternion &b, float t) { CQuaternion c = slerpNoInvert(q1, q2, t), d = slerpNoInvert(a, b, t); return slerpNoInvert(c, d, 2 * t * (1 - t)); }