


Bagaimana untuk mengetahui sama ada titik berada di dalam poligon menggunakan JavaScript
Dalam pembangunan bahagian hadapan, kita sering menghadapi situasi di mana kita perlu menentukan sama ada titik berada dalam poligon. Sebagai contoh, apabila kami menambah acara klik pada peta, kami perlu menentukan sama ada titik yang diklik oleh pengguna berada dalam kawasan tertentu untuk menentukan operasi yang sepadan. Artikel ini akan memperkenalkan cara menggunakan JavaScript untuk menentukan sama ada titik berada dalam poligon.
1. Algoritma Poligon
Terdapat banyak algoritma untuk menentukan sama ada sesuatu titik berada dalam poligon, antaranya kaedah sinar dan kaedah hasil titik lebih biasa digunakan. Artikel ini akan memperkenalkan kaedah produk titik sebagai contoh.
Idea teras kaedah hasil titik ialah menggunakan sifat vektor untuk menganggap titik P pada setiap bucu poligon sebagai vektor, dan kemudian mengira sama ada titik P berada di dalam poligon melalui hasil darab titik antara vektor. Secara khusus, sama ada titik P berada di dalam poligon bergantung pada tanda hasil tambah titik P dan vektor sisi poligon.
2. Formula pengiraan produk dot
Formula pengiraan produk titik adalah seperti berikut:
a · b = ax bx + ay oleh
Di mana a(x, y) dan b(x, y) ialah dua vektor, a · b mewakili hasil darab titiknya. Hasil darab titik ialah skalar yang mewakili kosinus sudut antara dua vektor.
Perlu diperhatikan bahawa jika hasil darab titik lebih besar daripada 0, ia bermakna sudut vektor kurang daripada 90 darjah; jika hasil darab titik kurang daripada 0, ia bermakna sudut vektor adalah lebih besar daripada 90 darjah; jika hasil produk titik adalah sama dengan 0, Ini bermakna vektor adalah menegak, iaitu, 90 darjah.
3 Tentukan sama ada titik berada dalam poligon
Seterusnya, kami akan memperkenalkan cara menggunakan kaedah hasil titik untuk menentukan sama ada titik P berada dalam poligon.
- Membina vektor
Pertimbangkan titik P pada setiap bucu poligon sebagai vektor Anda boleh membina vektor dengan mengira beza koordinat vektor. Secara khusus, jika koordinat titik P ialah (xp, yp) dan koordinat bucu ke-i poligon ialah (xi, yi), maka koordinat vektor P->i ialah (vx, vy), dan formula pengiraannya ialah:
vx = xi - xp;
vy = yi - yp; dan kita juga boleh mendapatkan titik P Vektor kepada bucu poligon.
- Seterusnya, kita perlu mengira hasil tambah titik titik P dan vektor sisi poligon. Jika hasil tambah titik adalah positif, maka titik P berada di luar poligon; jika hasil tambah titik adalah negatif, maka titik P berada di dalam poligon.
Perlu diambil perhatian bahawa vektor dalam formula produk titik perlu dinormalisasi terlebih dahulu, iaitu panjang vektor berskala kepada 1. Ini memastikan hasil darab titik hanya berkaitan dengan sudut antara vektor dan tidak dipengaruhi oleh panjang vektor.
Kod untuk mengira hasil titik adalah seperti berikut:
fungsi ialahPointInsidePolygon(titik, poligon) {
sudut var = 0,i, vertex1, vertex2;
untuk (i = 0; i
}vertex1 = polygon[i]; vertex2 = polygon[(i + 1) % n]; angle += polarAngle( point[0], point[1], vertex1[0], vertex1[1], vertex2[0], vertex2[1] );
kembali Math.abs(sudut) >= Math.PI ;
}
fungsi polarAngle(x, y, x1, y1, x2, y2) {
var angle2 = Math.atan2(y - y2, x - x2);
var diff = angle2 - angle1;
diff -= 2 * Math.PI;manakala (beza
}
diff += 2 * Math.PI;
return diff;
}
Antaranya, fungsi isPointInsidePolygon digunakan Untuk menentukan sama ada titik berada di dalam poligon, fungsi polarAngle digunakan untuk mengira hasil darab titik.
4. Ringkasan
Artikel ini memperkenalkan cara menggunakan Javascript untuk menentukan sama ada titik berada di dalam poligon. Perlu diingat bahawa kaedah produk titik hanya boleh digunakan untuk poligon cembung Untuk poligon cekung, algoritma lain perlu digunakan untuk pertimbangan. Dalam aplikasi praktikal, beberapa situasi khas perlu dipertimbangkan, seperti poligon dengan tepi bertindih atau bucu, bucu pada tepi poligon, dsb., yang memerlukan pertimbangan dan pemprosesan tambahan.
Atas ialah kandungan terperinci Bagaimana untuk mengetahui sama ada titik berada di dalam poligon menggunakan JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Hubungan antara HTML dan React adalah teras pembangunan front-end, dan mereka bersama-sama membina antara muka pengguna aplikasi web moden. 1) HTML mentakrifkan struktur kandungan dan semantik, dan React membina antara muka dinamik melalui komponenisasi. 2) Komponen React Gunakan sintaks JSX untuk membenamkan HTML untuk mencapai rendering pintar. 3) Kitaran Hayat Komponen Menguruskan Rendering HTML dan Kemas kini secara dinamik mengikut keadaan dan atribut. 4) Gunakan komponen untuk mengoptimumkan struktur HTML dan meningkatkan keupayaan. 5) Pengoptimuman prestasi termasuk mengelakkan penyampaian yang tidak perlu, menggunakan atribut utama, dan menjaga tanggungjawab tunggal komponen.

React adalah alat pilihan untuk membina pengalaman front-end interaktif. 1) React memudahkan pembangunan UI melalui komponen dan DOM maya. 2) Komponen dibahagikan kepada komponen fungsi dan komponen kelas. Komponen fungsi adalah lebih mudah dan komponen kelas menyediakan lebih banyak kaedah kitaran hayat. 3) Prinsip kerja React bergantung kepada algoritma DOM dan perdamaian maya untuk meningkatkan prestasi. 4) Pengurusan negeri menggunakan useState atau ini. Kaedah kitaran hayat seperti ComponentDidMount digunakan untuk logik tertentu. 5) Penggunaan asas termasuk membuat komponen dan pengurusan negeri, dan penggunaan lanjutan melibatkan cangkuk tersuai dan pengoptimuman prestasi. 6) Kesalahan biasa termasuk kemas kini status yang tidak betul dan isu prestasi, kemahiran debugging termasuk menggunakan reactdevtools dan sangat baik

React adalah perpustakaan JavaScript untuk membina antara muka pengguna, dengan komponen terasnya dan pengurusan negeri. 1) Memudahkan pembangunan UI melalui komponen dan pengurusan negeri. 2) Prinsip kerja termasuk perdamaian dan rendering, dan pengoptimuman dapat dilaksanakan melalui React.Memo dan Usememo. 3) Penggunaan asas adalah untuk membuat dan membuat komponen, dan penggunaan lanjutan termasuk menggunakan cangkuk dan konteksapi. 4) Kesalahan biasa seperti kemas kini status yang tidak betul, anda boleh menggunakan ReactDevTools untuk debug. 5) Pengoptimuman prestasi termasuk menggunakan react.memo, senarai virtualisasi dan codesplitting, dan menyimpan kod yang boleh dibaca dan dikekalkan adalah amalan terbaik.

React menggabungkan JSX dan HTML untuk meningkatkan pengalaman pengguna. 1) JSX membenamkan HTML untuk menjadikan pembangunan lebih intuitif. 2) Mekanisme DOM maya mengoptimumkan prestasi dan mengurangkan operasi DOM. 3) UI pengurusan berasaskan komponen untuk meningkatkan kebolehkerjaan. 4) Pengurusan negeri dan pemprosesan acara meningkatkan interaktiviti.

Komponen React boleh ditakrifkan oleh fungsi atau kelas, merangkumi logik UI dan menerima data input melalui prop. 1) Tentukan komponen: Gunakan fungsi atau kelas untuk mengembalikan elemen bertindak balas. 2) Rendering Component: React Call Render Kaedah atau Melaksanakan Komponen Fungsi. 3) Komponen multiplexing: Lulus data melalui prop untuk membina UI yang kompleks. Pendekatan kitaran hayat komponen membolehkan logik dilaksanakan pada peringkat yang berbeza, meningkatkan kecekapan pembangunan dan pemeliharaan kod.

React Mode Strict adalah alat pembangunan yang menyoroti isu -isu yang berpotensi dalam aplikasi React dengan mengaktifkan cek tambahan dan amaran. Ia membantu mengenal pasti kod warisan, hayat yang tidak selamat, dan kesan sampingan, menggalakkan amalan reaksi moden.

Serpihan bertindak balas membolehkan kumpulan kanak -kanak tanpa nod dom tambahan, meningkatkan struktur, prestasi, dan kebolehaksesan. Mereka menyokong kekunci untuk rendering senarai yang cekap.

Artikel ini membincangkan proses perdamaian React, memperincikan bagaimana ia mengemas kini DOM dengan cekap. Langkah -langkah utama termasuk mencetuskan perdamaian, mewujudkan DOM maya, menggunakan algoritma yang berbeza, dan memohon kemas kini DOM yang minimum. Ia juga meliputi perfo


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa