다각형의 C# 점: 점이 다각형 내에 있는지 확인
점이 다각형 내에 있는지 확인하려는 시나리오를 고려합니다. 다각형의 경계. WinForms를 사용하여 C#에서 이 작업을 수행하려면 다음 단계를 따르세요.
그러한 알고리즘 중 하나가 Ray입니다. 다음 단계를 포함하는 교차 방법:
a. 주어진 점에서 무한대로 수평 광선을 그린다고 상상해 보세요.
b. 광선이 다각형의 가장자리와 교차하는 횟수를 셉니다.
c. 개수가 홀수이면 점이 다각형 내부에 있는 것입니다. 짝수인 경우에도 폴리곤 외부에 있습니다.
다음은 C#에서 Ray Crossing 알고리즘을 구현한 예입니다.
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; } }
이 구현은 점이 폴리곤 내에 있는지 확인하는 동시에 정확성과 효율성을 보장합니다. 다각형.
위 내용은 C#에서 점이 다각형 내에 있는지 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!