Я думаю, что формализм «краевой алгебры» Гибаса и Столфи немного ненужен.
Все, что действительно необходимо, - это помнить различие между первичным и двойственным графами. Каждая грань первичного графа имеет соответствующую двойственную вершину f ∗ ; каждому ребру e основного графа соответствует двойственное ребро e ∗ ; и каждая вершина v основного графа имеет соответствующую двойственную грань v ∗ . Первичные ребра соединяют первичные вершины и отдельные первичные грани; двойные ребра соединяют двойные вершины и отдельные двойные грани. Двойственный дуал чего-либо - это оригинальная вещь. Смотрите рисунок 4 в статье Гибаса и Столфи:ее*ее*vv*
е⃗ хвост ( е⃗ )голова ( е⃗ )слева ( е⃗ )правильно ( е⃗ )хвост ( е⃗ )слева ( е⃗ )
е⃗
- tailNext ( e⃗ )хвост ( е⃗ )е⃗
- Флип ( е⃗ )е⃗ слева ( е⃗ )правильно ( е⃗ )
- повернуть ( е⃗ )е⃗
Эти три функции удовлетворяют всем видам замечательных идентичностей, таких как следующее:
- правый ( tailNext ( e⃗ ) ) = слева ( е⃗ )
- правильно ( флип ( е⃗ ) ) = слева ( е⃗ )
- вправо ( повернуть ( е⃗ ) ) = голова ( е⃗ )*
- флип ( флип ( е⃗ ) ) = е⃗
- Поворот ( Rotate ( поворот ( Rotate ( е⃗ ) ) ) ) = е⃗
- tailNext ( rotate ( tailNext ( rotate ( e⃗ ) ) ) ) = е⃗
е Ф л я рe.Flip
Кроме того, учитывая эти три функции, можно определить несколько других полезных функций, таких как
- обратный ( е⃗ ) = повернуть ( перевернуть ( повернуть ( е⃗ ) ) )
- leftNext ( e⃗ ) = rotate ( tailNext ( rotate ( rotate ( rotate ( e⃗ ) ) ) ) )е⃗ слева ( е⃗ )
Наконец, знание этих функций говорит вам абсолютно все о топологии подразделения, и любое многоугольное подразделение любой поверхности (ориентируемой или нет) может быть закодировано с использованием этих трех функций.
Структура данных с четырьмя ребрами - это особенно удобное представление поверхностного графа, который обеспечивает доступ ко всем этим функциям, а также к некоторым другим операциям постоянного времени, таким как вставка, удаление, сжатие, расширение и отражение краев; расщепление или слияние вершин или граней; и добавление или удаление ручек или перекрестных заглавных букв.
Веселиться!