OK untuk Point in Polygon saja:
Saya pikir masalahnya didasarkan pada "sifat fraktal" dari objek 2d dan distribusi informasi spasial yang tidak pasti dan tidak seimbang. Jika Anda memiliki kisi-kisi biasa, mudah untuk menghitung posisi atau hubungan sel. Tetapi isoline model terrain mungkin memiliki bagian yang tidak rumit di sisi dan bagian yang rumit secara matematis di sisi lain (bagian yang secara morfologis aktif seperti bubungan, lembah ...).
Pengindeksan mencoba menangani dua hal:
Rutin cepat yang memberi Anda satu set ember tempat Anda mengumpulkan objek yang dapat secara spasial membingungkan (ember!). Dan BBox mudah dihitung dan ditangani.
Seperangkat relasi (tumpang tindih, sentuh) untuk membedakan atau menghubungkan hal-hal spasial (objek).
Sayangnya BBox tidak akan memberi Anda petunjuk, berapa banyak poin dalam setiap BBox, bagaimana objek dibentuk (lubang, cembung, ...) dan bagaimana info tersebut didistribusikan secara lokal (90% titik di sudut kiri atas jendela). BBox). Jadi, Anda dapat menemukan anggota operasi cepat pada tingkat objek dan kehilangan banyak waktu dalam membangun hubungan tes.
Untuk menggunakan pendekatan yang lebih tidak teratur, triangulasi IMO dalam kombinasi dengan dan quadtrees adalah salah satu strategi, di mana Anda dapat mendekatkan bucketing dan bagian building relasi dari indeks (bucket == building build).
Untuk contoh Point-in-Polygon-Test dimungkinkan untuk membuat cache tidak teratur dengan menggunakan:
- ! triangulasi delaunay terbatas pada penutup poli Anda, dengan titik-titik tepi perbatasan tambahan untuk deteksi penutup di luar
- memasukkan ini ke dalam skema pengindeksan quadtree dengan tidak lebih dari N segitiga per kotak (ember fraktal)
- temukan set segitiga yang merupakan titik - daun di quadtree
- temukan segitiga di mana titik terletak (bagian uji di atas maks. N segitiga)
- dan meminta ID poligon dari simpul segitiga
- jika ID unik, titik itu milik poligon, jika bukan di luar
Biaya untuk membangun timah dan quadtrees sangat tinggi dan sulit untuk dihitung dan quadtree harus menyeimbangkan segitiga besar dan kecil (segitiga yang tidak muat di kotak subtree yang lebih kecil).
Beberapa Alat dan Tautan:
Triangle - Membatasi triangulasi poligon
Quadtrees - Dengan contoh sumber
Stony Brook Repository - Struktur data dan geometri diskrit