Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Kita Boleh Menentukan dengan Cekap sama ada Titik terletak di Kiri atau Kanan Garisan?

Bagaimanakah Kita Boleh Menentukan dengan Cekap sama ada Titik terletak di Kiri atau Kanan Garisan?

Patricia Arquette
Lepaskan: 2025-01-21 05:11:08
asal
193 orang telah melayarinya

How Can We Efficiently Determine if a Point Lies to the Left or Right of a Line?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan