对四元数的理解
关于四元数介绍和插值的文章可参看:
https://www.cnblogs.com/21207-iHome/p/6952004.html
这里面涉及到计算两个四元数p, q的夹角
θ
\theta
θ,然后把这个夹角三等分,算出对应的两个四元数
p
1
,
p
2
p_1, p_2
p1,p2,这两个四元数所代表的意义就是对3D球上p, q的插值,一开始没有体会到这两种夹角的对应关系,理解了半天无法体会p,q点积的结果为什么就是他们在3D球上的夹角余弦值了…
后来通过计算发现四元数作为矢量而言,他们的夹角
θ
\theta
θ其实与所代表的3D球旋转之间的夹角
θ
′
\theta'
θ′有对应关系:
θ
=
θ
′
/
2
\theta = \theta' / 2
θ=θ′/2
这也使得上面这篇文章里面的这句话更好理解了:
如果四元数点积的结果是负值(夹角大于90°),那么后面的插值就会在4D球面上绕远路。为了解决这个问题,先测试点积的结果,当结果是负值时,将2个四元数的其中一个取反(并不会改变它代表的朝向)。而经过这一步操作,可以保证这个旋转走的是最短路径。
其实也就是四元数的半个球面就可以表示3D的任意旋转,任意四元数 p 取反就是另一个4D半球面上与 p 中心对称的矢量,他们的旋转作用是完全一样的。