Рассмотрим куб, центр которого находится в начале координат, а ребра параллельны осям системы координат, как показано на рис. 4.43,а. Сначала повернем его вокруг оси г на угол а таким образом, чтобы ориентация граней куба стала такой, как на рис. 4.43,6. Затем повернем куб на угол Р вокруг оси у, как показано на рис. 4.44. Последний поворот - на угол у вокруг оси х, как показано на рис. 4.45.

У У

4 А

Поворот куба вокруг оси г

Рис. 4.43. Поворот куба вокруг оси г: а - до поворота; б - после поворота Таким образом, матрица поворота вокруг произвольной оси получается в результате перемножения трех матриц: Несложный эксперимент должен убедить вас в том, что правильно подобрав значения углов а, Р и у, можно таким способом обеспечить поворот вокруг оси с любой ориентацией, хотя выбор углов - задача непростая, о чем будет рассказано в разделе 4.8.4.

Объекты и геометрические преобразования

Поворот куба вокруг оси х

Рис. 4.45. Поворот куба вокруг оси х

4.8.3. Преобразование экземпляра Рассмотренный пример с кубом, который можно ориентировать как угодно, подводит нас к обобщенному подходу, который можно использовать при моделировании объектов. Рассмотрим сцену, состоящую из множества простых объектов (рис. 4.46). Один из возможных вариантов формирования описания такой сцены- определить каждый объект сцены множеством вершин, учитывая его положение, размеры и ориентацию. Другой подход - сначала определить набор прототипов объектов сцены определенного фиксированного размера, положения и ориентации, причем прототипами могут быть как стандартные объекты (параллелепипед или сфера), так и более сложные - стол, стул и т.п. Каждый конкретный объект сцены - это экземпляр прототипа (instance) со своими размерами, положением и ориентацией в пространстве сцены. Размеры, положение и ориентация экземпляра задаются каноническими преобразованиями, которые в данном случае будем называть преобразованиями экземпляра (instance transformation). В результате описание сцены примет вид базы данных, опирающейся на список идентификаторов прототипов (например, 1 - куб, 2 - сфера и т.д.).


⇐ Предыдущая| |Следующая ⇒