Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Локализация точки / Локализация точки.doc
Скачиваний:
94
Добавлен:
01.05.2014
Размер:
16.82 Mб
Скачать
    1. Метод детализации триангуляции

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

      1. Триангуляция с ограничениями

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

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

Определение. Пусть задан ППЛГ . Триангуляцией с ограничениями, называется такая триангуляция множества точек, что все ребра множестватакже являются ребрами триангуляции.

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

Цель состоит в том, чтобы эффективно выполнить разбиение Rect() на

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

Определение. Многоугольник называется монотонным относительно некоторой прямой, если он простой и его граница является объединением двух цепей, монотонных относительно прямой.

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

  1. Никакие два ребра не пересекаются (за исключением, возможно в вершинах).

  2. Каждая вершина (за исключением вершины с наибольшим значением ординаты) непосредственно соединена, по крайней мере, с одной вершиной имеющей большую ординату.

  3. Каждая вершина (за исключением вершины с наименьшим значением ординаты) непосредственно соединена, по крайней мере, с одной вершиной имеющей меньшую ординату.

Каждая область планарного графа, полученная в результате применения процедуры регуляризации, является монотонным многоугольником [Чен].

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

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

//- последовательность вершин, упорядоченная по убыванию ординат.

ProcedureТриангуляцияМонотонногоМногоугольника

Begin

STACK.push();

STACK.push();

i = 3;

while (i <=)do

begin

//Допустим, что STACKсодержит следующие вершины

//STACK=

if (смежна )and (не смежна )

then begin

Добавить диагонали ;

Заменить содержимое стека на: STACK=;

i = i + 1;

end

if (смежна )and (не смежна )and

(STACKне пуст)and(угол)

then begin

Добавить диагональ ;

Вытолкнуть из STACK ;

end

if (смежна )and (смежна )

then begin

Добавить диагонали ;

Завершить обработку;

end

end

End

Время работы данного алгоритма равно , т.к. будет добавлено не болееребер (является плоским прямолинейным графом) и каждая вершинаединожды заносится и извлекается из стека.

Резюмируем:

Триангуляция монотонного многоугольника с вершинами может быть выполнена за время, что является оптимальным.

Объединяя этот результат с тем, что прямоугольник Rect() можно разбить на монотонные многоугольники за время, получаем:

Триангуляция с ограничениями на множестве точек осуществима за время.

Соседние файлы в папке Локализация точки