Триангуляция Делоне на Сфере
Содержание
Динамический алгоритм
Локализация в триангуляции
Построим алгоритм на сфере по аналогии с плоскостью.
Структура данных
Локализационная структура состоит из нескольких уровней, где каждый уровень — триангуляция Делоне. На нижнем уровне содержатся все точки. Далее точка с вероятностью
попадает на следующий уровень. Если на последнем уровне находится одна точка, то дальше она уже не пойдет.Лемма (О количестве уровней): |
Математическое ожидание уровней в локализационной структуре . |
Доказательство: |
То же самое, что и для плоскости. |
Утверждение: |
Локализационная структура занимает памяти. |
Опять же доказательство копируется с плоскости. |
Принадлежность треугольнику
Пусть дана точки
, , , на сфере с центром , тогда принадлежит треугольнику , тогда и только тогда, когда поворот относительно плоскостей , , одинаковый.Алгоритм
Чтобы найти треугольник, которому принадлежит точка запроса(точка
), сначала найдем ближайшую к ней точку триангуляции(точка ), а зачем вдоль луча будем обходить треугольники, пока не локализуемся.Поиск точки
:- На последнем уровне нашей структуры находиться точек, поэтому просто переберем эти точки и найдем ближайшую к .
- При переходе с уровня на новая ближайшая точка может быть только внутри окружности с центром в точке проходящей через точку (ближайшая точка на уровне). Переберем всех соседей точки и выберем ближайшего к точке . Повторяем эту операцию, пока можем приближаться к точке запроса.
Лемма: |
Алгоритм найдет ближайшую точку |
Доказательство: |
Допустим, что это не так. Это значит, что в внутри окружности с центром в точке Будем уменьшать угол , на которой лежит точка , есть какие-то другие точки. То есть другими словами существует плоскость проходящая через точку , выше которой находятся точка (так как она центр) и какие-то точки триангуляции. Проведем в точке касательную плоскость к сфере. Очевидно, что она делит всё пространство на части: в первой нет никаких точек, а во второй находятся все точки триангуляции. Пусть между плоскостями и угол . Начнем его уменьшать, то есть поворачивать плоскость . Очевидно, что она начнет пересекать сферу, тогда она будет соответствовать какой-то окружности на сфере. При этом все точки сферы, которые выше плоскости будут выше плоскости , значит это будет вложенная окружность. до того момента, когда какая-то точка , лежащая внутри окружности(такая есть по предположению), не станет принадлежать плоскости . В этот момент выше плоскости нет ни одной точки из триангуляции. Значит для ребра можно провести окружность, не содержащую других точек, то есть выполняется глобальный критерий Делоне. Значит в триангуляции должно быть ребро , и по алгоритму мы должны были его перебрать и увидеть, что ближе к точке и перейти к ней. Получили противоречие, значит алгоритм правильно находит ближайшую точку. |