«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Какой метод более эффективен для обнаружения с точки зрения полигона: трассировка лучей или matplotlib \ path.contains_points?

Какой метод более эффективен для обнаружения с точки зрения полигона: трассировка лучей или matplotlib \ path.contains_points?

Опубликовано в 2025-04-23
Просматривать:306

Which Method is More Efficient for Point-in-Polygon Detection: Ray Tracing or Matplotlib\'s path.contains_points?

эффективное обнаружение с пунктом-в полигоне в Python

определение того, находится ли точка в полигоне частой задачей в вычислительной геометрии. Поиск эффективного метода для этой задачи выгодно при оценке большого количества точек. Здесь мы исследуем и сравниваем два обычно используемых метода: трассировка лучей и функция Matplotlib's path.contains_points.

метод трассировки Ray

метод отслеживания луча пересекает горизонтальный Ray. Основная точка с боковыми сторонами многоугольника. Он считает количество пересечений и определяет, находится ли точка внутри многоугольника на основе его четности.

matplotlib's path.contains_points funct Объект пути для представления многоугольника. Он проверяет, находится ли данная точка в пределах определенного пути. Эта функция часто быстрее, чем подход трассировки лучей, как видно из фрагмента кода, предоставленного:

 

из времени импорта времени

импорт matplotlib.path As mpltpath


] Полигоны и случайные точки
]

polygon = [[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))


matplotlib содержит_points ulpsed time

start_time = time ( )

path = mpltpath.path (polygon)

inside2 = path.contains_points (points)

print ("matplotlib содержит_points ulpsed time:" str (time () - start_time))



] Код выше сообщает значительно быстрее время выполнения для подхода Matplotlib по сравнению с трассировкой лучей.

другие параметры

] в дополнение к этим методам, Сложный пакет, специально разработанный для геометрических операций, обеспечивает эффективные функции для проверки с точки зрения полигона. ]

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3