3.3.3. ОПРЕДЕЛЕНИЕ ЗАТЕНЕННЫХ ТОЧЕКМножество точек объекта, видимых множеством рецепторов, качественно различается между собой. Одни точки освещаются прямыми лучами света, другие – находятся в тени. Алгоритм вычисления освещенности для этих групп точек существенно различается, поэтому предварительно следует установить признак освещенности – затененности для каждой видимой точки. Идея решения определяется очевидным фактом: видимая точка находится "на свету", если она не загораживается от источника другими поверхностями, или, другими словами, эта точка является ближайшей к источнику света среди всех остальных, лежащих на световом луче [73]. На рис. 3.3.2 показана видимая точка из -го рецептора. Для определения ее затененности необходимо провести световой луч из источника света на видимую точку и найти точки пересечения этой прямой со всеми поверхностями, входящими в состав объекта. Так как объект состоит из примитивов, сложно комбинирующихся между собой, то на первом этапе следует определить пересечения луча с поверхностью каждого примитива. Если примитив содержит поверхностей вида , где , то необходимо раз решить систему вида: Рис. 3.3.2. Определение факта затененности точки Среди множества точек-решений отбирают действительные, а затем среди последних – ближайшую точку к точечному источнику и одновременно лежащую на поверхности объекта. Заметим, что алгоритм определения факта затененности совершенно идентичен алгоритму определения видимости, но в последнем необходимо поменять точку центра проектирования на точку источника излучения, а точку центра рецептора на видимую точку. Если результатом работы алгоритма являются координаты видимой точки (т.е. ближайшей к центру проекции), то результатом работы алгоритма затененности являются координаты точки, ближайшей к источнику света. Очевидно, что если видимая из рецептора точка является ближайшей к источнику света, то она освещена прямыми лучами, т.е. точка освещена, если . Когда же видимая рецептором точка не является ближайшей к источнику света, то она затенена, т.е. затенена, если . Проведя подобный комплекс вычислений для всех рецепторов, удается получить информацию о координатах видимой из каждого рецептора точки, о номере примитива, номере функции поверхности, которой видимая точка принадлежит, и признак затененности-освещенности. Заметим, что при неизменном ракурсе и вариации положения источника света нет необходимости каждый раз вновь определять видимые точки. Координаты видимых точек в этом случае остаются неизменными, изменяется только факт их затенения-освещения.
|