如何插入旋转?

uhu*_*huu 9 math 3d rotation matrix quaternions

我有两个描述旋转的向量; 开始旋转A和目标旋转B.我最好如何用因子F插值A来接近B?

当需要插入多个维度(即产生不希望的旋转)时,在矢量上使用简单的lerp无法工作.也许从旋转向量构建四元数并使用slerp是可行的方法.但是,如何从结果四元数中提取描述新旋转的向量?

提前致谢.

cat*_*try 9

由于我似乎不理解你的问题,这里是使用numpy在python中的一个小SLERP实现.我使用matplotlib绘制结果(Axes3D为v.99).我不知道你是否可以使用python,但看起来像你的SLERP实现?在我看来,给出好的结果......

from numpy import *
from numpy.linalg import norm

def slerp(p0, p1, t):
        omega = arccos(dot(p0/norm(p0), p1/norm(p1)))
        so = sin(omega)
        return sin((1.0-t)*omega) / so * p0 + sin(t*omega)/so * p1


# test code
if __name__ == '__main__':
    pA = array([-2.0, 0.0, 2.0])
    pB = array([0.0, 2.0, -2.0])

    ps = array([slerp(pA, pB, t) for t in arange(0.0, 1.0, 0.01)])

    from pylab import *
    from mpl_toolkits.mplot3d import Axes3D
    f = figure()
    ax = Axes3D(f)
    ax.plot3D(ps[:,0], ps[:,1], ps[:,2], '.')
    show()
Run Code Online (Sandbox Code Playgroud)


And*_*gor 2

好吧,你的 slerp 方法会起作用,并且可能在计算上是最有效的(尽管它有点难以理解)。要从四元数返回到向量,您需要使用可以在此处找到的一组公式。

这里还有一些相关代码,尽管我不知道它是否符合您表示数据的方式。