Треугольник
Треугольник это геометрическая фигура, состоящая из трех точек и трех отрезков, попарно их соединяющих.
В любом треугольнике три угла и три стороны.
Сумма углов любого треугольника равна .
Против большего угла треугольника лежит большая сторона.
Виды треугольников
- остроугольными (если все его углы острые),
- тупоугольными (если один из его углов тупой),
- прямоугольными (если один из его углов прямой).
- равнобедренным, если две его стороны равны.
- равносторонним, если все три стороны равны,
- разносторонним, если все его стороны разные.
Основные линии треугольника
Медианой треугольника называется отрезок, соединяющий вершину треугольника с серединой противоположной стороны.
Биссектрисой угла треугольника называется луч, исходящий из вершины треугольника и делящий его пополам.
Высотой треугольника называется перпендикуляр, опущенный из вершины треугольника на противоположную сторону (или ее продолжение).
Средняя линия треугольника – это отрезок, соединяющий середины двух сторон треугольника и параллельный третьей стороне.
Два треугольника называются равными, если у них равны соответствующие стороны и соответствующие углы.
Признаки равенства треугольников
I признак (по двум сторонам и углу между ними). Если две стороны и угол между ними одного треугольника равны соответственно двум сторонам и углу между ними другого треугольника, то такие треугольники равны.

II признак (по стороне и прилежащим углам). Если сторона и прилежащие к ней углы одного треугольника равны соответственно стороне и прилежащим к ней углам другого треугольника, то такие треугольники равны.

III признак (по трем сторонам). Если три стороны одного треугольника равны трем сторонам другого треугольника, то такие треугольники равны.

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

I признак. Если два угла одного треугольника раны двум углам другого треугольника, то такие треугольники подобны.
II признак. Если две стороны одного треугольника пропорциональны двум сторонам другого треугольника, и углы, образованные этими сторонами, равны, то такие треугольники подобны.
III признак. Если три стороны одного треугольника пропорциональны трем сторонам другого треугольника, то такие треугольники подобны.
Подробнее про признаки подобия треугольников читайте по ссылке.
Теоремы треугольников
Для любого треугольника справедливы следующие теоремы.
Теорема косинусов. Квадрат стороны треугольника равен сумме квадратов двух других сторон минус удвоенное произведение этих сторон на косинус угла между ними:
![]()
Подробнее про теорему косинусов читайте по ссылке.
Теорема синусов. Стороны треугольника пропорциональны синусам противолежащих углов. Коэффициент пропорциональности равен диаметру описанной вокруг этого треугольника окружности:
![\[ \frac{a}{\sin \alpha } =\frac{b}{\sin \beta } =\frac{c}{\sin \gamma } =2R\]](http://ru.solverbook.com/wp-content/ql-cache/quicklatex.com-03b24e523d03f4419775c6139f7c823d_l3.png)
Подробнее про теорему синусов читайте по ссылке.
Примеры решения задач
| Задание | Доказать, что в равнобокой трапеции диагонали равны. |
| Доказательство | В равнобокой трапеции рассмотрим треугольники и (рис. 1). Так как |

Что и требовалось доказать.
| Задание | В треугольнике стороны см см см. На стороне отмечена точка так, чтобы см. Найти отрезок . |
| Решение | Рассмотрим треугольники и . Запишем отношение сторон и : |

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

Стороны треугольника обычно обозначают буквами , а противолежащие углы – .
Решение треугольников заключается в отыскании всех неизвестных сторон и всех неизвестных углов треугольника по известным данным.
При решении задач используют теорему косинусов или теорему синусов.
Теоремы для решения треугольников
Теорема косинусов. Квадрат стороны треугольника равен сумме квадратов двух других сторон минус удвоенное произведение этих сторон на косинус угла между ними:
![]()
![]()
![]()
Теорема синусов. Стороны треугольника пропорциональны синусам противолежащих углов. Коэффициент пропорциональности равен диаметру описанной вокруг треугольника окружности:
![]()
Также используют условия, которым удовлетворяют стороны треугольника (неравенство треугольника):
Примеры решения задач

![]()
откуда см.
Далее запишем теорему синусов и подставим известные данные:
![]()
![\[\sin \beta =\frac{6\cdot \frac{\sqrt{3}}{2}}{2\sqrt{7}} =\frac{3\sqrt{3}}{2\sqrt{7}} =\frac{3\sqrt{21}}{14} \Rightarrow \beta =\arcsin \frac{3\sqrt{21}}{14} \]](http://ru.solverbook.com/wp-content/ql-cache/quicklatex.com-6b28eab865bb6a2ba9385a53e3ea1246_l3.png)
![\[\sin \alpha =\frac{4\cdot \frac{\sqrt{3}}{2}}{2\sqrt{7}} =\sqrt{\frac{3}{7}} =\frac{\sqrt{21}}{7} \Rightarrow \alpha =\arcsin \frac{\sqrt{21}}{7} \]](http://ru.solverbook.com/wp-content/ql-cache/quicklatex.com-2794b93b21ed9420c6c361b586c5aa2d_l3.png)
| Задание | Решить треугольник по стороне см и двум углам , . |
| Решение | Имеем, что третий угол |
![]()
По теореме синусов
![]()
Поскольку имеет место равенство , то рассматриваемый треугольник равнобедренный, а значит см.
Треугольник. Формулы и свойства треугольников.
Определение. Треугольник — фигура, которая состоит из трёх точек, не лежащих на одной прямой, и трёх отрезков, попарно соединяющих эти точки. Точки называются вершинами треугольника, а отрезки — его сторонами.
Типы треугольников
По величине углов

Остроугольный треугольник — все углы треугольника острые.

Тупоугольный треугольник — один из углов треугольника тупой (больше 90°).

Прямоугольный треугольник — один из углов треугольника прямой (равен 90°).
По числу равных сторон

Разносторонний треугольник — все три стороны не равны.

Равнобедренный треугольник — две стороны равны.

Равносторонним треугольник или правильный треугольник — все три стороны равны.
Вершины, углы и стороны треугольника
Свойства углов и сторон треугольника

Сумма углов треугольника равна 180°: α + β + γ = 180°
В треугольнике против большей стороны лежит больший угол, и обратно. Против равных сторон лежат равные углы: если α > β , тогда a > b если α = β , тогда a = b
Сумма длин двух любых сторон треугольника больше длины оставшейся стороны: a + b > c
b + c > a
c + a > b
Теорема синусов
Стороны треугольника пропорциональны синусам противолежащих углов.
| a | = | b | = | c | = 2R |
| sin α | sin β | sin γ |
Теорема косинусов
Квадрат любой стороны треугольника равен сумме квадратов двух других сторон треугольника минус удвоенное произведение этих сторон на косинус угла между ними. a 2 = b 2 + c 2 — 2 bc · cos α b 2 = a 2 + c 2 — 2 ac · cos β c 2 = a 2 + b 2 — 2 ab · cos γ
Теорема о проекциях
Для остроугольного треугольника: a = b cos γ + c cos β b = a cos γ + c cos α c = a cos β + b cos α
Формулы для вычисления длин сторон треугольника
Формулы сторон через медианы a = 2 3 √ 2( mb 2 + mc 2 ) — ma 2 b = 2 3 √ 2( ma 2 + mc 2 ) — mb 2 c = 2 3 √ 2( ma 2 + mb 2 ) — mc 2
Медианы треугольника

Определение. Медиана треугольника ― отрезок внутри треугольника, который соединяет вершину треугольника с серединой противоположной стороны.
Свойства медиан треугольника:
Медианы треугольника пересекаются в одной точке. (Точка пересечения медиан называется центроидом)
В точке пересечения медианы треугольника делятся в отношении два к одному (2:1)
AO OD = BO OE = CO OF = 2 1
Медиана треугольника делит треугольник на две равновеликие части
S∆ABD = S∆ACD S∆BEA = S∆BEC S∆CBF = S∆CAF
Треугольник делится тремя медианами на шесть равновеликих треугольников. S∆AOF = S∆AOE = S∆BOF = S∆BOD = S∆COD = S∆COE
Из векторов, образующих медианы, можно составить треугольник.
Формулы медиан треугольника
Формулы медиан треугольника через стороны
ma = 1 2 √ 2 b 2 +2 c 2 — a 2
mb = 1 2 √ 2 a 2 +2 c 2 — b 2
mc = 1 2 √ 2 a 2 +2 b 2 — c 2
Биссектрисы треугольника

Определение. Биссектриса угла — луч с началом в вершине угла, делящий угол на два равных угла.
Свойства биссектрис треугольника:
Биссектрисы треугольника пересекаются в одной точке, равноудаленной от трех сторон треугольника, — центре вписанной окружности.
Биссектриса треугольника делит противолежащую сторону на отрезки, пропорциональные прилежащим сторонам треугольника
AE AB = EC BC
Угол между биссектрисами внутреннего и внешнего углов треугольника при одной вершине равен 90°.
Угол между lc и lc ‘ = 90°
Если в треугольнике две биссектрисы равны, то треугольник — равнобедренный.
Формулы биссектрис треугольника
Формулы биссектрис треугольника через стороны:
la = 2√ bcp ( p — a ) b + c
lb = 2√ acp ( p — b ) a + c
lc = 2√ abp ( p — c ) a + b
где p = a + b + c 2 — полупериметр треугольника
Формулы биссектрис треугольника через две стороны и угол:
la = 2 bc cos α 2 b + c
lb = 2 ac cos β 2 a + c
lc = 2 ab cos γ 2 a + b
Высоты треугольника

Определение. Высотой треугольника называется перпендикуляр, опущенный из вершины треугольника на прямую содержащую противоположную сторону.
- внутри треугольника — для остроугольного треугольника;
- совпадать с его стороной — для катета прямоугольного треугольника;
- проходить вне треугольника — для острых углов тупоугольного треугольника.
Свойства высот треугольника
Высоты треугольника пересекаются в одной точке, называемой ортоцентром треугольника.
Если в треугольнике две высоты равны, то треугольник — равнобедренный.
ha : hb : hc = 1 a : 1 b : 1 c = ( bc ):( ac ):( ab )
1 ha + 1 hb + 1 hc = 1 r
Формулы высот треугольника
Формулы высот треугольника через сторону и угол:
ha = b sin γ = c sin β
hb = c sin α = a sin γ
hc = a sin β = b sin α
Формулы высот треугольника через сторону и площадь:
Формулы высот треугольника через две стороны и радиус описанной окружности:
Окружность вписанная в треугольник

Определение. Окружность называется вписанной в треугольник, если она касается всех трех его сторон.
Свойства окружности вписанной в треугольник
Центр вписанной в треугольник окружности лежит на пересечении биссектрис внутренних углов треугольника.
В любой треугольник можно вписать окружность, и только одну.
Формулы радиуса окружности вписанной в треугольник
Радиус вписанной в треугольник окружности равен отношению площади треугольника к его полупериметру:
Радиус вписанной в треугольник окружности через три стороны:
r = ( a + b — c )( b + c — a )( c + a — b ) 4( a + b + c )
Радиус вписанной в треугольник окружности через три высоты:
Окружность описанная вокруг треугольника

Определение. Окружность называется описанной вокруг треугольника, если она содержит все вершины треугльника.
Свойства окружности описанной вокруг треугольника
Центр описанной вокруг треугольника окружности лежит на пересечении серединных перпендикуляров к его сторонам.
Вокруг любого треугольника можно описать окружность, и только одну.
Свойства углов
Центр описанной окружности лежит внутри остроугольного треугольника, снаружи тупоугольнго треугольника, на середине гипотенузы прямоугольного треугольника.
Формулы радиуса окружности описанной вокруг треугольника
Радиус описанной окружности через три стороны и площадь:
Радиус описанной окружности через площадь и три угла:
R = S 2 sin α sin β sin γ
Радиус описанной окружности через сторону и противоположный угол (теорема синусов):
R = a 2 sin α = b 2 sin β = c 2 sin γ
Связь между вписанной и описанной окружностями треугольника
Если d — расстояние между центрами вписанной и описанной окружностей, то.
r R = 4 sin α 2 sin β 2 sin γ 2 = cos α + cos β + cos γ — 1
2R r = abc a + b + c
Средняя линия треугольника
Определение. Средняя линия треугольника — отрезок, соединяющий середины двух сторон треугольника.
Свойства средней линии треугольника
1. Любой треугольник имеет три средних линии

Средняя линия треугольника параллельна основанию и равна его половине.
MN = 1 2 AC KN = 1 2 AB KM = 1 2 BC
MN || AC KN || AB KM || BC
3. Средняя линия отсекает треугольник, подобный данному, площадь которого равна четвёрти площади исходного треугольника
4. При пересечении всех трёх средних линий образуются 4 равных треугольника, подобных (даже гомотетичных) исходному с коэффициентом 1/2.
Признаки. Если отрезок параллелен одной из сторон треугольника и соединяет середину стороны треугольника с точкой, лежащей на другой стороне треугольника, то этот отрезок — средняя линия.
Периметр треугольника

Периметр треугольника ∆ ABC равен сумме длин его сторон
P = a + b + c
Формулы площади треугольника

Формула площади треугольника по стороне и высоте
Площадь треугольника равна половине произведения длины стороны треугольника на длину проведенной к этой стороне высоты
S = 1 2 a · ha
S = 1 2 b · hb
S = 1 2 c · hc
Формула площади треугольника по трем сторонам
Формула Герона
S = √ p ( p — a )( p — b )( p — c )
где p = a + b + c 2 — полупериметр треугльника.
Формула площади треугольника по двум сторонам и углу между ними
Площадь треугольника равна половине произведения двух его сторон умноженного на синус угла между ними.
S = 1 2 a · b · sin γ
S = 1 2 b · c · sin α
S = 1 2 a · c · sin β
Формула площади треугольника по трем сторонам и радиусу описанной окружности
| S = | a · b · с |
| 4R |
Формула площади треугольника по трем сторонам и радиусу вписанной окружности
Площадь треугольника равна произведения полупериметра треугольника на радиус вписанной окружности.
Равенство треугольников
Определение. Если два треугольника АВС и А1В1С1 можно совместить наложением, то они равны.
Свойства. У равных треугольников равны и их соответствующие элементы. (В равных треугольниках против равных сторон лежат равные углы, против равных углов лежат равные стороны)
Признаки равенства треугольников
Теорема 1.
Первый признак равенства треугольников — по двум сторонам и углу между ними
Если две стороны и угол между ними одного треугольника соответственно равны двум сторонам и углу между ними другого треугольника, то такие треугольники равны.
Теорема 2.
Второй признак равенства треугольников — по стороне и двум прилежащим углам
Если сторона и два прилежащих к ней угла одного треугольника соответственно равны стороне и двум прилежащим к ней углам другого треугольника, то такие треугольники равны.
Теорема 3.
Третий признак равенства треугольников — по трем сторонам
Если три стороны одного треугольника соответственно равны трем сторонам другого треугольника, то такие треугольники равны.
Подобие треугольников

Определение. Подобные треугольники — треугольники соответствующие углы которых равны, а сходственные стороны пропорциональны.
∆АВС ~ ∆MNK => α = α 1, β = β 1, γ = γ 1 и AB MN = BC NK = AC MK = k ,
где k — коэффициент подобия
Признаки подобия треугольников
Первый признак подобия треугольников
Если два угла одного треугольника соответственно равны двум углам другого, то такие треугольники подобны.
Второй признак подобия треугольников
Если три стороны одного треугольника пропорциональны трем сторонам другого, то такие треугольники подобны.
Третий признак подобия треугольников
Если две стороны одного треугольника пропорциональны двум сторонам другого, а углы, между этими сторонами, равны, то такие треугольники подобны.
Как из 4 точек сделать треугольник

Докажите свойство точек треугольника
В треугольнике ABC на сторонах ab, bc взяты точки k, m соответственно, причем угол.

Найти z координаты точек прямоугольного треугольника
Прямоугольный треугольник ABC находится в 3d пространстве. Из точки B проведена высота вектор BH.
Координаты точек треугольника вписанного в окружность
Собственно дана окружность, известен её радиус, как найти координаты точек вписанного в окружность.

Определить положение точек относительно треугольника
Например есть две точки D1 и D2. Для точки D1 нужно определить, что она находится в области от.
Вопрос, на который я не ответил. И почему.
Я был на встрече. Общались с коллегами по одному из проектов. Неожиданно разговор затронул, как оказалось по итогам, интересную тему.

Задача:
Объединить все четыре точки тремя линиями. При том, что ни одна из трех линий не должна проходить через центр.
Тридцать секунд раз размышление – время пошло. Думаем.
Четыре стороны. Четыре стороны – это четыре линии. Казалось бы, глупо пытаться прокладывать линии от точки к точке, ведь линии всего три. И, тем не менее, ты упорно начинаешь это делать. И так и сяк – никак. Перебрал все точки, все стороны – никак. Наклонил голову – нет. Вот уже и пять секунд, и десять – снова нет. Что делать? Ты же умный парень, подумай — где-то подвох! Точно. В чем-то фокус. Меня обманули! Да, нет, не могли.
ОК, пауза. Собрались.
Еще раз к задаче. Точки четыре, линии три. И в центр нельзя. Может линии не прямые?! — кидаешь ты себе, уже даже смятении. Но нет – это же линии. Давай еще раз переберем все точки по одной. Направо, налево. Пять секунд, четыре, две. Время закончилось. Не знаю.
— Ребят, я не знаю! Ответ скажете?!
— Конечно, скажем, братан. Лови.

Как показали ответ, ты думаешь – «Бог, мой! Что за идиот я! Все же так казалось бы просто!».
А теперь в чем суть.
Я долго думал над этим. Смысл в том, что решение задачи показывает не то, насколько ты глуп или умный. Решение показывает то, как ты мыслишь. Насколько развит твой мозг не с точки зрения книг или навыков, а с точки зрения физиологии восприятия. Решение показывает, готов ли ты выйти за рамки. Перешагнуть за горизонт. Насколько ты за шорен и способен ли мыслить глобально. Ведь, никто не говорил, что нельзя выходить за рамки квадрата. Квадрата, Карл! Ты сам представил себе этот квадрат! В задаче сказано объединить четыре точки тремя линиями не проходя через центр. А ты представил квадрат и все тридцать секунд не знал, куда себя деть из его узких рамок. Тебе не сказали, что это квадрат! Ты сам себе его выдумал! Сам себя ограничил! Сам!
Сделай выводы — мысли шире. Проблема не может быть решена на том уровне, на котором она поставлена. Предела нет. Нет рамок. Нет горизонта. Лишь те, что себе поставил ты сам.
Как этому научится? Пока не знаю. Это же физиология. Наверное, тот самый IQ. И парень я, вроде, не глупый. Я же отнесся серьезно. Я же искал ходы. Искал варианты. 30 секунд. Я хотел найти ответ — не получилось.
Алгоритм триангуляции Делоне методом заметающей прямой
В этой статье я подробно опишу алгоритм, который у меня получился в результате использования идеи «заметающей прямой» для построения триангуляции Делоне на плоскости. В нем есть несколько идей, которые я нигде не встречал, когда читал статьи про триангуляцию.
Возможно, кто-то тоже найдет их необычными. Я постараюсь сделать все в лучших традициях и включить в рассказ следующие вещи: описание используемых структур данных, описание шагов алгоритма, доказательство корректности, временные оценки, а также сравнение с итеративным алгоритмом, использующим kD-дерево.
Определения и постановка задачи
Триангуляция
Говорят, что на множестве точек на плоскости задана триангуляция, если некоторые пары точек соединены ребром, любая конечная грань в получившемся графе образует треугольник, ребра не пересекаются, и граф максимален по количеству ребер.
Триангуляция Делоне
Триангуляцией Делоне называется такая триангуляция, в которой для любого треугольника верно, что внутри описанной около него окружности не находится точек из исходного множества.

Замечание: для заданного множества точек, в котором никакие 4 точки не находятся на одной окружности, существует ровно одна триангуляция Делоне.
Условие Делоне
Пусть на множестве точек задана триангуляция. Будем говорить, что некоторое подмножество точек удовлетворяет условию Делоне, если триангуляция, ограниченная на это подмножество, является триангуляцией Делоне для него.
Критерий для триангуляции Делоне
Выполнение условия Делоне для всех точек, образующих четырехугольник в триангуляции, эквивалентно тому, что данная триангуляция является триангуляцией Делоне.
Замечание: для невыпуклых четырехугольников условие Делоне всегда выполнено, а для выпуклых четырехугольников (вершины которого не лежат на одной окружности) существует ровно 2 возможные триангуляции (одна из которых является триангуляцией Делоне).
Задача заключается в том, чтобы для заданного множества точек построить триангуляцию Делоне.
Описание алгоритма
Видимые точки и видимые ребра
Пусть задана минимальная выпуклая оболочка (далее МВО) конечного множества точек (ребра, соединяющие некоторые из точек так, чтобы они образовывали многоугольник, содержащий все точки множества) и точка A, лежащая вне оболочки. Тогда точка плоскости называется видимой для точки А, если отрезок, соединяющий ее с точкой А, не пересекает МВО.
Ребро МВО называется видимым для точки А, если его концы видимы для А.
На следующей картинке красным помечены ребра, видимые для красной точки:

Замечание: контур триангуляции Делоне является МВО для точек, на которых построена.
Замечание 2: в алгоритме видимые для добавляемой точки А ребра образуют цепочку, то есть несколько подряд идущих ребер МВО
Хранение триангуляции в памяти
Есть некоторые стандартные способы, неплохо описанные в книге Скворцова [1]. Ввиду специфики алгоритма, я предложу свой вариант. Так как хочется проверять 4-угольники на условие Делоне, то рассмотрим их строение. Каждый 4-угольник в триангуляции представляет из себя 2 треугольника, имеющих общее ребро. У каждого ребра есть ровно 2 треугольника, прилегающих к нему. Таким образом, каждый четырехугольник в триангуляции порождается ребром и двумя вершинами, находящимися напротив ребра в прилегающих треугольниках.
Так как по ребру и двум вершинам восстанавливаются два треугольника и их смежность, то по всем таким структурам мы сможем восстановить триангуляцию. Соответственно предлагается хранить ребро с двумя вершинами в множестве и выполнять поиск по ребру (упорядоченной паре вершин).

Алгоритм
Идея заметающей прямой заключается в том, что все точки сортируются по одному направлению, а затем по очереди обрабатываются.
- Отсортируем все точки вдоль некоторой прямой (для простоты по координате ).
- Построим треугольник на первых 3 точках.
Проверка условия Делоне
Способы проверки четырехугольников на условие Делоне можно найти в той же книжке [1]. Подмечу лишь, что при выборе метода с тригонометрическими функциями оттуда при неаккуратной реализации могут получаться отрицательные значения синусов, есть смысл брать их по модулю.
Поиск видимых ребер
Осталось понять, как эффективно находить видимые ребра. Заметим, что предыдущая добавленная точка S находится в МВО на текущей итерации, так как имеет наибольшую координату , а также видима для текущей точки. Тогда, замечая, что концы видимых ребер образуют непрерывную цепочку видимых точек, мы можем идти от точки S в обе стороны по МВО и собирать ребра, пока они видимы (видимость ребра проверяется с помощью векторного произведения). Таким образом удобно хранить МВО как двусвязный список, на каждой итерации удаляя видимые ребра и добавляя 2 новых из рассматриваемой точки.

Визуализация работы алгоритма
Две красные точки — добавляемая и предыдущая. Красные ребра в каждый момент составляют стек рекурсии из шага (4):
Корректность алгоритма
Чтобы доказать корректность алгоритма, достаточно доказать сохранение инварианта в шагах (3) и (4).
Шаг (3)
После шага (3), очевидно, получится некоторая триангуляция текущего множества точек.
Шаг (4)
В процессе выполнения шага (4) все четырехугольники, не удовлетворяющие условию Делоне, находятся в стеке рекурсии (следует из описания), а значит, по окончании шага (4) все четырехугольники удовлетворяют условию Делоне, то есть действительно построена триангуляция Делоне. Тогда осталось доказать, что процесс в шаге (4) когда-нибудь закончится. Это следует из того, что все ребра, добавленные при перестроении, исходят из текущей рассматриваемой вершины (то есть на шаге их не больше, чем ) и из того, что после добавления этих ребер мы не будем рассматривать четырехугольники, порожденные ими (см. предыдущее замечание), а значит, добавим не более одного раза.
Временная сложность
В среднем на равномерном, нормальном распределениях алгоритм работает довольно неплохо (результаты приведены ниже в табличке). Есть предположение, что время его работы составляет . В худшем случае имеет место оценка .

Давайте разберем время работы по частям и поймем, какая из них оказывает самое большое влияние на итоговое время:
Сортировка по направлению
Для сортировки будем использовать оценку .
Поиск видимых ребер
Для начала покажем, что время, суммарно затраченное на поиск видимых ребер, есть . Заметим, что на каждой итерации мы находим все видимые ребра и еще 2 (первые не видимые) за линейное время. В шаге (3) мы добавляем в МВО новые 2 ребра. Таким образом, всего в меняющейся на протяжении алгоритма МВО побывает не более ребер, значит, и различных видимых ребер будет не более . Еще мы найдем ребер, не являющихся видимыми. Таким образом, в общей сложности найдется не более ребер, что соответствует времени .
Построение новых треугольников
Суммарное время на построение треугольников из шага (3) с уже найденными видимыми ребрами, очевидно, .
Перестроение триангуляции

Осталось разобраться с шагом (4). Сначала заметим, что проверка условия Делоне и перестроение в случае его не выполнения являются довольно дорогими действиями (хоть и работают за ). Только на проверку условия Делоне может уйти около 28 арифметических операций. Посмотрим на среднее количество перестроений в течение этого шага. Практические результаты на некоторых распределениях приведены ниже. По ним очень хочется сказать, что среднее количество перестроений растет с логарифмической скоростью, однако оставим это как лишь предположение. Здесь еще хочется подметить, что от направления, вдоль которого производится сортировка, может сильно варьироваться среднее число перестроений на точку. Так на миллионе равномерно распределенных на длинном низком прямоугольнике с отношением сторон 100000:1 это число варьируется от 1.2 до 24 (эти значения достигаются при сортировке данных по горизонтали и вертикали соответственно). Поэтому я вижу смысл выбирать направление сортировки произвольным образом (в данном примере при произвольном выборе в среднем получалось около 2 перестроений) или выбрать его вручную, если данные заранее известны. Таким образом, основное время работы программы обычно уходит на шаг (4). Если же он выполняется быстро, то есть смысл задуматься над ускорением сортировки.
Худший случай

В худшем случае на -ой итерации происходит рекурсивный вызов в шаге (4), то есть, суммируя по всем i, получаем асимптотику в худшем случае . Следующая картинка иллюстрирует красивый пример, на котором программа может работать долго (1100 перестроений в среднем при добавлении новой точки при входных данных в 10000 точек).
Сравнение с итеративным алгоритмом построения триангуляции Делоне с использованием kD-дерева
Описание итеративного алгоритма
Коротко опишу вышеуказанный алгоритм. При поступлении очередной точки мы с помощью kD-дерева (советую почитать про него где-нибудь, если вы не знаете) находим довольно близкий к ней уже построенный треугольник. Затем обходом в глубину ищем треугольник, в который попадает сама точка. Достраиваем ребра в вершины найденного треугольника и фактически выполняем шаг (4) из нашего алгоритма для новых четырехугольников. Так как точка может быть вне триангуляции, то для упрощения предлагается накрыть все точки большим треугольником (построить его заранее), это решит проблему.
Сходство алгоритмов
Различия алгоритмов
В итеративном алгоритме локализация точки (поиск нужного треугольника) происходит в среднем за , на вышеуказанных распределениях в среднем происходит 3 перестроения (как показано в [1]) при условии произвольного порядка подачи точек. Таким образом заметающая прямая выигрывает время у итеративного алгоритма в локализации, но проигрывает его в перестроениях (которые, напомню, довольно тяжелые). Ко всему прочему итеративный алгоритм работает в режиме онлайн, что также является его отличительной особенностью.
Заключение
Здесь я просто покажу некоторые интересные триангуляции, получившиеся в результате работы алгоритма.
Похожие публикации:
- Как заклеить тент на прицепе
- Как закрыть бмв без ключа
- Как залить проект на github через git bash
- Как заменить лампу в холодильнике
