14.9.6. Кластер точек для сферы При помощи списка вершин икосаэдра, приведенного в табл. 6.8, определите, как следует масштабировать этот икосаэдр, чтобы он плотно охватывал базовую сферу. (Достаточно ли для этого масштабного множителя / - 1,071?) Напишите для класса Sphere метод makeExtentPoi nts (Poi ntCl usterÄ clust). Задача решается при помощи трех двойных циклов for. Например, четыре вершины икосаэдра лежат в точках (0, ±/, ±/т), где т - 0,618034.

14.9.7. Подпрограммы для создания сферического и прямоугольного экстентов Напишите подпрограммы, которые по заданному кластеру точек строят соответственно сферический и прямоугольный экстенты:

void makeSphereExtent(PointCluster& clust.SphereInfo& sph) void makeBoxExtent(PointCluster& clust.Cuboid& cub),

14.9.2. Использование проекционных экстентов Существует другой тип экстентов, использование которого радикально увеличивает скорость трассировщика лучей. В отличие от прямоугольного и сферического экстентов, оперирующих в трехмерном пространстве, этот экстент представляет собой прямоугольную область на экране.

Проекционный экстент (projection extent) объекта - это выровненный прямоугольник на экране, который заключает в себе проекцию этого объекта, как показано на рис. 14.40, а. Более подробно проекционный экстент изображен на рис. 14.40, б. Проекционный экстент описывается четырьмя числами: {left, top, right, bottom}.

Проекционный экстент объекта

Рис. 14.40. Проекционный экстент объекта Проекционные экстенты очень легко использовать в процессе трассировки лучей. Каждый луч проходит через экран в месте пересечения некоторых строки и столбца; назовем эту точку (г, с). Если точка (г, с) лежит вне проекционного экстента объекта, то у луча нет возможности пересечься с таким объектом. Если в примере на рис. 14.40, б столбец с меньше 244 или больше 296 или если строка г меньше 237 или больше 319, то луч определенно пройдет мимо объекта.

Поскольку проекционные экстенты в конечном счете связаны с геометрией камеры и положением глаза, то их можно использовать только для «лучей глаза» - то есть лучей, испускаемых из глаза.


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