Déterminer si un point se trouve dans un polygone est une tâche fréquente en géométrie computationnelle. Trouver une méthode efficace pour cette tâche est avantageux lors de l’évaluation d’un grand nombre de points. Ici, nous explorons et comparons deux méthodes couramment utilisées : le traçage de rayons et la fonction path.contains_points de Matplotlib.
Méthode de traçage de rayons
La méthode de traçage de rayons croise un rayon horizontal de le point examiné avec les côtés du polygone. Il compte le nombre d'intersections et détermine si le point est à l'intérieur du polygone en fonction de sa parité.
La fonction path.contains_points de Matplotlib
La fonction path.contains_points de Matplotlib utilise un objet chemin pour représenter le polygone. Il vérifie si le point donné se trouve dans le chemin défini. Cette fonction est souvent plus rapide que l'approche du lancer de rayons, comme le montre l'extrait de code fourni :
from time import time
import matplotlib.path as mpltPathPolygone et points aléatoires
polygone = [[np.sin(x) 0.5, np.cos(x) 0.5] pour x dans np.linspace(0, 2*np.pi, 100)]
points = np.random.rand(10000, 2)Temps écoulé du lancer de rayons
start_time = time()
inside1 = [ray_tracing_method(point[0], point[ 1], polygone) pour le point en points]
print("Ray Tracing Temps écoulé : " str(time() - start_time))Matplotlib contient_points temps écoulé
start_time = time ()
path = mpltPath.Path(polygon)
inside2 = path.contains_points(points)
print("Matplotlib contain_points Temps écoulé : " str(time() - start_time))
< /pre>Le code ci-dessus signale des temps d'exécution nettement plus rapides pour l'approche de Matplotlib par rapport au lancer de rayons.
Autres options
En plus de ces méthodes , le package Shapely spécialement conçu pour les opérations géométriques fournit des fonctions efficaces pour les vérifications de points dans les polygones.
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!