Saya mencoba untuk menghasilkan peta bintang dua dimensi yang cukup besar yang menunjukkan faksi / negara yang berbeda, masing-masing memiliki satu atau lebih sistem bintang. Saya ingin secara otomatis membuat batas / area untuk fraksi.
Idenya adalah untuk dasarnya pergi dari sesuatu seperti ini (titik-titik mewakili sistem bintang pada pesawat 2d, warna adalah afiliasi faksi)
untuk ini
Membuat peta seperti ini sepertinya persyaratan yang cukup umum, jadi pertanyaan saya yang sebenarnya adalah ini: Apakah ada algoritma standar untuk menghasilkan area keadaan seperti yang ditunjukkan? Jika demikian, dapatkah Anda menunjukkannya kepada saya? Jika tidak, dapatkah Anda memikirkan algoritma yang baik (ide dasar atau kode semu baik-baik saja)?
Kinerja algoritma bukan masalah utama bagi saya, jadi saya lebih suka memiliki peta "lebih cantik" daripada yang lebih cepat untuk menghasilkan. Pertanyaan serupa ini menawarkan pendekatan yang mungkin berlaku untuk masalah saya, meskipun dengan beberapa "prettification" diperlukan: Cara membuat peta dari grafik
Biarkan saya menjelaskan apa yang saya maksud ketika saya mengatakan lebih cantik: Di bagian bawah pertanyaan terkait, penanya menyajikan hasil akhirnya setelah menerapkan jawaban yang diterima. Masalah pertama saya di sini: Area untuk node # 6, # 9 dan # 12 sangat kecil dan berbentuk aneh. Selain itu, daripada tepi yang tajam, saya lebih suka tampilan yang lebih halus dan melengkung.
Sejauh ini ide saya sendiri, termasuk kelemahan / pertanyaan yang saya lihat bersama mereka:
- Hasilkan poligon "convex hull" untuk setiap faksi, lalu perluas sedikit. Masalah: Tidak ada fitur cekung. Juga, bagaimana Anda menangani tumpang tindih?
- Hasilkan grafik voronoi untuk titik-titik, kemudian gunakan tepi poligon voronoi antara sistem tetangga dari faksi yang berbeda sebagai batas. Masalah: Poligon besar di tepi peta - bagaimana cara mengidentifikasi dan memperbaikinya?
- Hasilkan poligon ukuran tetap untuk setiap titik, satukan semua poligon untuk satu faksi tunggal (menghasilkan satu "faksi poligon" besar yang berpotensi kompleks). Kemudian lakukan sesuatu untuk merekonsiliasi area yang tumpang tindih antara dua faksi. Masalah: Bagaimana tepatnya saya melakukan ini? Bukan proses yang sepele. Bagaimana jika ada tumpang tindih antara lebih dari dua faksi?
Bantuan Anda dihargai.
Tambahan: Setelah memikirkan dua jawaban pertama dan pendekatan masing-masing untuk menyelesaikan masalah, saya menyadari bahwa persyaratan saya di atas tidak lengkap.
Saya harus menambahkan bahwa peta dapat memiliki daerah berpenduduk jarang, artinya mungkin ada bintang atau gugusan bintang yang terisolasi. Saya ingin menampilkan masing-masing cluster dengan area berwarna yang berdekatan. Sesuatu seperti ini:
Saya menyadari bahwa ini mungkin memerlukan langkah pertama yang mengidentifikasi cluster, dan kemudian menjalankan algoritma yang sebenarnya untuk masing-masing cluster.