определение того, находится ли точка в полигоне частой задачей в вычислительной геометрии. Поиск эффективного метода для этой задачи выгодно при оценке большого количества точек. Здесь мы исследуем и сравниваем два обычно используемых метода: трассировка лучей и функция Matplotlib's path.contains_points.
метод трассировки Ray
метод отслеживания луча пересекает горизонтальный Ray. Основная точка с боковыми сторонами многоугольника. Он считает количество пересечений и определяет, находится ли точка внутри многоугольника на основе его четности.
matplotlib's path.contains_points funct Объект пути для представления многоугольника. Он проверяет, находится ли данная точка в пределах определенного пути. Эта функция часто быстрее, чем подход трассировки лучей, как видно из фрагмента кода, предоставленного:
из времени импорта времени
импорт matplotlib.path As mpltpathpolygon = [[np.sin (x) 0,5, np.cos (x) 0,5] для x в np.linspace (0, 2*np.pi, 100)]
] Полигоны и случайные точки
]points = np.random.rand (10000, 2)
Ray Tracing Tracing Time
start_time = time ()
inside1 = [ray_traging_method (point [0], point [1 ], Полигон) для точки в точках]
print ("трассировка лучи из -за прошедшего времени:" str (time () - start_time))start_time = time ( )
matplotlib содержит_points ulpsed time
path = mpltpath.path (polygon)
inside2 = path.contains_points (points)print ("matplotlib содержит_points ulpsed time:" str (time () - start_time))
другие параметры
] в дополнение к этим методам, Сложный пакет, специально разработанный для геометрических операций, обеспечивает эффективные функции для проверки с точки зрения полигона. ]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3