Вычисление проекционных экстентов Па этапе предварительной подготовки для каждого объекта сцены необходимо вычислить проекционный экстент. Этот экстент легко вычисляется по заданному кластеру точек объекта. Кластер точек базового объекта переводится в мировые координаты с помощью преобразования, соответствующего этому объекту, - так же, как это делалось для сферического и прямоугольного экстентов, в результате чего этот кластер становится «облаком» точекр[0],/?[1],…, размещенных па сцепе. IIa рис. 14.41 показано 12 точек кластера для преобразованного цилиндра.
Теперь каждая из точек p[i\ проецируется на ближнюю плоскость камеры. Для любой точки /; па сцене можно найти ее проекцию р' с помощью вычислений, основанных на положении точки /; и reo-
Введение в трассировку лучей
метрии камеры. Спроецированная точка р' связана с определенными строкой г и столбцом с. (Выражение для этой связи выводится в упражнениях в конце раздела.) В результате точка р проецируется в пиксел с координатами (г, с), где
(14.41)
![](/books/images/tmp8E4A-938.png)
(Перед записью выражений в правой части соответственно в г и с их необходимо округлить до целого.) Здесь Ри, Pv, Рп являются скалярными произведениями с осями камеры u, v, п:
Pu"iP- eye) и;
масла для двигателя ваз 21150.
Pv = {p-eye)-v; (14.42) P„~(P- eye) п.
Таким способом проецируется каждая точка массива p[i], и для нее вычисляется пара чисел (гр е.). Затем по списку (г(1 с.) определяются наименьшие и наибольшие значения г и с, которые после нахождения записываются в структуру данных проекционного экстента {left, top, right, bottom).
![Построение проекционного экстента](/books/images/tmp8E4A-939.png)
Рис. 14.41. Построение проекционного экстента На рис. 14.42 показана сцена, полученная трассировкой лучей, причем на каждый объект наложен его проекционный экстент. (Некоторым программистам нравится в целях отладки рисовать проекционные экстенты каждого объекта перед тем, как начать трассировку лучей. Во время закраски пикселов окончательными цветами при трассировке лучей эти прямоугольники исчезают.)
![Сцена, полученная трассировкой лучей, с видимыми проекционными экстентами](/books/images/tmp8E4A-940.png)
Рис. 14.42. Сцена, полученная трассировкой лучей, с видимыми проекционными экстентами