How would one interpolate an arbitrary linear (or even affine) transformation in 3D? I can imagine it is very complicated, since even the method for interpolating rotations has an acronym! Perhaps we would try to decompose the transformation into rotation, scaling, and shear?

Febgreen

Do we need to learn about the "SLERP"? What does the t mean in this equation

jmccann

Interpolating transforms:
Yep, a common way to do this is to decompose the transform into several parts and interpolate them individually. A natural question to ask is "what's a good measure of interpolation quality?" and the interpolation scheme one might arrive at is depending on your answer to this question.

Slerp:
The interpolation time is 't' (0 <= t <= 1). Knowing that Slerp exists is good. The formula given here is a bit of a cop-out since implementing quaternion exponentiation is non-trivial Wikipedia gives the formula for general unit-length vectors, but remember that since q and -q have the same action (think axis-angle to see why) you might need to flip one q0 or q1.
Also, be aware that glm::slerp() does exist, for all your quaternion-mixing needs in future projects (unless we explicitly require you to implement it yourself).

hii

So what is interpolation exactly? Does it involve combining two separate rotations into one?

How would one interpolate an arbitrary linear (or even affine) transformation in 3D? I can imagine it is very complicated, since even the method for interpolating rotations has an acronym! Perhaps we would try to decompose the transformation into rotation, scaling, and shear?

Do we need to learn about the "SLERP"? What does the t mean in this equation

Interpolating transforms: Yep, a common way to do this is to decompose the transform into several parts and interpolate them individually. A natural question to ask is "what's a good measure of interpolation quality?" and the interpolation scheme one might arrive at is depending on your answer to this question.

Slerp: The interpolation time is 't' (0 <= t <= 1). Knowing that Slerp exists is good. The formula given here is a bit of a cop-out since implementing quaternion exponentiation is non-trivial Wikipedia gives the formula for general unit-length vectors, but remember that since q and -q have the same action (think axis-angle to see why) you might need to flip one q0 or q1. Also, be aware that glm::slerp() does exist, for all your quaternion-mixing needs in future projects (unless we explicitly require you to implement it yourself).

So what is interpolation exactly? Does it involve combining two separate rotations into one?