罗德里格斯相对于向量的一组点的旋转

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了罗德里格斯相对于向量的一组点的旋转相关的知识,希望对你有一定的参考价值。

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

例如,让:

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是'点'并且不是矢量。有什么建议?

答案

您的交叉产品术语相反。该公式将其表示为交叉(k,vi)。

以上是关于罗德里格斯相对于向量的一组点的旋转的主要内容,如果未能解决你的问题,请参考以下文章

向量化计算numpy中一组点的所有单位向量

在给定的一组点的python中的凸壳?

CS184.1X 计算机图形学导论 罗德里格斯公式推导

OpenCV:按角度旋转点:解决方案中的偏移/偏移

罗德里格斯旋转公式(Rodrigues' rotation formula)推导

用Matlab求解一组点的圆锥方程