Skip to content

Instantly share code, notes, and snippets.

@BlockoS
Created September 9, 2010 20:45
Show Gist options
  • Save BlockoS/572542 to your computer and use it in GitHub Desktop.
Save BlockoS/572542 to your computer and use it in GitHub Desktop.
friend void squad(quaternion& qR, const quaternion& q1, const quaternion& qA,
const quaternion& qB, const quaternion& q2,
float t)
quaternion r1, r2;
{
slerp(r1, q1, q2, t);
slerp(r2, qA, qB, t);
slerp(qR, r1, r2, 2.0f * t * (1.0f - t));
}
friend void spline(quaternion& qR, const quaternion& q0, const quaternion& q1,
const quaternion& q2, const quaternion& q3, float t)
{
quaternion a1, a2, qinv, qa, qb;
invert(qinv, q1);
log(qa, qinv*q2);
log(qb, qinv*q0);
qa += qb;
qa /= -4.0;
exp(qb, qa);
a1 = q1 * qb;
invert(qinv, q2);
log(qa, qinv*q3);
log(qb, qinv*q1);
qa += qb;
qa /= -4.0;
exp(qb, qa);
a2 = q2 * qb;
squad(qR, q1, a1, a2, q2, t);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment