Тригонометрия в пространстве

Работа с 2D и 3D графикой, видео, звуком.

Модератор: Mikle

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Тригонометрия в пространстве

Сообщение Vovik » 26.02.2005 (Сб) 16:03

Вот столкнулся с такой проблемой..... У меня есть некая модель. Создаю вокруг неё BoundingBox (т.е. перебираю все вершины и нахожу мин и макс координаты для каждой оси). Но теперь я поворачиваю модель на угол (матрицами, не преобразовывая координаты ессно), а коробка остается прежней... Хм - подумал я. Надо и вершины поворачивать на угол...
Код: Выделить всё
D3DXMatrixRotationYawPitchRoll Mat, -.Rotation.Y, -.Rotation.X, -.Rotation.Z
      D3DXVec3TransformCoord vMin, vMin, Mat
      D3DXVec3TransformCoord vMax, vMax, Mat
Вот тут и возникли глюки.. При повороте на 0,45,90,135,180 и т.д. градусов - все нормально, но в промежутках они перекрещиваются, т.е. сходятся к друг другу и расходятся.... Так что же мне надо делать? Че с этими вершинами делать то? :cry:

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 26.02.2005 (Сб) 21:55

Несколько не понятно.
1. Если модель, то в каком виде? Массив вертексов или меш?
Поворот меша не вызовет затруднений, достаточно после пересчитать BBox.
2. У тебя vMin и vMax - это что, привязка к BBox? Если, да, то кроме как грубой ошибкой не назовешь, то есть, вертишь ты не вертексы а пространство, занимаемое моделью!
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 27.02.2005 (Вс) 1:19

Yurich писал(а):Несколько не понятно.
1. Если модель, то в каком виде? Массив вертексов или меш?
Поворот меша не вызовет затруднений, достаточно после пересчитать BBox.
2. У тебя vMin и vMax - это что, привязка к BBox? Если, да, то кроме как грубой ошибкой не назовешь, то есть, вертишь ты не вертексы а пространство, занимаемое моделью!

(vMin - минимальные координаты коробки, vMax- соответственно)
В общем-то не важно массив или меш... Факт в том, что координаты я не могу использовать (их там около 100000... тормозной процесс).. Но при загрузке я перебираю массив и нахожу самые минимальные и самые максимальные (vMin, vMax)... нашел... теперь вращаю модель... вот тут координаты vMin & vMax должны меняться в зависимости от угла... Ток как это сделать, я не могу понять... :oops:

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 27.02.2005 (Вс) 11:34

Меняются не координаты Min и Max, а векторы вершин bBox-а в пространстве. А координата X при повороте вокруг Y на 90 гр. станет координатой Z. То есть при повороте bBox-а той же матрицей, что и объект, нужно учитывать, что bBox теперь не расположен вдоль осей координат и коллизится по-другому, гораздо сложнее. Если модель позволяет, легче коллизить не бокс, а сферу.

Vovik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 643
Зарегистрирован: 02.08.2003 (Сб) 15:14
Откуда: Belarus, Minsk

Сообщение Vovik » 27.02.2005 (Вс) 12:34

Все... всем спасибо....разобрался.... :)


Вернуться в Мультимедиа

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 22

    TopList