Dört kenarlı veri yapısı (Delaunay / Voronoi)


18

Hesaplamalı geometriler veya cebirciler için 2 soru:

Ben sadece hesaplama geometrisine dalmaya başlıyorum ve onu seviyorum =)

Delaunay nirengi algoritması uygulamak için Guibas ve Stolfi tarafından "Genel alt bölümlerin manipülasyonu ve Voronoi Diyagramlarının hesaplanması için ilkeller " adlı ünlü makaleyi okumaya çalışıyorum . Tüm teorik bilgileri atlamak ve zaman kazanmak için sadece dört kenarlı veri yapısının açıklamasını okumak istiyorum. Ancak, yapı yaygın olarak kullanılıyorsa veya sadece güzel olabileceğinden, makaledeki tüm matematiği anlamaya değer olabilir.

Matematik benim için biraz yoğun. Topoloji konusunda tamamen cahil değilim ama kenar cebirlerinin tanımı, sahip olmadığım soyut cebir bilgisini gerektiriyor.

Benim iki sorum: Dört kenarlı yapının Delaunay / Voronoi'yi hesaplamanın yanı sıra başka uygulamaları da var mı? Son derece güçlü bir araç gibi görünüyor.

İkinci soru; Soyut cebir nedir? Soyut cebire giriş için bir referans verebilmeniz harika olurdu, sadece kenar cebirindeki bölümü anlayabiliyorum.

Teşekkür ederim!


3
Sadece boşlukları doldurmak için: soyut cebir, belirli kurallara saygılı unsurların incelenmesidir. Tahmin edebileceğiniz gibi, bu setlerin yerine getirdiği kuralları kapatma, kimlik unsurları, benzersiz terslerin varlığı ve biri değişebilirlik, ilişkilendirilebilirlik, vb. İlerledikçe özellikler oluşturur. (iyi bir örnek permütasyonlardır).
Ross Snider


Sanırım ikinci sorum biraz cevapsızdı. Bazı grup teorilerini biliyorum. Yüzük ve alanın ne olduğunu biliyorum. Bu makalede onlar tanımlamak sadece var bir : soyut cebir "Bir kenar cebir bir Soyut Cebir (E, E *, Onext, Rot Flip) tatmin özellikleri E1-E5 ve F1-F5 ise"
bigmonachus

[...] ve bunun ne anlama geldiğini bilmiyorum. Bir alan üzerinde bir cebir değil mi?
bigmonachus

Yanıtlar:


32

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*

Primal ve çift grafikler

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)ayrıldı(e)sağ(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

  1. : dart bırakarak kuyruk ( e ) Bir sonraki sonra saat yönünün tersine doğrue .tailNext(e)kuyruk(e)e
  2. : olarak “aynı” darte , fakat sol ( e ) ve sağ ( e ) takas.fiske(e)eayrıldı(e)sağ(e)
  3. :e orta noktasında saat yönünün tersine çeyrek tur döndürülerekelde edilen çift dart.döndür(e)e

SonrakiSon, Döndür ve Çevir

Bu üç işlev, aşağıdakiler gibi her türlü harika kimliği karşılar:

  • sağ(tailNext(e))=ayrıldı(e)
  • sağ(fiske(e))=ayrıldı(e)
  • sağ(döndür(e))=kafa(e)*
  • fiske(fiske(e))=e
  • döndür(döndür(döndür(döndür(e))))=e
  • tailNext(döndür(tailNext(döndür(e))))=e

e Flbenpe.Flip

Ayrıca, bu üç fonksiyon göz önüne alındığında,

  • ters(e)=döndür(fiske(döndür(e)))
  • leftNext(e)=döndür(tailNext(döndür(döndür(döndür(e)))))eayrıldı(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!


OmniGraffle kullandım.
Jeffε
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.