Menentukan segmen garis terpanjang dalam poligon yang melewati centroid-nya?

8

Seorang mahasiswa PhD mendekati saya baru-baru ini bertanya bagaimana seseorang akan menentukan garis lurus terpanjang yang melewati centroid dari sebuah poligon, hasilnya menjadi sebuah polyline daripada hanya tabel angka. Polyline akan berada dalam poligon mulai dari tepi di satu ujung, melewati centroid, dan kemudian berakhir di tepi yang berlawanan.

Adakah yang tahu cara menghitung ini?

Saya terkejut (tapi saya rasa saya menunjukkan ketidaktahuan saya) bahwa ini bukan antarmuka di ArcObjects.

Poligon mewakili tepi kawah gunung berapi tanpa pulau sehingga poligon dapat memiliki bentuk tidak teratur.

Hornbydd
sumber

Jawaban:

11

Algoritma sapuan radial akan baik-baik saja, Duncan. Sadarilah bahwa centroid dapat terletak di luar poligon, di mana tidak akan ada solusi dalam kasus tersebut. Perhatikan juga bahwa konstruksi ini aneh: sedangkan centroid adalah properti global poligon, garis yang Anda bangun adalah properti lokal poligon di sekitar centroid ini. Kombinasi ini tidak masuk akal untuk sebagian besar analisis geometris atau fisik di mana poligon mungkin non-cembung atau tidak berbentuk bintang sehubungan dengan centroid-nya. (Ini menjelaskan mengapa Anda tidak akan menemukannya di ArcObjects atau, mungkin, di tempat lain.) Anda mungkin bertanya lebih dalam pada siswa untuk mencari tahu apa yang ia coba lakukan dengan konstruksi ini untuk memastikan itu memenuhi tujuan yang dimaksud. .

whuber
sumber
1
Wow terima kasih atas tanggapan cepat mega! Anda berdua telah memberi saya beberapa kata kunci untuk dicari. "Radial sweep" terdengar rumit ...
Hornbydd
Perhatikan juga bahwa ada poligon di mana tidak ada "garis lurus terpanjang"; sebaliknya, mungkin ada banyak garis yang mungkin. [[Juga, saya bertaruh $ 1 bahwa siswa yang bersangkutan sedang merancang survei transek.]]
Dan S.
@Hornbydd: Ada yang kompleks, dan ada yang kompleks. Menerapkan sapuan radial tidak terlalu sulit sejauh geometri komputasi berjalan, tetapi menyelam ke dalam penulisan kode geometri komputasi untuk pertama kalinya dapat mengintimidasi. Saya akan dengan senang hati mengetikkan beberapa pseudocode untuk Anda jika Anda menginginkan titik awal.
Dan S.
Dan, saya menghargai tawaran Anda, tetapi saya bukan pengawas siswa, hanya beberapa pria acak yang dia hubungi. Meskipun sebagai pengembang GIS saya akan menarik untuk melihat beberapa pseudocode untuk mendapatkan ide dasar dari sapuan radial, tetapi tolong jangan menghabiskan waktu di atasnya karena Anda telah memberi saya beberapa petunjuk yang sangat dihargai.
Hornbydd
2
Pada catatan yang lebih ringan, saya memposting pertanyaan saya di situs ini, melihat respons whuber meledak dan membuat kopi, kembali, mengetik di google "radial polygon centroid" dan segera kembali ke halaman ini! Bagaimana bisa Google menemukan halaman ini begitu cepat dan mengintegrasikannya ke dalam pencarian mereka, pikiran boggles.
Hornbydd