Как преобразовать трехмерные координаты в новый вектор нормали? - PullRequest
0 голосов
/ 04 марта 2020

У меня есть ряд координат, все в одной плоскости с указанным c нормальным вектором. Я также определил два вектора перпендикулярно вектору нормали, которые описывают «вверх / вниз» и «влево / вправо» в этой трехмерной плоскости. Центр плоскости, вокруг которой должно происходить преобразование, также известен.

Скажем, у меня есть новый вектор нормали, как бы я преобразовал все эти трехмерные координаты, чтобы они все еще находились в этой плоскости? То есть их относительное положение относительно центра плоскости с ее новой нормалью остается прежним?

Я читал о матрице вращения раньше, но дело в том, что у меня есть вектор для преобразования, а не угол это описывает вращение, хотя плоскость по существу делает вращение. Мне было интересно, если бы не было никакого метода, который сделал бы это преобразование быстрым и легким.

1 Ответ

0 голосов
/ 07 марта 2020

Итак, я покопался в матрицах вращения и обнаружил, что вам не обязательно знать угол поворота для этой новой позиции.

На самом деле все, что вам нужно сделать, это умножить матрицу вращения с координатами относительно предыдущей матрицы вращения. После этого вы добавляете координаты точки, вокруг которой вы вращались, и вот она у вас.

Мне нужно было сделать это в python и использовать для этого метод matmul numpy. Матрица вращения была сделана с использованием векторов, которые у меня уже были доступны:

[[right.x up.x, forward.x],
[right.y, up.y, forward.y],
[right.z, up.z, forward.z]]

вправо, вверх и вперед - 3 вектора размера 1, перпендикулярных друг другу.

...