Перевод мировых координат в локальные

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

Модератор: Mikle

mdx
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 169
Зарегистрирован: 06.01.2006 (Пт) 18:13
Откуда: I'm from Russia!

Перевод мировых координат в локальные

Сообщение mdx » 05.07.2007 (Чт) 18:12

Как можно перевести мировые координаты в локальные (координаты модели)?
This posting is provided "AS IS" with no warranties, and confers no rights.

Изображение

djalex777
Постоялец
Постоялец
 
Сообщения: 461
Зарегистрирован: 23.03.2006 (Чт) 16:02

Сообщение djalex777 » 05.07.2007 (Чт) 18:41

Домножая на матрицу модели

mdx
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 169
Зарегистрирован: 06.01.2006 (Пт) 18:13
Откуда: I'm from Russia!

Сообщение mdx » 07.07.2007 (Сб) 17:59

Только надо сначала эту матрицу инвертировать :D Сам уже разобрался
This posting is provided "AS IS" with no warranties, and confers no rights.

Изображение

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

Сообщение Yurich » 03.08.2007 (Пт) 20:13

У меня вопрос чуть другого плана

Dim v1 As D3DVECTOR, v2 As D3DVECTOR, v3 As D3DVECTOR, M As D3DMATRIX

Нужно самым быстрым способом получить M, чтобы после
D3DXVec3TransformCoord v3, v2, M
v3 был равен v1
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

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

Сообщение Mikle » 06.08.2007 (Пн) 9:11

Yurich, это же элементарно:
Код: Выделить всё
D3DXMatrixTranslation M, v1.x - v2.x, v1.y - v2.y, v1.z - v2.z

Но, сдается мне, задача поставлена неверно.

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

Сообщение Yurich » 06.08.2007 (Пн) 19:26

Mikle,
спасибо, я так и делаю!

Поясню задачу более корректно:
v1() - массив вершин модели.
v2() - то же, но полученный матрицей MSrc.
Будем считать что MSrc мне не известна, так как получается путем массы преобразований или вычислять ее просто не рационально.
Я подумал, чтобы из v2() получить v3() (считай v1() ), надо предварительно вычислить матрицу М, обратную MSrc. Так, как матрица действует на все вершины одинаково, взял за исходники координаты v1(0) и v2(0):

D3DXMatrixTranslation M, v1(0).x - v2(0).x, ...

И вот тут ошибочка! Дело в том, что М при преобразовании v2() в v3() перемещает вершины, но не вращает их. Информация о вращении потеряна.
Как поступить?
- Какой треугольник не подвластен законам геометрии?
- У которого все углы тупые!

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

Сообщение Mikle » 07.08.2007 (Вт) 10:42

Yurich
Если V() - это вектор, то в нем НЕТ информации о вращении, это просто набор трех Single значений. Если считать их не позицией, а направлением, то теряется информация о позиции.


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33

    TopList