Katakanlah kita memiliki bentuk bergerigi:
Dan dua makhluk bergerak di sepanjang garis besarnya.
Lalu kami menghaluskan bentuk sepenuhnya dengan menarik sudut keluar.
Kami mendapatkan ini:
Sangat mudah untuk melihat sekarang bahwa Orange bergerak CW dan CCW hijau. Bagaimana saya bisa tahu ke arah mana mereka bergerak tanpa menghaluskan bentuknya?
Gambar baru
Jawaban:
Gambar garis hingga tak terbatas dan hitung berapa kali Anda melewati bentuk (genap atau ganjil), tidak termasuk segmen tempat makhluk itu berada. Kemudian periksa apakah makhluk itu pergi ke kiri atau kanan garis itu.
Dalam contoh ini, kami menyilangkan bentuk dua kali (bahkan genap) dan kami pergi ke kiri. Hasilnya langsung dari tabel ini:
Dalam pseudocode:
sumber
Itu tergantung pada informasi apa yang Anda miliki dari struktur data bentuk Anda, tetapi makhluk yang memindahkan CW di sepanjang garis bentuk akan selalu memiliki bagian dalam bentuk di sebelah kanannya, dan makhluk yang bergerak CCW akan memiliki bagian dalam bentuk di kirinya.
sumber
sumber
Anda harus tahu ke arah mana poligon didefinisikan, ke arah mana simpul mengitarinya.
Jika Anda tidak tahu ini, Anda bisa mengatasinya dengan menghitung luas poligon:
The tanda dari hasil (positif atau negatif) akan memberitahu Anda apakah itu searah jarum jam atau berlawanan arah jarum jam. Anda perlu mencoba ini untuk melihat ke arah mana putaran itu bagi Anda karena itu tergantung pada sistem koordinat Anda.
Jika bentuknya searah jarum jam:
Jika bentuknya berlawanan arah jarum jam:
sumber
Tampaknya Trevor sudah membahas pertanyaan ini, tetapi inilah solusi saya:
hitung luas yang Anda bentuk, artinya
menggunakan area yang dihitung seperti di atas Anda dapat dengan mudah mengetahui apakah bentuk itu sendiri searah jarum jam atau tidak. itu searah jarum jam hanya jika area di bawah nol.
periksa apakah objek bergerak dengan cara yang sama seperti simpul adalah urutan atau dalam arah yang berlawanan.
sumber