Kami merilis earstrip, pentriangulasi poligon dari mesin peta kami, sebagai pustaka open-source kecil di bawah lisensi ISC, lisensi yang sama dengan yang digunakan earcut. Pustaka ini terdiri dari satu header C++ dan build WebAssembly yang dipublikasikan di npm, yang menerima argumen yang sama dengan earcut. Dalam C++ ia berjalan 14% lebih cepat dari earcut.hpp, dan di browser ia berjalan 1,4 hingga 2,1 kali lebih cepat dari earcut.js.
GPU hanya bisa mengisi segitiga, sementara peta sebagian besar terdiri dari poligon: bangunan, taman, area parkir, dan jalur rumput di antara rel trem. Sebelum poligon apa pun dapat diisi, garis tepinya harus dipotong menjadi segitiga. Peta offline kami untuk Voivodeship Masovia, wilayah di sekitar Warsawa, memiliki 3.740.425 poligon pada tingkat zoom 13. Pada satu inti M4 Pro, pentriangulasi Delaunay terbatas di mesin kami membutuhkan 2,93 detik untuk memproses semuanya.
Pada bulan Oktober ini kami menggantinya dengan ear clipping. Triangulasi Delaunay menghindari segitiga yang tipis dan berguna untuk interpolasi serta simulasi, tetapi isian datar tidak memerlukan kualitas itu, dan sebagian besar pekerjaan dihabiskan untuk bentuk sederhana. Hampir separuh poligon Masovia, yaitu 1,8 juta, memiliki empat simpul atau kurang, namun kode Delaunay menghabiskan 419 md untuk membangun triangulasinya dari awal. Ear clipping menghapus satu sudut setiap kali, dan setiap poligon sederhana dengan lebih dari tiga simpul memiliki setidaknya dua telinga yang tidak tumpang tindih, sehingga selalu ada potongan lain yang bisa dilakukan.
Untuk mendokumentasikan pekerjaan ini, kami membangun ulang ear clipper dengan satu ide per commit dan mengukur setiap langkah pada 3,7 juta poligon yang sama. Versi final memproses seluruh dataset dalam 489 md, yaitu angka yang ada di judul.
Sumber: Hacker News · Diringkas oleh HeadlinesBriefing