3.3.2. ПЕРЕСЕЧЕНИЯ СВЕТОВОГО ЛУЧА С КОМБИНАЦИЕЙ ПРИМИТИВОВПосле того как задача определения точек пересечений решена для всех примитивов, входящих в состав объекта, необходимо выделить среди всей этой совокупности точку, ближайшую к наблюдателю, т.е. видимую. Однако формально ближайшая точка может не принадлежать поверхности объекта, как это бывает, например, для ближних к наблюдателю вычитающихся примитивов. Для каждого -го примитива ранее были составлены матрицы: – координат пересечения луча с примитивом и матрица – указателей номеров поверхностей внутри примитива, которым принадлежат соответствующие точки пересечения из . Сведем все матриц и матриц соответственно в общие для всего объекта блочные матрицы и . Матрица представляет собой матрицу-столбец, первый элемент которой есть матрица , -й – , а последний – . Матрица имеет следующую структуру: . В общем случае размерность матрицы составляет , матрицы – . В каждой строке первое число указывает номер поверхности, второе – номер примитива для точки, координаты которой помещены в одноименной строке . Переформируем так, чтобы в первой ее строке помещалась ближайшая к источнику луча точка, остальные же точки могут произвольно располагаться на более низких позициях. Соответственно и в том же порядке переставим строки матрицы , получим новую матрицу . Это необходимо для того, чтобы не потерять связь между точкой и конкретной поверхностью. Теперь после выделения ближайшей точки следует убедиться в том, что она принадлежит поверхности объекта. Для этого необходимо оценить положение точки по отношению к каждому примитиву, входящему в состав объекта, а затем, пользуясь формальными правилами (табл. 3.2.1), установить относительное положение точки и объекта. Положение точки и каждого примитива определяется функцией принадлежности , вычисляемой в соответствии с правилами §3.2.4. Положение точки и объекта устанавливают путем попарной подстановки значений , , в формализованное описание (3.2.2) и (3.2.3) для объекта. Преобразования значений функции принадлежности над парами примитивов приведены в табл. 3.2.1. Например, пусть объект составлен из примитивов (рис. 3.3.1). Световой луч пересекает эту комбинацию в точках 1-6. Ближайшей к источнику луча будет точка 1. Функции принадлежности этой точки и примитивов принимают значения ; ; ; тогда , . Таким образом, точка 1, будучи ближайшей к источнику луча, не является видимой, так как находится вне объекта. Рис. 3.3.1. Пересечение светового луча со сложной комбинацией примитивов В случае, если ближайшая точка не лежит на поверхности объекта, как это случилось в приведенном примере, ее следует устранить из дальнейшего анализа, а среди оставшихся точек-пересечений вновь выделить ближайшую и вновь проверить ее на принадлежность объекту. Этот процесс следует продолжать либо до исчерпания всех точек, либо до нахождения как очередной ближайшей, так и одновременно принадлежащей объекту точки. В первом случае констатируется факт непересечения луча и объекта, во втором – осуществляется определение координат видимой точки . Так как одновременно с каждым переформированием однотипно переформировывалась , то номера поверхности и примитива для видимой точки прочитываются соответственно из первого и второго столбца первой строки . В описанной процедуре используется алгоритм поиска ближайшей точки к некоторой другой точке среди множества точек , , которые все принадлежат одной прямой – световому лучу. В том случае, если объект и прямая заданы в объектной системе координат, то наиболее общим критерием ближайшей точки является следующий: . В частных прикладных задачах критерий может быть упрощен до следующего вида: : , или : , или : . Применение последних трех правил оправдано только в том случае, когда априорно известна непараллельность любого светового луча плоскостям . Так, например, целесообразно использование последнего критерия при моделировании аэросъемки. В этом случае ни один трассирующий луч не параллелен плоскости Земли на пути камера – объект и Солнце – объект. В случае, когда объект и приемник света заданы в экранной системе координат, наиболее пригодным является следующий хорошо известный подход: . Таким образом, формальными методами возможно определение точек пересечения светового луча с любой пространственной комбинацией примитивов. Определение ближайшей (видимой) точки может достигаться с использованием различных критериев, выбор которых зависит от смысла прикладной задачи.
|