Definisi : Sebuah poligon dalam bidang disebut monoton sehubungan dengan garis lurus , jika setiap garis ortogonal ke memotong paling banyak dua kali
Diberikan poligon , apakah mungkin untuk menentukan apakah ada garis sehingga poligon adalah monoton sehubungan dengan ? Jika ya, bagaimana?L P L
Sebelumnya, saya bertanya pertanyaan yang terkait (di mana saya bertanya bagaimana untuk menentukan apakah poligon adalah monoton sehubungan dengan baris tertentu), tapi sekarang saya tertarik dalam kasus ketika adalah tidak diberikan atau ditentukan di muka.
Jawaban:
Itu mungkin.
Pertimbangkan Anda poligon dan pertimbangkan simpul "cekung". Mereka menentukan dengan tepat garis mana yang akan memotong poligon lebih dari dua kali. Pada gambar berikut ini saya menandai interval (merah) dari sudut terlarang. Jika Anda menempatkan mereka bersama-sama dan melihat lubang di disk merah, maka ada sudut resmi (berwarna biru). Poligon tersebut kemudian monoton sehubungan dengan garis kemiringan (berwarna hijau).δ −1/tanδ
Sekarang algoritma.
Biarkan menjadi simpul ke- dari poligon. Pertama hitung sudut absolut tepi dan sudut dalam dari simpul . Gunakan fungsi yang tersedia dalam semua bahasa pemrograman yang baik.vi=(xi,yi) i αi (vivi+1) βi vi
atan2
Balikkan urutan simpul jika tidak dalam urutan berlawanan arah jarum jam, yaitu jika tidak negatif. ( : berlawanan arah jarum jam, : searah jarum jam).s=∑iβi−nπ s=−2π s=2π
Berikut ini hanya untuk sudut dalam yang lebih besar dari yaitu, . Yang merah di foto saya. Tujuannya adalah untuk menemukan sudut yang tidak ada dalam modulo . Yaitu sedemikian sehingga untuk semua sedemikian rupa sehingga :m π βj>π δ ∪j[αj+1,αj] π j βj>π
di mana sini nilai normal di . Kasus kedua sesuai dengan interval yang melampaui (jadi kali ini harus "di dalam").αj αj [ 0 , π ) π δ
Mungkin ada cara yang lebih cepat untuk melakukan ini tetapi satu di adalah mengurutkan nilai ke dan untuk menguji .O ( n2) αj mod π γ1, ... γm δ ∈{ γ12, γ1+ γ22, ... , γm - 1+ γm2, γm+ π2}
Jika Anda telah menemukan beberapa maka ada dan dengan kemiringan . Jika tidak tidak monoton.δ L. - 1 / tanδ P
sumber