Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: bloodcry от Март 12, 2010, 07:42



Название: Поворот матрицы
Отправлено: bloodcry от Март 12, 2010, 07:42
Помогите разобраться.
Пытаюсь поворачивать матрицы вокруг определенного вектора, на определенный угол.
Вектор V (0.11841,-0.4581,-0.88097), угол а = 4 градуса;
исходная матрица
-0.1015837, -0.25132,-0.96256,0
0.6961, -0.7092, 0.1171,0
-0.71072,-0.6587,0.24699,0
0,0,0,1
1. с помощь QMatrix4x4.rotate
-0.16599, -0.2257,-0.96,0
0.6822,-0.729,0.05885,0
-0.712,-0.64,0.27499,0
0,0,0,1
2. c помощью glRotate
-0.08154, -0.3154,-0.9451,0
0.695844, -0.69715, 0.17795,0
-0.71354,0.6438, 0.276,0
0,0,0,1
Теперь вопрос , это что разные фунции? чем они отличаются? И как правильно повернуть матрицу вокруг вектора на определенный угол


Название: Re: Поворот матрицы
Отправлено: Igors от Март 12, 2010, 13:27
- Ничего не слышал о классе QMatrix4x4 поэтому не могу судить что и как он делает

- "повернуть матрицу вокруг вектора на определенный угол" в действительности это означает: построить еще одну матрицу (которая никак не зависит от исходной а только от оси поворота и угла) и затем исходную помножить на нее. Это соответствует последовательным поворотам объекта в пространстве. Не путать это с локальным поворотом (вокруг одной из осей исходной матрицы).

- Для начала неплохо разобраться как записаны оси в обоих случаях. Сделайте исходную identity матрицу (единички по диагонали) и поверните ее напр. на угол 30 градусов (cos = 0.866, sin = 0.5) вокруг оси y (0, 1, 0). Так Вы увидите что и как каждая ф-ция крутит.