Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обратное вращение матрицы


MeF88 ©   (2003-07-07 14:48:00) 

Допустим у меня есть quad(прямоугольник) с центром вращения в точке(x2,y2) расположенный в координате (qx,qy) и шириной и высотой(qw и qh). Я делаю нечто вроде:
x2=qx+qw/2
y2=qy+qh/2
D3DXMatrixRotationZ(matWorld1, Angle/255*D3DX_PI*2);
D3DXMatrixTranslation(matWorld2,x2,y2,0);
D3DXMatrixMultiply(matWorld1,matWorld1,matWorld2);
pd3dDevice.SetTransform(D3DTS_WORLD, matWorld1);
Далее вывожу два треугольника.
Причем левая верхняя вершина имеет координаты (-qw/2,-qh/2)
Правая верхняя: (qw/2,-qh/2)
Левая нижняя: (-qw/2,qh/2)
Правая нижняя: (qw/2,qh/2)
Допустим, что некоторая точка вращалась вместе с Quad и теперь имеет координаты (x,y). Как мне найти координаты этой точки до вращения, при условии, что её координаты до вращения не известны и вращение произошло.
Я уже 4 часа над этим парюсь, с применением и sin и cos, arcsin, arccose и вращение матрицы, и создание вектора, который трансформаруется матрицей, повернутой в противоположную сторону...


MeF88   (2003-07-07 17:20:00) [1]

Фенкс конечно, но как оказалось, я просто минусы и плюсы в некоторых формулах перепутал, после того как спросишь кого-нить о чем-то столько гениальных идей в голову приходит =)


Axis_of_Evil   (2003-07-07 15:21:00) [2]

>Допустим, что некоторая точка вращалась вместе с Quad и теперь
>имеет координаты (x,y). Как мне найти координаты этой точки до
>вращения, при условии, что её координаты до вращения не
>известны и вращение произошло.

Первое, что пришло в голову:
A = матрица преобразований;
X1 = A*X0 // искаем X0
X0 = X1*A" // A" = обратная матрица

Когда писал - спешил => мог хъню написать // или не по теме


Наверх

Титульная страница Поиск, карта сайта Написать письмо