Caranya adalah dengan mencari rangkaian lengkap segmen garis berpotongan yang mendefinisikan setiap luas (poligon).
Misalkan ruas garis diberi nama dengan huruf (A, B, C, ...).
Saya akan mulai dengan membuat tabel yang memungkinkan Anda menemukan perpotongan berdasarkan segmen garis.
A -> B
A -> C
A -> D
B -> A
C -> A
C -> D
D -> A
(Dalam contoh ini, ACD membentuk luas segitiga, dan B hanyalah ruas garis nyasar yang kebetulan memotong A.)
Pilih ruas garis, katakanlah A, dan periksa perpotongan pertamanya, yang kebetulan berada dengan ruas garis B. Sekarang kita mulai memindai perpotongan B. B terhubung kembali ke A, yang menyelesaikan suatu rangkaian, tetapi hanya ada dua langkah, jadi ini bukan area valid.
Karena B sudah tidak mempunyai persimpangan lagi, kita mundur dan melihat persimpangan A berikutnya, yaitu dengan C. Perpotongan pertama C adalah dengan A, yang menyelesaikan suatu rangkaian, tetapi hanya dua langkah, jadi itu bukan daerah yang valid. Namun perpotongan C berikutnya adalah D, dan perpotongan pertama D adalah A, yang menyelesaikan rangkaian tiga langkah, jadi sekarang kita mempunyai luas valid, khususnya segitiga. Luas ditentukan oleh titik perpotongan yang kita gunakan di sirkuit kita: Pac, Pcd, Pda.
Setelah Anda menjelajahi semua kemungkinan jalur dari A, Anda akan mulai lagi dengan B. Perhatikan bahwa Anda akan menemukan area beberapa kali, jadi Anda harus memfilter duplikatnya. Tapi Anda tidak bisa melewatkan pemeriksaan B sama sekali, karena mungkin itu adalah sisi dari area lain yang belum Anda temukan.
person
Adrian McCarthy
schedule
31.05.2018