Bagaimana cara melakukan triangulasi dari diagram Voronoï?


13

Saya menghitung diagram Voronoï dari seperangkat poin (dengan Boost.polygon ).

Saya mencoba menemukan triangulasi Delaunay, menghubungkan setiap pusat sel untuk setiap tepi Vorono, tetapi saya kehilangan beberapa sisi.

Pada gambar berikut, titik-titik merah adalah titik awal saya, garis biru adalah tepi Vorono (saya mengabaikan tepi tak terbatas), dan garis hijau adalah tepi triangulasi (satu tepi hijau untuk setiap tepi biru, menghubungkan dua asal sel).

Kita dapat melihat bahwa tepi diagonal tidak ada. Apa yang saya lewatkan?

diagram voronoi

Jawaban:


19

Titik pusat dalam diagram Anda adalah tepi yang merosot dari diagram Voronoi. Jika Anda membuat diagram Voronoi untuk cloud titik tidak beraturan, setiap simpul akan memiliki derajat 3. Sebuah simpul dengan derajat 4 (atau lebih) hanya dapat terjadi ketika dua (atau lebih) simpul bertepatan. Itu berarti ada batas panjang nol di antara mereka. Tetapi sisi itu harus tetap memiliki sisi yang sesuai dalam triangulasi Delaunay. Masalahnya adalah bahwa itu sewenang-wenang mana dari dua kemungkinan tepi yang Anda pilih, karena tepi panjang nol tidak memiliki arah yang terkait.

Untuk memvisualisasikan apa yang saya bicarakan, pertimbangkan untuk memulai dengan empat titik yang kurang teratur (sehingga kita mulai dengan hanya simpul derajat-3) dan secara bertahap menerjemahkannya ke posisi reguler mereka.

Kita dapat melakukan ini dengan dua cara berbeda, yang keduanya mengarah pada kasus degenerasi dalam diagram Anda. Anda akan melihat bahwa Anda berakhir dengan dua triangulasi Delaunay yang berbeda, yang keduanya merupakan batas yang valid untuk kasus degenerasi:

masukkan deskripsi gambar di sinimasukkan deskripsi gambar di sini

Saya berasumsi bahwa kode Anda tidak ada dalam kasus degenerasi ini karena satu dan lain alasan, tetapi tanpa benar-benar melihat bagaimana Anda menghitung triangulasi Delaunay dari diagram Voronoi, tidak mungkin untuk mengarahkan Anda lebih jauh dari ini.

Juga perhatikan bahwa memiliki degenerasi yang lebih tinggi (lebih dari empat titik yang didistribusikan pada sudut yang sama di sekitar lingkaran) mungkin akan memerlukan perhatian tambahan:

masukkan deskripsi gambar di sinimasukkan deskripsi gambar di sini

Animasi ini juga menunjukkan bahwa (bahkan dalam kasus non-degenerasi), tepian Voronoi dan Delaunay yang sesuai tidak harus benar-benar melintas dalam batas terbatasnya. Yang mungkin membuat lebih sulit untuk melihat bahwa 2 (atau 3) tepi yang melakukan triangulasi poligon reguler pada akhirnya benar-benar sesuai dengan beberapa tepi degenerasi yang semuanya ada di tengah. Juga catat bahwa secara total ada 5 triangulasi pentagon dan 14 triangulasi hexagon yang berbeda (walaupun saya tidak tahu apakah kesemuanya dapat diperoleh dengan mendeformasi triangulasi non-degenerasi).

Edit (oleh OP)

Diagram Voronoi yang dikomputasi dengan Boost.polygon memungkinkan untuk berjalan melewati setiap verteks Voronoi, dan setiap sisi yang terkait dengan simpul tersebut (searah atau berlawanan arah jarum jam). Dengan cara ini, dimungkinkan untuk membuat satu segitiga untuk setiap pasangan sisi (dua sisi yang terhubung akan terhubung ke 3 sel).


Anda dapat menjawab di sini juga atau saya akan menghapus pertanyaan saya yang lain.
arthur.sw

3
@ arthur.sw Cross-postingan umumnya tidak disarankan pada SE, jadi saya kira menghapusnya akan ada pilihan yang lebih baik.
Martin Ender

pembuat diagram voronoï interaktif: alexbeutel.com/webgl/voronoi.html
arthur.sw

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.