Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk menentukan sama ada titik terletak dalam poligon dalam C#?
Titik C# dalam Poligon: Menentukan sama ada Titik Terletak dalam Poligon
Pertimbangkan senario di mana anda ingin menentukan sama ada titik wujud dalam sempadan poligon. Untuk menyelesaikan tugas ini dalam C# menggunakan WinForms, ikuti langkah berikut:
Salah satu algoritma tersebut ialah Ray Kaedah silang, yang melibatkan langkah-langkah berikut:
a. Bayangkan melukis sinar mendatar dari titik yang diberikan kepada infiniti.
b. Kira bilangan kali sinar bersilang dengan tepi poligon.
c. Jika kiraan adalah ganjil, titik berada di dalam poligon; jika genap, ia berada di luar poligon.
Berikut ialah contoh pelaksanaan algoritma Ray Crossing dalam C#:
using System; using System.Collections.Generic; using System.Drawing; public class Polygon { List<PointF> vertices = new List<PointF>(); public bool Contains(PointF point) { if (IsOutsideBoundingBox(point)) return false; int intersectionCount = 0; for (int i = 0; i < vertices.Count; i++) { int j = (i + 1) % vertices.Count; PointF a = vertices[i], b = vertices[j]; if ((a.Y > point.Y && b.Y <= point.Y) || (a.Y <= point.Y && b.Y > point.Y)) { double slope = (double)(b.Y - a.Y) / (b.X - a.X); if (point.X < a.X + (point.Y - a.Y) / slope) intersectionCount++; } } return intersectionCount % 2 == 1; } private bool IsOutsideBoundingBox(PointF point) { return point.X < Xmin || point.X > Xmax || point.Y < Ymin || point.Y > Ymax; } }
Pelaksanaan ini memastikan ketepatan dan kecekapan semasa menentukan sama ada titik berada dalam lingkungan poligon.
Atas ialah kandungan terperinci Bagaimana untuk menentukan sama ada titik terletak dalam poligon dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!