Вращение точки в трехмерном пространстве - PullRequest
1 голос
/ 17 марта 2011

У меня есть одна проблема, связанная с вращением точки в 3D-пространстве.

Предположим, у меня есть одна точка с координатами X, Y и Z.

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

  1. По определенной пользователем степени
  2. По определенной пользователем оси вращения
  3. Вокруг (относительно) определенной пользователем точки

Я нашел здесь хорошую ссылку на , но она не затрагивает пункт 3. Может кто-нибудь помочь мне решить эту проблему?

1 Ответ

8 голосов
/ 17 марта 2011

Все повороты будут идти вокруг начала координат.Таким образом, вы переводите в начало координат, поворачиваете, а затем переводите обратно.

T = translate from global coordinates to user-coordinates
R = rotate around the origin (like in your link)
(T^-1) = translate back
point X

X_rotated = (T^-1)*R*T*X 

Если вам нужно повернуть несколько точек, умножьте матрицы вместе:

A = (T^-1)*R*T
X_rotated = A*X
...