Точка Р переходит в точку 0 в плоскости вращения Окончательным результатом является матрица

Рис. 5.29. Точка Р переходит в точку 0 в плоскости вращения Окончательным результатом является матрица

(5.33)

где с - соэ(Р), 5 = этф), а (их, иу, иг) - компоненты единичного вектора и. Эта матрица кажется более сложной, чем она есть на самом деле. В действительности, как мы увидим позже, структура элементов этой матрицы позволяет для любой заданной матрицы поворота определить ось и угол, которые обеспечивают требуемый поворот (что доказывает теорему Эйлера).

5.3. Трехмерные аффинные преобразования В дальнейшем мы также узнаем, что в OpenGL имеется функция для осуществления поворота вокруг произвольной оси"images/tmp8E4A-307.png">

Определитель этой матрицы, как и следовало ожидать, равен единице. На рис. 5.30 показан базовый сарай, смещенный относительно начала координат, до поворота (ближняя фигура), после поворота на 22,5° (средняя) и после поворота на 45° (дальняя).

Базовый сарай, поворачивающийся вокруг оси и

Рис. 5.30. Базовый сарай, поворачивающийся вокруг оси и Определение оси и угла поворота Согласно теореме Эйлера любой поворот эквивалентен повороту вокруг некоторой оси на некоторый угол. Если поворот задан с помощью матрицы, часто бывает полезно определить характерные для данного поворота ось и угол. Попытаемся извлечь из элементов тп~ матрицы поворота

характерные угол В и орт и. Это удивительно легко сделать, если обратиться к уравнению (5.33) [Watt, 138]. Заметим, что след (trace) матрицы Яи(В), что в данном случае означает сумму трех элементов ее главной диагонали, равен Зс + (1 - с)(и2х + и2+ и\) = 1 + 2cos(B). Выразим отсюда cos(B)"opengl1_328.html">⇐ Предыдущая| |Следующая ⇒