Tentukan sisi garis mana titik itu berada
Untuk menentukan kedudukan titik relatif kepada garis, bingkai mesti diwujudkan. Rangka kerja ini melibatkan pemilihan dua titik (A dan B) pada garis dan membentuk garis khayalan di antara mereka. Matlamatnya adalah untuk membahagikan set mata yang diberikan kepada dua set yang berbeza: mata yang terletak di sebelah kiri garisan dan mata yang terletak di sebelah kanan garisan.
Pada mulanya, cuba tentukan lokasi titik Z menggunakan sudut antara vektor A-Z-B. Andaikan bahawa sudut kurang daripada 180 darjah berada di sebelah kanan garis, manakala sudut lebih besar daripada 180 darjah adalah ke kiri. Walau bagaimanapun, disebabkan oleh batasan matematik, pendekatan ini membawa kepada keputusan yang tidak konsisten, kerana sudut yang dikira sentiasa kurang daripada 180 darjah.
Untuk mengatasi had ini, kaedah yang lebih dipercayai ialah menggunakan produk silang. Diberi garis A--B dan titik C, anda boleh menggunakan formula berikut untuk menentukan lokasi titik C:
<code class="language-javascript">isLeft(a, b, c) { return (b.x - a.x)*(c.y - a.y) - (b.y - a.y)*(c.x - a.x) > 0; }</code>
Jika titik berada di sebelah kanan garis lurus, nilai yang dikira oleh formula ini adalah lebih besar daripada 0; jika titik berada di sebelah kiri garis lurus, nilainya adalah kurang daripada 0; adalah kolinear (iaitu, titik C berada pada garis lurus A--B), nilainya ialah 0.
Untuk garis mendatar, anda boleh mengubah suai formula untuk menentukan sama ada titik C berada di atas atau di bawah garis:
<code class="language-javascript">isAbove(a, b, c) { return (c.y - a.y) > 0; }</code>
Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Menentukan dengan Cekap sama ada Titik terletak di Kiri atau Kanan Garisan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!