ホームページ >バックエンド開発 >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# で実装する方法を検討します。

私たちのアプローチには 2 つのステップが含まれます。

1.外側の境界を計算する:

まず、頂点の最小と最大の X 座標と最大の 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。