Родригес Вращение множества точек относительно вектора
У меня есть набор точек, две из которых я использую для обозначения желаемого вектора вращения.
Например, пусть:
x1 = [1,1,1]
x2 = [2,3,1]
Мой желаемый вектор вращения:
x2 - x1 = [1,2,0]
Затем я пытаюсь повернуть серию трехмерных точек относительно этого вращения с помощью вращения Родригеса, используя мой метод:
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
это "точка", а не вектор. Любой совет?
1 ответ
Ваш кросс-продукт продукт перевернут. Формула дает это как крест (k,vi).