【发布时间】: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