Частный случай выпуклого полиэдра, базовый куб (generic cube), заслуживает особого внимания. Центр его расположен в начале координат, а углы лежат в точках (±1, ±1, ±1), где использованы все восемь комбинаций +1 и -1. Ребра базового куба направлены вдоль координатных осей, а шесть его граней лежат в плоскостях, которые показаны в табл. 14.1. Для упрощения визуализации базового куба каждой плоскости присвоено название согласно тому, как она видна из точки вида (0,0,10). В таблице приводится внешняя нормаль к каждой из плоскостей, а также характерная точка - пятно, лежащее на этой плоскости.

Таблица 14.1. Шесть плоскостей, определяющих базовый куб

Плоскость

Название

Уравнение

Внешняя нормаль

Пятно

Верхняя (top)

у=1

(0, 1, 0) (0,1, 0)

Нижняя (bottom)

у=-1

(0,-1, 0) (0,-1,0)

Правая (right)

х= 1

(1, 0, 0) (1, 0, 0)

Левая (left)

х=-1

(-1, 0, 0) (-1, 0, 0)

Передняя (front)

z= 1 (0, 0,1) (0, 0, 1)

Задняя (back)

z=-l (0,0,-1) (0, 0,-1)

14.6. Пересечение лучей с другими примитивами Базовый куб важен по следующим двум причинам: О С помощью аффинного преобразования базового куба может быть смоделировано и помещено на сцену большое количество разнообразных и интересных «блоков». Затем при трассировке лучей каждый луч может быть подвергнут обратному преобразованию в системе координат базового куба, поэтому мы можем использовать подпрограмму пересечения луча с базовым кубом (которую можно сделать весьма эффективной).

О Базовый куб можно использовать как экстент (extent) для других базовых примитивов в качестве ограничивающего параллелепипеда (bounding box): каждый базовый примитив, например цилиндр, прекрасно вписывается в такой куб. Как мы увидим позднее, часто весьма эффективно проверять пересечение луча с экстентом объекта перед тем, как выяснять соударение луча с самим объектом, особенно если подпрограмма пересечения луча с объектом является дорогостоящей с вычислительной точки зрения. Если луч проходит мимо экстента, то он обязательно пройдет и мимо объекта. Поэтому получить в свое распоряжение высокоэффективный алгоритм пересечения луча с базовым кубом - большое достижение.


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