Algoritme dimulai dengan jalur yang Anda temukan sebelumnya, dalam hal ini daftar segitiga:
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.
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).
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 triarea2
dalam kode Mikko). Jika langkah maju untuk sisi tidak akan mengencangkan corong, kami tidak memperbarui sisi itu untuk iterasi portal saat ini (E).
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).
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.