首頁 >後端開發 >C++ >C# 如何判斷一個點是否在多邊形內?

C# 如何判斷一個點是否在多邊形內?

Barbara Streisand
Barbara Streisand原創
2025-01-04 06:24:43920瀏覽

How to Determine if a Point Lies Inside a Polygon in C#?

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn