Приветствую всех,
Как видно на картинке,
У меня есть объект с именем 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 ')
Заранее спасибо.