Родригес Вращение множества точек относительно вектора

У меня есть набор точек, две из которых я использую для обозначения желаемого вектора вращения.

Например, пусть:

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).

Другие вопросы по тегам