Я думаю, що формалізм "крайньої алгебри" Гібаса та Столфі трохи непотрібний.
Все, що дійсно потрібно, це пам’ятати про відмінність між первинними та подвійними графами. Кожна грань первинного графіка має відповідну подвійну вершину f ∗ ; кожне ребро e первинного графа має відповідне подвійне ребро e ∗ ; і кожна вершина v первинного графіка має відповідну подвійну грань v ∗ff∗ee∗vv∗ . Первинні ребра з'єднують первинні вершини та окремі первісні грані; подвійні ребра з'єднують подвійні вершини та окремі подвійні грані. Подвійне подвійне нічого - це оригінальна річ. Дивіться малюнок 4 на папері Гібаса та Столфі:
e⃗ tail(e⃗ )head(e⃗ )left(e⃗ )right(e⃗ )tail(e⃗ )left(e⃗ )
e⃗ дартса , Гібас та Столфі пов'язують три пов’язані дартси:
- tailNext(e⃗ )tail(e⃗ )e⃗ .
- flip(e⃗ )e⃗ left(e⃗ )right(e⃗ )
- rotate(e⃗ )e⃗ на чверть, повернути проти годинникової стрілки навколо його середньої точки.
Ці три функції задовольняють всілякі чудові ідентичності, такі як:
- right(tailNext(e⃗ ))=left(e⃗ )
- right(flip(e⃗ ))=left(e⃗ )
- right(rotate(e⃗ ))=head(e⃗ )∗
- flip(flip(e⃗ ))=e⃗
- rotate(rotate(rotate(rotate(e⃗ ))))=e⃗
- tailNext(rotate(tailNext(rotate(e⃗ ))))=e⃗
e Flip , імовірно, тому, що це ближче до декларативного коду e.Flip
). Гібас і Столфі називають будь-яку трійку функцій, що задовольняють всі ці тотожності, крайовою алгеброю .
Більше того, враховуючи ці три функції, можна визначити кілька інших корисних функцій, як-от
- reverse(e⃗ )=rotate(flip(rotate(e⃗ )))
- leftNext(e⃗ )=rotate(tailNext(rotate(rotate(rotate(e⃗ )))))e⃗ left(e⃗ )
Нарешті, знаючи ці функції, ви розповідаєте абсолютно все про топологію підрозділу, і будь-який багатокутний підрозділ будь-якої поверхні (орієнтується чи ні) може бути закодований за допомогою цих трьох функцій.
Квадратна структура даних є особливо зручним поданням графіку поверхні, що забезпечує доступ до всіх цих функцій, поряд з кількома іншими операціями постійного часу, такими як вставлення, видалення, стискання, розширення та гортання ребер; розщеплення або злиття вершин або граней; і додавання або видалення ручок або перехресних кришок.
Веселіться!