Построение триангуляции Делоне

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    556,23 Кб
  • Опубликовано:
    2015-07-12
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Построение триангуляции Делоне














КУРСОВОЙ ПРОЕКТ

ПОСТРОЕНИЕ ТРИАНГУЛЯЦИИ ДЕЛОНЕ

по дисциплине "Структуры и алгоритмы обработки данных"

Содержание

Введение

1. Общее описание триангуляции делоне

1.1 Анализ литературы по теме

1.2 Основные определения и свойства

1.3 Метод пустого шара Делоне. Построение в общем случае

1.4 Применение триангуляции Делоне

2. Описание алгоритмов построения

2.1 Жадный алгоритм

2.2 Алгоритм "Удаляй и строй"

2.3 Алгоритм "Строй, разбивая"

2.4 Алгоритм с индексированием центров треугольников k-D - деревом

3. Оценка эффективности алгоритмов

3.1 Простой итеративный алгоритм

3.2 Итеративный алгоритм с индексированием треугольников

3.3 Итеративный алгоритм с индексированием центров треугольников k-D-деревом

3.4 Веерный алгоритм

4. Программная часть

Заключение

Список использованной литературы

Введение


Сегодня, в начале XXI века, человечество входит в новую цивилизацию - цивилизацию, связанную с проникновением компьютеров во все сферы жизнедеятельности человека. Эту цивилизацию называют информационной, виртуальной, компьютерной.

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

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

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

Цель работы и задачи: изучить один из итеративных алгоритмов построения триангуляции Делоне.

)        Изучить основные определения и теоремы задачи триангуляции Делоне;

2)      Рассмотреть основные виды итеративных алгоритмов построения триангуляции;

)        Реализовать алгоритм "Удаляй и строй" построения триангуляции Делоне.

1. Общее описание триангуляции делоне


Задача построения триангуляции.

Делоне является одной из базовых в вычислительной геометрии. К ней сводятся многие другие задачи, она широко используется в машинной графике и геоинформационных системах для моделирования поверхностей и решения пространственных задач. Впервые задача построения триангуляции Делоне была поставлена в 1934 г. в работе советского математика Бориса Николаевича Делоне.

Триангуляцией Делоне для множества точек S на плоскости называют триангуляцию DT (S), такую что никакая точка A из S не содержится внутри окружности, описанной вокруг любого треугольника из DT (S), такого, что ни одной из вершин его не является точка A.

 

1.1 Анализ литературы по теме

Скворцов А.В. Триангуляция Делоне и ее применение. /Скворцов А.В. - Томск: Изд-во Том. Ун-та, 2002. - 128с. Данное учебное пособие является основным для данного курсового проекта. В нем подробно описываются теоретические сведения, связанные с триангуляцией Делоне, даются различные определения и теоремы.

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

Что позаимствовано: основной материал, теоретические сведения, определения, рисунки.

Попов С.А. Вычислительные методы и программирование. /Попов С.А. - Москва: Изд-во МГУ, 2008, - 24с. Это методическое пособие является вспомогательным источником литературы. Описываются некоторые алгоритмы с математической точки зрения, вычисляются формулы для построения, а также есть описание триангуляция в евклидовом пространстве

Что позаимствовано: математическое описание триангуляции Делоне, построение на евклидовом пространстве

Медведев Н.Н. Метод Вороного - Делоне в исследовании структуры некристаллических систем / РАН, Новосибирск: Изд-во СО РАН, 2000, - 214с. Книга, посвященная описанию методов Вороного и Делоне в некристаллических системах.

Что позаимствовано: свойства триангуляций Делоне, определение триангуляции Делоне.

 

1.2 Основные определения и свойства

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

Свойства:

·        Триангуляция Делоне взаимно однозначно соответствует диаграмме Вороного для того же набора точек.

·        Как следствие: если никакие четыре точки не лежат на одной окружности, триангуляция Делоне единственна.

·        Триангуляция Делоне максимизирует минимальный угол среди всех углов всех построенных треугольников, тем самым избегаются "тонкие" треугольники.

·        Триангуляция Делоне максимизирует сумму радиусов вписанных шаров.

·        Триангуляция Делоне минимизирует дискретный функционал Дирихле.

·        Триангуляция Делоне минимизирует максимальный радиус минимального объемлющего шара.

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

Рис 1. Триангуляция.

 

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

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

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

Триангуляция называется триангуляцией Делоне, если она является выпуклой и удовлетворяет условию Делоне.

Рис 2. Триангуляция Делоне.

 

1.3 Метод пустого шара Делоне. Построение в общем случае


Воспользуемся пустым шаром, который мы будем перемещать, изменяя его размер так, чтобы он мог касаться точек системы {А}, но всегда оставался пустым.

Итак, поместим в систему точек {А} пустой шар Делоне. Это всегда возможно, если выбрать шар достаточно малым. Начнем увеличивать его радиус, оставляя центр шара на месте. В какой-то момент поверхность шара встретит некоторую точку i системы {А}. Это обязательно произойдет, ибо в нашей системе нет неограниченно больших пустот. Будем продолжать увеличивать радиус пустого шара так, чтобы точка i оставалась на его поверхности. Для этого придется двигать центр шара от точки i. Рано или поздно шар достигнет своей поверхностью другой точки системы {А}.

Рис.3 - Разбиение Делоне двумерной системы точек

Симплексы Делоне заполняют пространство без щелей и наложений.

Описанная сфера любого симплекса не содержит внутри себя других точек системы.

Пусть это будет точка j. Продолжим увеличивать радиус нашего шара, сохраняя уже обе точки на его поверхности. Увеличиваясь, шар достигнет какой-то третьей точки системы, точки k. В двумерном случае наш "пустой круг" в этот момент зафиксируется, т.е. станет невозможным дальнейшее увеличение его радиуса при сохранении круга пустым. При этом мы выявляем элементарную двумерную конфигурацию трех точек (i,j,k), определяющую некий треугольник, особенностью которого является то, что внутри его описанной окружности нет других точек системы {А}. В трехмерном пространстве шар не определяется тремя точками. Продолжим увеличивать его радиус, сохраняя все три найденные точки на его поверхности. Это будет возможно до тех пор, пока поверхность шара не встретится с четвертой точкой l системы. После этого движение и рост пустого шара станут невозможными. Найденные четыре точки (i,j,k,l) определяют вершины тетраэдра, который характерен тем, что внутри его описанной сферы нет других точек системы {А}. Такой тетраэдр называется симплексом Делоне.

Симплексом в математике называют простейшую фигуру в пространстве данной размерности: тетраэдр - в трехмерном пространстве; треугольник - в двумерном. Произвольная тройка (четверка) точек системы, не лежащих в одной плоскости, всегда определяет некий симплекс. Однако он будет симплексом Делоне только с том случае, если его описанная сфера пуста. Другими словами, симплексы Делоне определяются особым выбором троек (четверок) точек в системе {А}.

Мы построили один симплекс Делоне, однако, помещая пустой шар в различные места и повторяя ту же процедуру, можно определить и другие. Утверждается, что совокупность всех симплексов Делоне системы {А} заполняет пространство без наложений и щелей, т.е. реализует разбиение пространства, но на этот раз на тетраэдры. Это разбиение называется разбиением Делоне (рис.3).

 

1.4 Применение триангуляции Делоне


Часто триангуляции Делоне применяются в евклидовом пространстве. Минимальное евклидово остовное дерево гарантированно располагается на триангуляции Делоне, поэтому некоторые алгоритмы пользуются триангуляцией. Также через триангуляцию Делоне приближённо решается евклидова задача о коммивояжёре.

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


Рис.4. Пример расчета экспозиций склонов по модели рельефа

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

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

2. Описание алгоритмов построения


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

Дано множество из N точек.

1.      На первых трех исходных точках строим один треугольник.

2.      В цикле по n для всех остальных точек выполняем шаги 3-5.

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

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

.        Проводятся локальные проверки вновь полученных треугольников на соответствие условию Делоне и выполняются необходимые перестроения.

Конец алгоритма.

Ниже приводится подробное описание нескольких алгоритмов.

 


2.1 Жадный алгоритм


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

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

. Во множество исходных точек помещаются концы всех структурных отрезков.

. Генерируются отрезки, соединяющие все пары точек, отрезки сортируются по длине.

. В триангуляцию вставляются все отрезки структурных линий.

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

Шаг 4 повторяется, пока не кончатся отрезки.

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

Триангуляция называется жадной, если она построена жадным алгоритмом.

 

2.2 Алгоритм "Удаляй и строй"

 

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

  

Рис. 4. Алгоритм "Удаляй и строй"

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

 

2.3 Алгоритм "Строй, разбивая"


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

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

Рис. 5. Алгоритм "Строй, разбивая"

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

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

 

2.4 Алгоритм с индексированием центров треугольников k-D - деревом


В алгоритме триангуляции с индексированием центров треугольников k-D-деревом в k-D-дерево (при k = 2) помещаются только центры треугольников. При удалении старых треугольников необходимо удалять их центры из k-D-дерева, а при построении новых - заносить.

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

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

3. Оценка эффективности алгоритмов


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

 

3.1 Простой итеративный алгоритм


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

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

 

3.2 Итеративный алгоритм с индексированием треугольников


Трудоемкость поиска треугольника в R-дереве в худшем случае составляет O (N), а в среднем O (log N). При этом может быть найдено от 1 до N треугольников, которые надо затем все проверить. Кроме того, появляются дополнительные затраты времени на поддержание структуры дерева - O (log N) при каждом построении и удалении треугольников. Отсюда получаем, что трудоемкость алгоритма триангуляции с индексированием треугольников в худшем случае составляет , а в среднем - O (N log N).

 

3.3 Итеративный алгоритм с индексированием центров треугольников k-D-деревом


Трудоемкость поиска точки в k-D-дереве в худшем случае составляет O (N),, а среднем - O (logN). Далее может быть задействована процедура перехода по треугольникам, которая может иметь трудоемкость в худшем случае O N (). Также здесь имеются дополнительные затраты времени на поддержание структуры дерева - O N (log) при каждом построении и удалении треугольников.

Отсюда получаем, что трудоемкость алгоритма триангуляции с индексированием центров треугольников в худшем случае составляет , а в среднем - O (N log N).

 

3.4 Веерный алгоритм


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

Трудоемкость такого алгоритма составляет в среднем O N (). Алгоритм работает примерно с той же скоростью, что и предыдущий алгоритм.

4. Программная часть


Программа была разработана в среде разработки Microsoft Visual Studio 2012. Приложение представляет собой окно, в котором пользователь может произвольно добавлять точки, которые сразу соединяются в триангуляцию Делоне. Справа выводится список координат всех добавленных точек.

Содержание программных модулей:

main. cpp - оконные функции, функции для работы с пользовательским интерфейсом

delone. cpp - алгоритм и функции, которые необходимы для работы с ним

Описание функций программы:

void DrawPoint (int x, int y) - функция рисования точки в окне приложения

void Triangulation () - функция для выполнения триангуляции

void TriangulationIn () - функция для выполнения действий с точками, который оказались внутри треугольника

void TriangulationOut () - функция для выполнения действий с точками, который оказались вне треугольника.

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

триангуляция делоне программный алгоритм

Рис. 6. Интерфейс программы

 


Заключение


В данной работе была разработана программа, на основе которой выполняется построение триангуляции Делоне.

Также были выполнены все поставленные цели и задачи, а именно изучен один из итеративных алгоритмов построения триангуляции Делоне; изучены основные определения и теоремы задачи триангуляции Делоне; рассмотрены основные виды итеративных алгоритмов построения триангуляции; Реализован алгоритм построения триангуляции Делоне.

Список использованной литературы


1.      Скворцов А.В. Триангуляция Делоне и ее применение. /Скворцов А.В. - Томск: Изд-во Том. Ун-та, 2012. - 128с.

2.      Попов С.А. Вычислительные методы и программирование. /Попов С.А. - Москва: Изд-во МГУ, 2008, - 24с.

.        Медведев Н.Н. Метод Вороного - Делоне в исследовании структуры некристаллических систем / РАН, Новосибирск: Изд-во СО РАН, 2009, - 214с.


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!