我有一组点,其中两个用于指定我想要的旋转矢量。
例如,让:
x1 = [1,1,1]
x2 = [2,3,1]
我想要的旋转矢量是:
x2 - x1 = [1,2,0]
然后我试图通过Rodrigues旋转来旋转相对于此旋转的一系列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 :(得分:0)
您的交叉产品用语相反。该公式将其表示为交叉(k,vi)。