Приветствую всех,
Как видно на изображении,
У меня есть объект с именем O (набор полос). Его система координат объекта (x', y', z'). Я перевожу, поворачиваю этот объект в своей сцене OpenGL, используя следующий фрагмент кода:
glPushMatrix();
glTranslatef(Oz, Oy,Oz);
glRotatef(rotationX , 1.0, 0.0, 0.0);
glRotatef(rotationY, 0.0, 1.0, 0.0);
glRotatef(rotationZ, 0.0, 0.0, 1.0);
contour->render();
glPopMatrix()
;
У меня есть точка с именем H , которая переводится в мировые координаты (hx,hy,hz) с использованием
glPushMatrix();
glTranslatef(hx,hy,hz);
glPopMatrix();
Если я прав, (Oz,Oy,Oz) и (hx,hy,hz) — мировые координаты.
Теперь я хочу вычислить положение H (hx, hy, hz) относительно системы координат объекта O. (x', y', z'); Как я понял, это можно сделать, вычислив обратные преобразования объекта O и применив их к точке H.
Любые советы по этому поводу? Предоставляет ли OpenGL какие-либо функции для вычисления обратной матрицы? Если бы я каким-то образом нашел обратные матрицы, в каком порядке их умножать?
Примечание. Я хочу реализовать инструмент, похожий на «молоток», где в точке H я рисую сферу с радиусом R. Пользователь может использовать эту сферу для измельчения объекта O, как молоток. Я реализовал это в 2D, поэтому я могу использовать тот же алгоритм, если я могу вычислить положение молотка относительно (x', y', z')
Заранее спасибо.
{Ox - hx, Oy - hy, Oz - hz}
(т.е.glTranslatef(Ox - hx, Oy - hy, Oz - hz);
)? Если у вас уже есть глобальные векторыO
иh
, достаточно простого вычитания векторов, полностью исключая манипуляции с матрицами. Кстати, ваше исходное решение звучит правильно. - person MrGomez   schedule 07.12.2010