Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос, на который, похоже, не может верно ответить никто...

6.3K
21 января 2004 года
tokaplan
3 / / 21.01.2004
Речь идет о Direct3D. У меня есть матрица, которая задает положение объекта в мировых координатах (поворот и перенос). Как извлечь из нее векторы "вперед" и "влево" для объекта?
2.6K
21 января 2004 года
Hearse
89 / / 19.01.2004
верный ответ никто не может дать, потому что вопрос неверный, тчо такое веткор "влево"?
6.3K
22 января 2004 года
tokaplan
3 / / 21.01.2004
Цитата:
Originally posted by Hearse
верный ответ никто не может дать, потому что вопрос неверный, тчо такое веткор "влево"?



Пусть мой объект - это самолет. Тогда вектор "вперед" - это вектор, имеющий координаты, к примеру, (0,0,1) в системе координат, связанных с самолетом, в "влево" - (1,0,0), например.

562
23 января 2004 года
tarekon
175 / / 19.08.2003
Цитата:
Originally posted by tokaplan
Речь идет о Direct3D. У меня есть матрица, которая задает положение объекта в мировых координатах (поворот и перенос). Как извлечь из нее векторы "вперед" и "влево" для объекта?



А мировые координаты матрицей 3x3 или 4x4 задаются? Просто уже не помню...

6.3K
23 января 2004 года
tokaplan
3 / / 21.01.2004
Цитата:
Originally posted by tarekon


А мировые координаты матрицей 3x3 или 4x4 задаются? Просто уже не помню...



4x4. Матрица поворота 3x3 в левом верхнем углу.

6.5K
01 февраля 2004 года
IvanGS
2 / / 31.01.2004
Цитата:
Originally posted by tokaplan
Речь идет о 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) )

Совет: очень удобно для объекта хранить вектор сдвига (положение объекта
в мировых координатах) и матрицу поворота объекта отдельно друг от друга.
И при получении конечного преобразования перемножать матрицу поворота на
матрицу сдвига.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог