在C# 中確定多邊形內的點位置
使用多邊形時,常見的任務是確定給定點是否位於其範圍內邊界。在本文中,我們將探討如何在不依賴外部函式庫的情況下在 C# 中實現此功能。
我們的方法涉及兩個步驟:
1.計算外邊界:
我們首先透過尋找多邊形頂點的最小和最大X 和Y 座標來定義多邊形的外邊界。這有助於我們快速確定該點是否在多邊形的邊界框內。
2.檢查點包含:
為了確定點是否確實在多邊形內部,我們使用「IsPointInPolygon」演算法。此演算法迭代多邊形的頂點,檢查該點是否位於連接每對頂點的線的左側或右側。如果該點始終位於這些線的同一側,則確定它位於多邊形內部。
以下是 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; }
透過以下方式透過這些步驟,我們只需使用 C# 和 WinForms 就可以有效地確定給定點是否位於多邊形內。
以上是C# 如何判斷一個點是否在多邊形內?的詳細內容。更多資訊請關注PHP中文網其他相關文章!