Bagaimana cara kerja Algoritma Corong Stupid Sederhana?


Jawaban:


18

Algoritme dimulai dengan jalur yang Anda temukan sebelumnya, dalam hal ini daftar segitiga:

jalan

Kode di bagian bawah posting blog Mikko membangun array portal, yang merupakan daftar segmen garis yang mewakili segmen garis antara poligon jalur. Ini adalah "portal" yang dihaluskan oleh jalur yang harus dilalui (atau tepi poligon dari "mari kita lacak titik tengah tepi poligon"). Perhatikan bahwa daftar portal dimulai dan diakhiri dengan segmen garis yang merosot pada titik awal dan tujuan.

Daftar portal ini ditampilkan sebagai segmen garis putus-putus kuning di gambar-gambarnya.

portal

Algoritme dimulai dengan corong lebar dan dilanjutkan dengan menggerakkan sisi corong maju ke depan sepanjang titik sisi portal (titik akhir segmen garis) selama ini mengencangkan corong (AD).

algoritma

Ini berarti setiap bergerak maju harus memindahkan tepi corong ke dalam, ini dapat diperiksa dengan produk silang dari vektor yang mewakili sisi lama dan potensi sisi baru ( P × Q pada gambar di bawah ini; juga lihat triarea2dalam kode Mikko). Jika langkah maju untuk sisi tidak akan mengencangkan corong, kami tidak memperbarui sisi itu untuk iterasi portal saat ini (E).

bergerak ke dalam

Kasus lain yang perlu ditangani adalah ketika corong berubah menjadi segmen garis. Untuk menjelaskan hal ini, algoritma memeriksa apakah salah satu sisi berada pada sisi "salah" dengan menggunakan produk silang lagi, kali ini vektor yang dibuat oleh puncak saluran dan titik akhir sisi kanan dan kiri masing-masing ( R × S dalam gambar di bawah).

corong yang merosot

Jika hal ini terjadi, vektor dari puncak corong dan titik ujung sisi yang benar ditambahkan ke jalur yang diperhalus ( R dalam gambar di atas) dan algoritme dimulai kembali dengan titik akhirnya sebagai puncak baru (FG), kecuali, tentu saja, jika itu adalah titik tujuan.


2
@Rolfcore Apakah jawabannya jelas? Jika tidak, bagian mana yang perlu diperbaiki?
Eric

Saya pikir dia hanya lupa untuk menerima jawabannya, yang ini sangat bagus dan harus ditingkatkan secara serial ^^.
GameDeveloper

Mungkin, pegadaian, adalah bahwa dalam gerakan F Anda tidak memberi tahu bahwa kita tidak memulai lagi dari awal karena ada kemungkinan sudut sempit yang menunjuk ke selatan akan memungkinkan corong paling ketat, jadi kita harus menunggu sisi bot benar-benar gagal. tes dan bukan hanya satu. Jadi kami melakukannya di G bukannya F .. penjelasan yang baik pula :)
GameDeveloper
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.