Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk menentukan sama ada titik terletak di dalam poligon dalam C#?
Menentukan Kedudukan Titik dalam Poligon dalam C#
Apabila bekerja dengan poligon, tugas biasa adalah untuk menentukan sama ada titik tertentu terletak dalam sempadan. Dalam artikel ini, kami akan meneroka cara untuk melaksanakan fungsi ini dalam C# tanpa bergantung pada perpustakaan luaran.
Pendekatan kami melibatkan dua langkah:
1. Kira Sempadan Luar:
Kami mula-mula mentakrifkan sempadan luar poligon dengan mencari koordinat X dan Y minimum dan maksimum bagi bucunya. Ini membantu kami menentukan dengan cepat sama ada titik itu berada dalam kotak sempadan poligon.
2. Kemasukan Titik Semak:
Untuk menentukan sama ada titik itu sebenarnya berada di dalam poligon, kami menggunakan algoritma "IsPointInPolygon". Algoritma ini berulang melalui bucu poligon, menyemak sama ada titik itu terletak di sebelah kiri atau kanan garis yang menghubungkan setiap pasangan bucu. Jika titik secara konsisten terletak pada sisi yang sama bagi garisan ini, ia ditentukan untuk berada di dalam poligon.
Berikut ialah contoh pelaksanaan algoritma dalam C#:
public bool IsPointInPolygon(Point[] polygon, Point point) { bool result = false; int j = polygon.Length - 1; for (int i = 0; i < polygon.Length; i++) { if (polygon[i].Y < point.Y && polygon[j].Y >= point.Y || polygon[j].Y < point.Y && polygon[i].Y >= point.Y) { if (polygon[i].X + (point.Y - polygon[i].Y) / (polygon[j].Y - polygon[i].Y) * (polygon[j].X - polygon[i].X) < point.X) { result = !result; } } j = i; } return result; }
Dengan mengikuti langkah ini, kita boleh menentukan dengan cekap sama ada titik tertentu terletak dalam poligon menggunakan hanya C# dan WinForms.
Atas ialah kandungan terperinci Bagaimana untuk menentukan sama ada titik terletak di dalam poligon dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!