2017-10-05 39 views
0

我有一组点,其中两个我用来指定我想要的旋转矢量。Rodrigues相对于矢量的一组点的旋转

例如,我们:

x1 = [1,1,1] 
x2 = [2,3,1] 

我的期望旋转向量是:

x2 - x1 = [1,2,0] 

然后我试图通过罗德里格斯旋转而旋转,对于这种旋转的一系列3D的点,用我的方法是:

def rodriguesRotation(vi, k, theta): 
    # Accepts vector and returns rotated vector. 
    vRotated = (vi * cos(theta)) + ((np.cross(vi, k)) * sin(theta)) + (k * (np.dot(k, vi)) * (1 - cos(theta))) 
    return vRotated 

其中vi是我的未旋转矢量,k是我想要的旋转矢量,而theta是我的欧拉旋转角度。然而,这产生了一些奇怪的结果 - 我不知道如果在Python中,我必须指定我的单位向量才能正常工作,我相信它不起作用的原因仅仅是因为我的k是一个“点”,并且不是矢量。有什么建议?

+0

四元数旋转是等价的,并有许多示例实现 – f5r5e5d

回答

0

您的交叉产品术语是相反的。该公式给出了交叉(k,vi)。