2017-10-05 37 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)。