Вопрос, на который, похоже, не может верно ответить никто...
верный ответ никто не может дать, потому что вопрос неверный, тчо такое веткор "влево"?
Пусть мой объект - это самолет. Тогда вектор "вперед" - это вектор, имеющий координаты, к примеру, (0,0,1) в системе координат, связанных с самолетом, в "влево" - (1,0,0), например.
Речь идет о Direct3D. У меня есть матрица, которая задает положение объекта в мировых координатах (поворот и перенос). Как извлечь из нее векторы "вперед" и "влево" для объекта?
А мировые координаты матрицей 3x3 или 4x4 задаются? Просто уже не помню...
А мировые координаты матрицей 3x3 или 4x4 задаются? Просто уже не помню...
4x4. Матрица поворота 3x3 в левом верхнем углу.
Речь идет о Direct3D. У меня есть матрица, которая задает положение объекта в мировых координатах (поворот и перенос). Как извлечь из нее векторы "вперед" и "влево" для объекта?
Ответ на вопрос, на который правильно не может ответить никито:
(на самом деле нужно просто иметь некоторое представление о высшей
математике, а именно о матричной алгебре.)
Пусть матрица преобразования задается массивом из 16 элементов (от 0 до 15).
Матричные элементы нумеруются сверху вниз и слева направо.
/ 0 4 8 12 \
| 1 5 9 13 |
M=| 2 6 10 14 |
\ 3 7 11 15 /
Надо всего навсего посмотреть как преобразуются базисные вектора
(1,0,0), (0,1,0), (0,0,1) матрицей поворота (это та что 3x3 в той что 4x4).
итого получаем как преобразуются эти вектора (результатом будут
базисные вектора повернутой системы координат связанной с объектом)
(1,0,0) -> ( M(0), M(1), M(2) )
(0,1,0) -> ( M(4), M(5), M(6) )
(0,0,1) -> ( M( 8 ), M(9), M(10) )
Но так как объект ещё и сдвинут то полученную повернутую систему координат
надо ещё сдвинуть в точку где находится объект (полагаю она должна быть
известна).
Вот и всё.
Вектор сдвига помоему равен ( M(12), M(13), M(14) )
Совет: очень удобно для объекта хранить вектор сдвига (положение объекта
в мировых координатах) и матрицу поворота объекта отдельно друг от друга.
И при получении конечного преобразования перемножать матрицу поворота на
матрицу сдвига.