Maison >développement back-end >C++ >Comment déterminer si un point se trouve à l'intérieur d'un polygone en 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!