Иванов В.П., Батраков A.C. - Трехмерная компьютерная графика / Под ред. Г.М. Полищука. стр.49

В случае, когда объект и приемник света заданы в экранной системе координат, наиболее пригодным является следующийхорошо известный подход: C*B,yB,zB): z£ < z Vn.

6-984

Таким образом, формальными методами возможно определение точек пересечения светового луча с любой пространственной комбинацией примитивов. Определение ближайшей (видимой) точки может достигаться с использованием различных критериев, выбор которых зависит от смысла прикладной задачи.

3.3.3. ОПРЕДЕЛЕНИЕ ЗАТЕНЕННЫХ ТОЧЕК

Множество точек объекта, видимых множеством рецепторов, качественно различается между собой. Одни точки освещаются прямыми лучами света, другие — находятся в тени. Алгоритм вычисления освещенности для этих групп точек существенно различается, поэтому предварительно следует установить признак освещенности — затененности для каждой видимой точки. Идея решения определяется очевидным фактом: видимая точка находится "на свету", если она не загораживается от источника другими поверхностями, или, другими словами, эта точка является ближайшей к источнику света среди всех остальных, лежащих на световом луче [73].

Иванов В.П., Батраков A.C. - Трехмерная компьютерная графика / Под ред. Г.М. Полищука.

Рис. 3.3.2. Определение факта затененности точки

На рис.3.3.2 показана видимая точка (XB,Yfi,ZB) из ij-ro

рецептора. Для определения ее затененности необходимо провестисветовой луч из источника света (X,Y,Z) на видимую точку (X-

XJ/(X -XJ=(Y-YJ/(Y -YJ=(Z-Zn)/(Z -ZJ и найти точки В"v sun В7 v В"v sun В7 v В7/ v sun В7

пересечения этой прямой со всеми поверхностями, входящими в состав объекта. Так как объект состоит из примитивов, сложно комбинирующихся между собой, то на первом этапе следует определить пересечения луча с поверхностью каждого примитива. Если примитив содержит К поверхностей вида ^(Х,У,Х) = 0, где к=1(1)К, то необходимо К раз решить систему вида:

Иванов В.П., Батраков A.C. - Трехмерная компьютерная графика / Под ред. Г.М. Полищука.

Среди множества точек-решений отбирают действительные, а затем среди последних — ближайшую точку к точечному источнику и одновременно лежащую на поверхности объекта.

Заметим, что алгоритм определения факта затененности совершенно идентичен алгоритму определения видимости, но в последнем необходимо поменять точку центра проектирования на точку источника излучения, а точку центра рецептора на видимую точку. Если результатом работы алгоритма являются координаты видимой точки (т.е. ближайшей к центру проекции), то результатом работы алгоритма затененности являются координаты точки, ближайшей к источнику света.

Очевидно, что если видимая из рецептора точка (Х^У^Х^)

является ближайшей (Хг ,УГ ) к источнику света, то

4 Бздп' ББип' Бвшг 3

она освещена прямыми лучами, т.е. точка (Х^У^^^) освещена,

если [Хи У- ЪЛ = [X,, У_ \. 1 В В В1 1 ББип Б8шг Бятл

Когда же видимая рецептором точка не является ближайшей к источнику света, то она затенена, т.е. (Х^9У^2^) затенена, если

[Х_ Уи ги] ф У_ Ъ~ ].

1 В В В1 1 Бвип Бвип Бвип1

Проведя подобный комплекс вычислений для всех 1x1

рецепторов, удается получить информацию о координатах (Хв,Ув,2в)у видимой из каждого рецептора точки, о номерепримитива, номере функции поверхности, которой видимая точка принадлежит, и признак затененности-освещенности.


⇐ Предыдущая страница| |Следующая страница ⇒