
ALL
.pdfТРЕХМЕРНОЕ ОТСЕЧЕНИЕ ТОЧЕК И ЛИНИЙ
•Если линии не дают положительного ответа при двух указанных проверках, далее анализируется уравнение линии, на основе чего определяется, нужно ли сохранить какойлибо фрагмент данной линии.
•Уравнения трехмерных отрезков удобно выразить в параметрической форме, а методы отсечения Кируса-Бека или Лианга-Барски можно расширить на трехмерные сцены. Для отрезка с концами P1 = (xh1; yh1; zh1; h1) и P2 = (xh2; yh2; zh2; h2), можно записать следующее параметрическое уравнение, описывающее любую точку отрезка:
• P = P1 + (P2 - P1)u |
0 u 1: |
•Если значение параметра отрезка равно u = 0, имеем точку P1. Значение u = 1 соответствует другому концу отрезка P2. Расписывая параметрическое уравнение отрезка явно через однородные координаты, получаем
•xh = xh1 + (xh2 - xh1)u;
• yh = yh1 + (yh2 - yh1)u; |
0 u 1; |
•zh = zh1 + (zh2 - zh1)u;
•h = h1 + (h2 - h1)u:
•Используя коды области конечных точек отрезка, можно вначале определить, какие отсекающие плоскости он пересекает. Если код одного конца имеет значение 0 в определенном разряде, а код другого конца имеет в том же разряде значение 1, то линия пересекает соответствующую плоскость отсечения.
•Другими словами, одна из проверок (7.47) дает отрицательное значение, тогда как та же проверка для другого конца дает неотрицательное значение. Чтобы найти точку пересечения с этой плоскостью отсечения, вначале используем подходящие уравнения, чтобы определить соответствующее значение параметра u. Затем вычисляются координаты точки пересечения.
ТРЕХМЕРНОЕ ОТСЕЧЕНИЕ ТОЧЕК И ЛИНИЙ
•Т.е. одна из проверок дает отрицательное значение, тогда как та же проверка для другого конца дает неотрицательное значение. Чтобы найти точку пересечения с этой плоскостью отсечения, вначале используем подходящие уравнения из (7.49), чтобы определить соответствующее значение параметра u. Затем вычисляются координаты точки пересечения.
•В качестве примера расчета точки пересечения рассмотрим отрезок P1P2 на рис. 7.58. Данная линия пересекает правую плоскость отсечения, которую можно описать уравнением xmax = 1. Следовательно, чтобы определить значение параметра u в точке пересечения, нужно положить координату x-й проекции равной 1:
•xp = xh/h = xh1 + ((xh2 .. xh1)u)/9h1 + (h2 - h1)u) = 1:
•Вычисляя отсюда параметр u, получим:
•u = (xh1 - h1)/((xh1 - h1) - (xh2 - h2))
•Далее определяем значения yp и zp на этой плоскости отсечения, используя рассчитанное значение u. В нашем случае значения yp и zp принадлежат границам 1 объема наблюдения, и линия не пересекает внутреннюю часть объема наблюдения. Т.е., целью обработки является локализация точки пересечения с верхней плоскостью отсечения. Соответствующие расчеты завершают обработку этого отрезка, поскольку точка пересечения с верхней и правой плоскостями отсечения определяет часть отрезка, находящуюся внутри объема наблюдения, и все фрагменты отрезка, расположенные вне объема наблюдения.
•Когда линия пересекает границу отсечения, но не входит во внутреннюю часть объема наблюдения, обработка отрезка продолжается, как и в соответствующем двухмерном алгоритме. Участок линии, расположенный вне этой границы отсечения, удаляется, и для части отрезка, находящейся внутри этой границы, обновляется информация по кодам области и значения параметра u. Затем проверяются оставшиеся участки линии с другими плоскостями отсечения на предмет возможного отклонения отрезка или поиска точки пересечения.

ТРЕХМЕРНОЕ ОТСЕЧЕНИЕ МНОГОУГОЛЬНИКОВ
•В графических пакетах обычно обрабатываются только сцены, содержащие графические объекты. Так называются объекты, границы которых описываются линейными уравнениям, так что каждый объект составлен из наборов многоугольных поверхностей. Следовательно, чтобы выполнить отсечение объектов на трехмерной сцене, процедуры отсечения применяются к многоугольным поверхностям. На рис. 7.59, например, подсвечены участки поверхности пирамиды, которые будут отрезаны, а пунктиром показаны участки многоугольных поверхностей, принадлежащие объему наблюдения.
Рис. 7.59. Трехмерное отсечение объектов. Участки поверхности, лежащие внутри плоскостей отсечения объема наблюдения, удаляются из описания объекта, при этом, возможно, потребуется построить новые грани
•Вначале многогранник можно проверить на тривиальное принятие или отклонение, используя его координатные границы, ограничивающую сферу или какую-то другую меру его координатных границ.
ТРЕХМЕРНОЕ ОТСЕЧЕНИЕ МНОГОУГОЛЬНИКОВ
•Если координатные границы объекта принадлежат всем границам отсечения, объект записывается целиком.
•Если все координатные границы лежат за любой из границ отсечения, весь объект удаляется
•Когда объект нельзя принять или отбросить целиком, можно обработать списки вершин набора многоугольников, определяющего поверхности объекта.
•Применяя методы, подобные описанным для двухмерного отсечения многоугольников, можно отсекать стороны, формируя новые списки вершин поверхностей объекта.
•Возможно, также придется создать несколько новых списков вершин для дополнительных поверхностей, возникших в результате операций отсечения.
•Кроме того, таблицы многоугольников обновляются, чтобы включить в них новые многоугольные поверхности и проверить информацию о связности и общих сторонах поверхностей.
•Чтобы упростить отсечение произвольных многогранников, многоугольные поверхности часто делятся на треугольные участки и описываются треугольными фрагментами. В таком случае для отсечения можно использовать подход Сазерленда Ходгмана. Каждая полоса из треугольников обрабатывается последовательно шестью плоскостями отсечения, и на выходе получается конечный список вершин полосы.
•Для вогнутых многоугольников можно применить методы расщепления (раздел 3.15) и получить, например, набор треугольников, а затем выполнить их отсечение. Как вариант, обработку вогнутых трехмерных многоугольников можно проводить с помощью алгоритма УэйлераАзертона, описанного в разделе 6.8.
ТРЕХМЕРНОЕ ОТСЕЧЕНИЕ КРИВЫХ
•Как и при отсечении многогранников, вначале проверяется, не принадлежат ли координатные границы криволинейного объекта (например, сферы или сплайновой поверхности) полностью объему наблюдения.
•Затем можно проверить, лежит ли объект полностью за одной из шести плоскостей отсечения.
•Если тривиально принять (отвергнуть) не удалось, нужно найти точки пересечения объекта с плоскостями отсечения.
•Для этого решается система уравнений поверхности и уравнения плоскости отсечения.
•По этой причине большинство графических пакетов не содержит процедур отсечения криволинейных объектов.
•Вместо этого криволинейные поверхности аппроксимируются набором многоугольных участков, а затем выполняется отсечение объекта с использованием процедур отсечения многоугольников.
•При применении процедур визуализации поверхностей к многоугольным участкам можно получить высокореалистичные изображения криволинейной поверхности.

ПРОИЗВОЛЬНЫЕ ПЛОСКОСТИ ОТСЕЧЕНИЯ
•В некоторых графических пакетах для отсечения трехмерной сцены можно использовать дополнительные плоскости, которые могут иметь любую пространственную ориентацию. Данная возможность полезна во многих приложениях. Например, может потребоваться изолировать или вырезать объект неправильной формы, для создания спецэффекта удалить часть сцены под непрямым углом или вырезать фрагмент объекта по заданным осям, чтобы показать его внутреннее строение.
•Вместе с описанием сцены можно задать дополнительные плоскости отсечения, чтобы до преобразования проектирования можно было выполнить операции отсечения. Впрочем, это также означает, что процедуры отсечения реализованы на программном уровне.
•Плоскость отсечения можно задать параметрами плоскости A, B, C и D. Затем плоскость делит пространство на две части, и все части сцены, которые лежат с одной стороны плоскости, удаляются. Предположим, что отсекаются объекты за плоскостью, тогда со сцены удаляется любая точка (x, y, z), удовлетворяющая следующему неравенству:
•Ax + By + Cz + D < 0 (7.52)
Рис. 7.60. Отсечение отрезка плоскостью с вектором нормали N

ПРОИЗВОЛЬНЫЕ ПЛОСКОСТИ ОТСЕЧЕНИЯ
•В качестве примера рассмотрим массив параметров плоскости (A;B;C;D) = (1,0; 0,0; 0, 0; 8,0). В этом случае любая точка, удовлетворяющая условию x+8, 0 < 0,0 (или x < -8,0), удаляется со сцены.
•Чтобы усечь отрезок, вначале проверяются два его конца может, он полностью лежит за плоскостью или перед ней. Неравенство можно представить в векторной форме, используя вектор нормали N = (A;B;C).
•Получив отрезок с концами P1 и P2, его можно полностью отбросить, если для обоих концов справедливо условие:
•N P k + D < 0; k = 1; 2: (7.53)
•Вся линия сохраняется, если оба ее конца удовлетворяют условию
• N P k + D 0; k = 1; 2: (7.54)
•В противном случае концы отрезка лежат по разные стороны плоскости отсечения, как показано на рис. 7.60, и нужно вычислять точку пересечения.
•Чтобы вычислить точку пересечения линии с плоскостью
•отсечения, можно использовать следующее
•параметрическое представление отрезка:
• P = P1 + (P2 - P1)u; |
0 u 1: (7.55) |
•Точка P находится на плоскости отсечения, если она
•удовлетворяет уравнению плоскости:
•N P + D = 0: (7.56)
Рис. 7.61. Отсечение поверхностей пирамиды плоскостью с вектором нормали N.
ПРОИЗВОЛЬНЫЕ ПЛОСКОСТИ ОТСЕЧЕНИЯ
•Поверхности перед плоскостью сохраняются, а за ней удаляются
•Подставляя выражение для P из формулы (7.55), получаем
•N [P1 + (P2 - P1)u] + D = 0: (7.57)
•Находя из этого уравнения параметр u, получаем
•u = ( -.D - N P1)/(N (P2 - P1)
•Далее это значение u подставляется в векторное параметрическое представление линии (7.55), и получаются координаты x, y и z точки пересечения. Для примера, показанного на рис. 7.60, участок линии от P1 to P отсекается и сохраняется фрагмент от P до P2.
•К многограннику, например, пирамиде, показанной на рис. 7.61, применяются сходные процедуры отсечения. Вначале проверяется, лежит ли объект полностью за или перед плоскостью отсечения. Если нет, для каждой поверхности многоугольника обрабатывается список вершин. К каждой стороне многоугольника последовательно применяются методы отсечения линий, и в результате получаются списки вершин поверхностей. В рассмотренном выше случае такая операция выполнялась только для одной плоскости отсечения.
РЕЗЮМЕ
•Процедуры наблюдения для трехмерных сцен имеют ту же структуру, что и при двухмерном наблюдении.
–Вначале создается сцена во внешних координатах (либо по определениям объектов в модельных координатах, либо сцена строится непосредственно во внешней системе координат).
–Затем задается система наблюдения, и описания объектов переводятся из внешних координат в координаты наблюдения.
–После этого описания объектов обрабатываются различными процедурами и в конечном итоге переводятся в координаты устройства.
•В отличие от двухмерного при трехмерном наблюдении требуются
–процедуры проектирования для преобразования описаний объектов на плоскость наблюдения (плоскость проекции) перед преобразованием в координаты устройства.
–Кроме того, в операциях трехмерного наблюдения фигурирует больше пространственных параметров, для описания которых можно использовать аналогию с камерой.
•Система наблюдения задается центром проекции (положение камеры), вектором нормали к плоскости наблюдения N (направление линз камеры) и вектором верха V (верх камеры). Положение плоскости наблюдения устанавливается вдоль оси z системы наблюдения, и описания объектов проектируются на эту плоскость. Для перевода описаний объектов на плоскость наблюдения можно использовать методы параллельного или перспективного проектирования.
РЕЗЮМЕ
•Параллельные проекции бывают ортографическими или косоугольными, и их можно задавать вектором проекции. Ортографические параллельные проекции, на которых наблюдается несколько граней объекта, называются аксонометрическими. Чтобы получить изометрическое изображение объекта, используется аксонометрическая проекция, которая представляет с одинаковой перспективой все главные оси.
•Широко используемыми косоугольными проекциями являются косоаксонометрическая и кабинетная проекции.
•Перспективные проекции объектов получаются с помощью линий проекции, которые сходятся в центр проекции.
•В параллельных проекциях сохраняются пропорции объектов, а перспективные проекции уменьшают размер удаленных объектов.
•При перспективном проектировании кажется, что параллельные линии сходятся в точку схождения, при условии, что линии не параллельны плоскости наблюдения. Можно получать инженерные и архитектурные изображения с одно-, двухили трехточечными перспективными проекциями в зависимости от числа главных осей, которые пересекает плоскость наблюдения.
•Косоугольная перспективная проекция получается тогда, когда линия, соединяющая центр проекции с центром отсекающего окна, не перпендикулярна плоскости наблюдения.