8. алгоритмы визуализации: отсечения, развертки, удаления невидимых линий и поверхностей, закраски
Созданную 3D модель поверхности или тела необходимо визуализировать – вывести на экран. При визуализации трехмерные объекты проецируются на плоскость, поэтому любая визуализация, в конечном счете, сводится к построению тех или иных проекций.
Все проекции делятся на два вида – центральные и параллельные (Рис. 8.1).

Рис. 8.1 – Центральная (а) и параллельная (б) проекции.
У центральных проекций имеется точка наблюдения, в которой сходятся лучи, строящие проекцию. У параллельной проекции точка наблюдения вынесена в бесконечность. При центральной (перспективной) проекции изображение более близко к тому, которое образуется на сетчатке глаза, поэтому оно кажется более реалистичным. Однако центральные проекции искажают размеры объекта, поэтому их применение недопустимо в конструкторской документации.
Параллельные проекции любой точки объемного тела получаются очевидным образом путем построения перпендикуляра к проекционной плоскости, проходящего через заданную точку тела. Центральные проекции точек можно получить матричным методом при помощи перемножения соответствующих матриц преобразования.
Поскольку тела состоят в общем случае из плавных кривых, необходимо иметь способ построения проекций не просто отдельных точек, но и произвольных кривых линий. Для получения проекционного изображения кривой используется понятие полигона кривой – ломаной линии, состоящей из отрезков и аппроксимирующей заданную кривую (Рис. 8.2).

Рис. 8.2 – Полигон кривой.

Рис. 8.3 – Определение шага полигона.
Точки на полигоне идут с некоторым шагом, который зависит от принятой точности отображения d. Вычислим допустимый шаг точек полигона. Пусть кривая задана уравнением r(t). Точка t0 (Рис. 8.3) лежит на кривой и является одной из вершин полигона. Нужно найти точку, являющуюся следующей вершиной полигона, причем отклонение полигона от кривой не должно превышать d. Кривую в окрестностях точки t0 можно представить как сегмент окружности радиуса r:
|
|
(6) |
По теореме Пифагора длина хорды h, соединяющей точки t0 и t1, равна
|
|
(7) |
Поскольку величина h мала, можно считать, что длина хорды примерно равна длине дуги. Тогда приращение
с учетом (7) равно
|
|
(8) |
Если кривая резко меняет направление, может потребоваться заметное уменьшение величины
для соблюдения заданной точности отображения.
8.1. Полигональная визуализация и линии очерка
Чтобы изобразить проекцию целого тела, а не отдельной кривой, используют наборы полигонов, называемые сетками. Обычно при визуализации строятся полигоны границ тела и нескольких его характерных линий (Рис. 8.4).

Рис. 8.4 – Сетка визуализации тела.
Для повышения информативности и качества визуализации в сетку полигонов добавляют так называемые линии очерка (Рис. 8.5). Линия очерка отделяет видимую часть поверхности или грани от невидимой (при заданной точке зрения).

Рис. 8.5 – Линии очерка поверхности.
У одной поверхности может быть несколько линий очерка. Каждая линия очерка является либо замкнутой кривой, либо ее концы лежат на краях поверхности. При этом параллельные и центральные проекции линий очерка одного и того же тела могут заметно различаться (Рис. 8.6).


