【问题标题】:Rodrigues Rotation of a set of points relative to a vectorRodrigues 一组点相对于向量的旋转
【发布时间】:2017-10-05 15:42:32
【问题描述】:

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

例如,让:

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 是一个“点” ' 而不是向量。有什么建议吗?

【问题讨论】:

  • 四元数旋转是等价的,有很多示例实现

标签: python vector rotation euler-angles


【解决方案1】:

您的叉积项被颠倒了。该公式将其定义为 cross(k,vi)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 2016-03-19
    • 2019-06-29
    相关资源
    最近更新 更多