forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Алгоритмика (http://forum.boolean.name/forumdisplay.php?f=21)
-   -   Поворот матрицы, локальная система координат объекта (http://forum.boolean.name/showthread.php?t=7527)

FroZy 29.12.2008 18:00

Поворот матрицы, локальная система координат объекта
 
Вобщем есть 3D пространство, в нем объект с координатами X,Y,Z повёрнутый на углы Xa,Ya,Za все данные известны. Теперь собственно сам вопрос к уважаемым знатокам (:
Необходимо переместить этот объект на определённое(также известное) расстояние относительно направления этого объекта(т.е. в его локальной СК)
Вопрос, как же это сделать? Помню когда кодил на чистом GL(давно было дело, просто для общего развития взялся) была там специальная команда для записи матрицы и ещё одна для её востановления, а также крутить её можно было по любому - было не привычно но довольно удобно. Но как вывести координаты, зная эти данные? Возможно вопрос уже всплывал, тогда плиз тыкните носом, изучу (:
Сам кодю на блице, там проблем с этим нет - MoveEntity спасёт лентяя (:
Но нужно найти решение используя GML и подключенную библиотеку Ultimate3D. Вобщем надеюсь на адекватные и полезные ответы, сам в подобной объемной математике не очень силён :(

alcoSHoLiK 30.12.2008 01:01

Ответ: Поворот матрицы, локальная система координат объекта
 
Если в той штуке, в которой ты кодишь, перемещения задаются в глобальных координатах, то надо сделать следующее:
1) построить вектор, задающий перемещение вдоль нужных тебе осей на нужное расстояние, причем координаты будут глобальными
2) повернуть вектор на известные углы Xa, Ya, Za
3) прибавить координаты полученного вектора к текущей позиции объекта

Поворот вектора осуществляется умножением его на матрицу вращения. Если что не понятно, тут есть ответы на все вопросы:
http://vamos.sourceforge.net/matrixfaq.htm


Часовой пояс GMT +4, время: 10:48.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot