Maison >développement back-end >C++ >Comment déterminer si un point se trouve à l'intérieur d'un polygone en C# ?

Comment déterminer si un point se trouve à l'intérieur d'un polygone en C# ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-04 06:24:43924parcourir

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

Détermination de la position d'un point dans un polygone en C#

Lorsque vous travaillez avec des polygones, une tâche courante consiste à déterminer si un point donné se trouve dans son frontières. Dans cet article, nous explorerons comment implémenter cette fonctionnalité en C# sans recourir à des bibliothèques externes.

Notre approche comporte deux étapes :

1. Calculer les limites extérieures :

Nous définissons d'abord les limites extérieures du polygone en trouvant les coordonnées X et Y minimales et maximales de ses sommets. Cela nous aide à déterminer rapidement si le point se trouve dans le cadre de délimitation du polygone.

2. Vérifier l'inclusion du point :

Pour déterminer si le point est réellement à l'intérieur du polygone, nous utilisons l'algorithme "IsPointInPolygon". Cet algorithme parcourt les sommets du polygone, vérifiant si le point se trouve à gauche ou à droite de la ligne reliant chaque paire de sommets. Si le point se trouve systématiquement du même côté de ces lignes, il est déterminé comme étant à l'intérieur du polygone.

Voici un exemple d'implémentation de l'algorithme en 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;
}

En suivant Ces étapes, nous pouvons déterminer efficacement si un point donné est situé dans un polygone en utilisant uniquement C# et WinForms.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn