ポリゴン内の C# ポイント: ポイントがポリゴン内にあるかどうかを判断する
ポリゴン内にポイントが存在するかどうかを判断するシナリオを考えてみましょう。多角形の境界。 WinForms を使用して C# でこのタスクを実行するには、次の手順に従います。
そのようなアルゴリズムの 1 つが Ray です。 Crossing メソッド。これには次の手順が含まれます。
a.指定された点から無限遠まで水平光線を描くことを想像してください。
b.光線が多角形のエッジと交差する回数を数えます。
c.カウントが奇数の場合、ポイントは多角形の内側にあります。偶数の場合、ポリゴンの外側にあります。
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; } }
この実装により、点がポリゴン内にあるかどうかを判断しながら、精度と効率が保証されます。ポリゴン。
以上がC# で点がポリゴン内にあるかどうかを判断する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。