0
私は点の集合を持っています。そのうちの2つは、私が望む回転ベクトルを指定するために使用しています。Rodriguesベクトルを基準とした点の集合の回転
たとえば、みましょう:
x1 = [1,1,1]
x2 = [2,3,1]
マイ所望の回転ベクトルは次のとおりです。
x2 - x1 = [1,2,0]
私は、その後で、ロドリゲスの回転によってこの回転に対する3D一連の点を回転させるようにしようとしています私のmetho:
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
が 'ポイント'ベクトルではありません。何かアドバイス?
クォータニオン回転は等価であり、多くの実装例があります – f5r5e5d