Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уланов.docx
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
3.96 Mб
Скачать

Билет №17

  1. Триангуляция полигона.

Триангуляция полигона - декомпозиция многоугольника на множество треугольников, внутренние области которых попарно не пересекаются и объединение которых в совокупности составляет . В строгом смысле слова, вершины этих треугольников должны совпадать с вершинами исходного многоугольника. Триангуляция любого многоугольника не единственна.

Теорема (О существовании триангуляции многоугольника):

У любого простого n-вершинного многоугольника P всегда существует триангуляция, причём количество треугольников в ней n-2 независимо от самой триангуляции.

Рассмотрим наиболее распространенные алгоритмы триангуляции полигонов. Простейшее решение задачи триангуляции состоит в расщеплении полигона вдоль некоторой хорды на два полигона и в дальнейшем рекурсивном разбиении их до ситуации, когда подлежащий триангуляции полигон является треугольником. Данный способ применим лишь для триангуляции выпуклых полигонов. Выпуклым считается полигон, если отрезок прямой, соединяющий любые его две точки, полностью лежит во внутренней области.

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

Приведем универсальный алгоритм. Триангуляцию любого полигона можно осуществить по следующему универсальному алгоритму. Выбирается крайняя левая вершина и между двумя ее смежными сторонами проводится диагональ. При этом могут иметь место следующие два случая: - диагональ является хордой;

- диагональ - не хорда, так как внутрь треугольника попадает вершина полигона (в общем случае их может быть несколько).

Из всех вершин внутри треугольника вершина d наиболее удалена от стороны ас. Эту вершину будем называть вторгающейся. В случае, когда вторгающейся вершины нет, то полученный треугольник заносят в сетку треугольников, и алгоритм рекурсивно обрабатывает оставшийся полигон до тех пор, пока он не выродится в треугольник. При обнаружении вторгающейся вершины проводится диагональ из текущей до вторгающейся вершины. Полученные полигоны рекурсивно обрабатываются до получения треугольников.

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

При триангуляции в качестве исходных данных наиболее часто задаются вершины полигона. Задача состоит в том, чтобы представить этот полигон совокупностью составных непересекающихся треугольников.

  1. Точечные поверхности. Метод z-буфера.

Метод Z-буфера основывается на использовании дополнительного массива, буфера в памяти, в котором сохраняются координаты точек Z для каждого пиксела растра. Координата Z соответствует расстоянию точек пространственных объектов до плоскости проецирования. Например, она может быть экранной координатой Z в системе экранных координат (X, Y, Z), если ось Z перпендикулярна плоскости экрана.

Рассмотрим алгоритм рисования объектов по этому методу.

Пусть чем ближе точка в пространстве к плоскости проецирования, тем больше значение Z:

● сначала Z-буфер заполняется минимальными значениями;

● затем начинается вывод всех объектов, причем порядок вывода объектов не имеет значения – для каждого объекта выводятся все его пикселы в любом порядке;

● во время вывода каждого пиксела по его координатам (X, Y) находится текущее значение Z в Z-буфере;

● если рисуемый пиксел имеет большее значение Z, чем значение в Z-буфере, то, следовательно, эта точка ближе к наблюдателю. В этом случае пиксел действительно рисуется, а его

Z-координата записывается в Z-буфер.

Таким образом, после рисования всех пикселов всех объектов растровое изображение будет состоять из пикселов, которые соответствуют точкам объектов с самыми большими значениями координат Z, т.е. видимые точки ближе всех к зрителю.

Этот метод прост и эффективен благодаря тому, что не требует сортировки объектов или их точек. При рисовании объектов, которые описываются многогранниками или полигональными сетками, манипуляции со значениями Z-буфера легко совместить с выводом пикселов заполнения полигонов плоских граней. В настоящее время метод Z-буфера используется во многих графических 3d-акселераторах, которые аппаратно реализуют этот метод. Оптимально, если акселератор имеет собственную память для Z-буфера, доступ к которой осуществляется быстрее, чем к оперативной памяти компьютера. Возможности аппаратной реализации используются разработчиками и пользователями компьютерной анимации, позволяя достичь большой скорости прорисовки кадров.

Билет №18

  1. Кинематические поверхности.

  1. Логическое конструирование 3d- объектов.

Билет №19

  1. Плоское отсечение полигона.

  1. Сплайновые кривые.

Сплайнами называют линии, соединяющие контрольные точки (вершины) и изгибающиеся в них под заданным углом. Сплайн составляют два элемента:

- вершина (vertex) - точка, имеющая определенное XYZ-координатами положение в пространстве ;

- сегмент (segment) - линия, соединяющая две соседние вершины.

Настраивая положение каждой точки, вы изменяете и соединяющие их кривые, а соответственно и форму всего сплайна.

Сегменты, соединяющие вершины, могут иметь разный вид: прямые или изогнутые, с острыми углами или интерполированные, проходящие через контрольные вершины или лежащие рядом с ними. В зависимости от типа применяемых сегментов различают пять видов сплайнов: Linear (Линейный); Cubic (Кубический); Akima (Акима); B-Spline (В-сплайн); Bezier (Безье).

Кубический сплайн - сегменты, соединяющие вершины, являются криволинейными. При этом кривые могут сильно отходить от прямолинейного пути между вершинами, то есть иметь отклонение. Благодаря отклонениям сплайн выглядит более гладким.

Сплайн Акима - в отличие от кубического сплайна, сплайн Акима не имеет отклонений, и интерполированная кривая всегда точно проходит через вершины близко к прямолинейному пути. Это делает ее более точной, но более резкой и ломаной.

В-сплайн - в этом сплайне получаются наиболее гладкие кривые, однако они не проходят непосредственно через вершины, а лишь направляются ими. Чем ближе вершина расположена к кривой, тем большее влияние она на нее оказывает.

Сплайн Безье - образует плавную кривую с большими возможностями управления ее кривизной. При создании вершины или ее выделении появляются ручки управления. Изменяя их длины, вы можете настраивать радиус кривизны сегмента в этой вершине, а изменяя направление - определять касательную к кривой в этой точке, то есть направление кривизны.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]