Guibas ve Stolfi'nin “kenar cebiri” biçimciliğinin biraz gereksiz olduğunu düşünüyorum.
Gerçekten gerekli olan tek şey, ilk ve çift grafikler arasındaki farkı hatırlamaktır. Primal grafiğin her yüzüne karşılık gelen bir çift tepe noktası f ∗ ; primal grafiğin her kenarı e , karşılık gelen bir çift kenara e ∗ sahiptir ; ve her köşe v ilksel grafik karşılık gelen bir çift yüzlü sahip v * . Primal kenarlar primal köşeleri ve ayrı primal yüzleri birbirine bağlar; çift kenarlar çift köşeleri birbirine bağlar ve çift yüzleri ayırır. Her şeyin ikilisinin ikilisi orijinal şeydir. Guibas ve Stolfi'nin makalesinde Şekil 4'e bakınız:ff*ee*vv*
Guibas ve Stolfi dört kenarlı , yönlendirilmiş kenardan oluşan bir koleksiyon olarak her kenar (ilkel veya çift) hakkında düşünmeyi önerir ; basitlik için, bu dartları arayacağım . Her dart bir uç nokta kuyruğundane⃗ diğer uç nokta kafasına ( → e ) işaret eder ve iki yüzü sola ( → e ) ve sağa ( → e ) ayırır. Hangi uç noktanın kuyruk ( → e ) olarak adlandırılacağı seçimidartKuyruk ( E⃗ )kafa ( e⃗ )sol ( e⃗ )doğru ( e⃗ )Kuyruk ( E⃗ )yönü ve çağrı için hangi yüz seçimi onun olduğu oryantasyon . (Guibas ve Stolfi, “kuyruk” ve “kafa” yerine “Org” ve “Dest” kullanır, ancak daha kısa etiketleri tercih ederim, çünkü Gereksiz Kısaltmalar Kötüdür.)ayrıldı( e⃗ )
Herhangi bir dart , Guibas ve Stolfi için üç ilgili dart ilişkilendirir:e⃗
- : dart bırakarak kuyruk ( → e ) Bir sonraki sonra saat yönünün tersine doğru → e .tailNext ( e⃗ )Kuyruk ( E⃗ )e⃗
- : olarak “aynı” dart → e , fakat sol ( → e ) ve sağ ( → e ) takas.çevir ( e⃗ )e⃗ sol ( e⃗ )doğru ( e⃗ )
- : → e orta noktasında saat yönünün tersine çeyrek tur döndürülerekelde edilen çift dart.döndür ( e⃗ )e⃗
Bu üç işlev, aşağıdakiler gibi her türlü harika kimliği karşılar:
- sağ ( tailNext ( e⃗ ) ) = sol ( e⃗ )
- Sağ ( Flip ( e⃗ ) ) = sol (e⃗ )
- sağ ( döndür ( e⃗ ) ) = kafa ( e⃗ )*
- çevir ( çevir ( e)⃗ ) ) = e⃗
- döndür ( döndür ( döndür ( döndür ( e⃗ ) ) ) ) = e⃗
- tailNext ( döndürme ( tailNext ( döndürme ( e⃗ ) ) ) ) = e⃗
e F l ı pe.Flip
Ayrıca, bu üç fonksiyon göz önüne alındığında,
- geri ( e⃗ ) = döndür ( çevir ( döndür ( e⃗ ) ) )
- leftNext ( e⃗ ) = döndür ( tailNext ( döndür ( döndür) ( döndür ( e⃗ ) ) ) ) )e⃗ sol ( e⃗ )
Son olarak, bu işlevleri bilmek size alt bölümün topolojisi hakkında her şeyi kesinlikle söyler ve herhangi bir yüzeyin herhangi bir poligonal alt bölümü (yönlendirilebilir veya değil) bu üç işlev kullanılarak kodlanabilir.
Dört kenarlı veri yapısı, kenar ekleme, silme, daraltma, genişletme ve çevirme gibi diğer sabit zamanlı işlemlerin yanı sıra tüm bu işlevlere erişim sağlayan bir yüzey grafiğinin özellikle uygun bir temsilidir; köşeleri veya yüzleri bölme veya birleştirme; ve tutamaçları veya çapraz büyük harfleri ekleme veya silme.
İyi eğlenceler!