Quaternions
March 9, 2022About 1 min
Quaternions
绕轴旋转 θ 可以在球体上表示为任何有向弧,在垂直于旋转轴的平面上长度为 θ/2
。正角产生绕轴逆时针旋转。
为什么是1/2呢?因为一个四元数可以记录2个圆周,也就是720度,但是sin/cos的循环时360度,所以为了适配就除以2。
Different methods for creating quaternions
Retrieving the angle and axis of aquaternion
Basic component-wise operations
The length and dot product of two quaternions
Inverting quaternions
当一个四元数被归一化后,他的共轨和逆向时一样。
Combining quaternions
Transforming vectors by quaternions
纯四元数就是,旋转轴时单位向量,w是0时。
Interpolating between quaternions
四元数是一个旋转角度,而不是方向。做插值,就是从一个角度变道另一个角度。在旋转中,我们可以获得最长的路径或者最短的路径。插值最好使用最短的路径。在两个四元数点乘时,大于零时就是取得最短路径,小于零时就是取得最长路径。如果我们需要使用最短路径,就可以做如下操作:
quat SampleFunction(const quat& a, const quat& b)
{
if (dot(a, b) < 0.0f)
{
b = -b;
}
return slerp(a, b, 0.5f);
}