Straight skeleton
Существует целый класс структур типа , которые описывают базовые топологические свойства объектов. Структура была придумала Oswin Aichholzer[1]. Она используются в различных практических задачах (проектирование крыш для зданий) и для доказательства некоторых теорем[2].
Содержание
Топологические свойства
| Определение: |
| Straight skeleton (Angular Bisector Network, ABN) полигона без самопересечений определяет разбиение полигона на регионы, границами которых являются стороны полигона, биссектрисы углов и отрезки, соединяющие точки пересечения биссектрис. |
Опишем подробней, как получается такое разбиение. Мы можем представить, будто все стороны прямоугольника параллельно двигаются внутрь с одинаковой постоянной скоростью, то есть многоугольник как бы сжимается внутрь. Тогда вершины будут двигаться вдоль биссектрис , а точки пересечения биссектрис будут соединять совпавшие участки сторон прямоугольника в конце движения. В каждый момент времени от начала движения рёбер мы получаем слоистую структуру (рис 1.). На рис. 2 синим цветом выделен — множество отрезков, образованных точками пересечения при движении сторон полигона. Чем-то структура похожа на строение крыши в домах (рис. 3). И для решения этой задачи как раз и может применяться: по стенам здания необходимо спроектировать его крышу.
Процесса стягивания многоугольника продолжается до тех пор, пока происходят его топологические изменения, то есть меняется число вершин в стянутом многоугольнике, и таким образом появляются новые вершины дерева . Существуют два типа изменений, в ходе которых образуются новый вершины дерева:
- — данное изменение происходит, когда сторона многоугольника полностью стягивается, делая соседние стороны инцидентными.
- происходит, когда ребро разбивается на два новых ребра, исходящих из точки преломления старого. Такое событие происходит на биссектрисе вогнутой вершины многоугольника. И тогда стягиваемая многоугольником область разбивается на две непересекающиеся многоугольные области.
На рисунке ы изображён красным кругом, а ы — чёрным прямоугольником.
Таким образом, ы соответствуют внутренним вершинам , гранями являются области многоугольника, заметаемые сторонами многоугольника в процессе стягивания, дугам отвечают отрезки биссектрис.
Свойства Straight skeleton
Из процесса построения следует, что он является планарным графом. Ранее уже упоминалась, что он также является деревом. Будем обозначать простого полигона без самопересечений , в котором вершин, как . Тогда справедливы следующие леммы:
| Лемма (1): |
является деревом, содержит связных граней, внутренние вершины и рёбер. |
| Доказательство: |
| Каждая грань начинается образовываться во время стягивания ребра , и даже если на ребре произошёл , сама грань не могла разделиться. Построение грани завершается, когда ребро полностью стягивается. А новые рёбра появляться не могут, поэтому является деревом, а каждая грань будет связная. Поэтому граней в столько, сколько сторон в многоугольнике, внутренних вершин будет , а рёбер , что следует из того, что является деревом. |
| Лемма (2): |
ы могут исходить только из вогнутных вершин полигона. |
| Доказательство: |
| TODO: Доказательство |
Wavefront-алгоритм
Рассмотрим оригинальный алгоритм, который был предложен авторами этой структуры.
TODO: "Простой" алгоритм построения за n^3 (wavefront)
Другие алгоритмы
Известен алгоритм[3] построения для монотонных полигонов за время с использованием памяти. Существует и более сложный алгоритм[4], который строит за время , где — общее число вершин в полигоне, — число вогнутых вершин в полигоне.
Примечания
Источники информации
- Wikipedia — Straight skeleton
- Computing Straight Skeletons and Motorcycle Graphs: Theory and Practice
- Designing roofs and drawing phylogenetic trees
- Eric Berberich, "Straight Skeleton, Computational Geometry and Geometric Computing Seminar"
- Stefan Huber, Martin Held, "Straight Skeletons and their Relation to Triangulations"

