Задача вычислительной геометрии:
Точка P0
выбирается случайным образом на ребре (например, EB
) многоугольника (например, BCDE
), чтобы найти возможные точки (например, P1,P2,P3,...
) на других ребрах на основе заданного расстояния (т.е. r
). Следующая демонстрация показывает решение путем нахождения пересечений между окружностью, центрированной в точке P0
, и краями многоугольника. Таким образом, проблема в основном может быть решена с помощью Circle--Line-Segment
анализа пересечений.
Интересно, есть ли более эффективный метод для этой очень простой задачи с точки зрения стоимости вычислений? Процесс будет оценен в несколько million times
, поэтому любое улучшение представляет интерес.
- окончательное решение получит выгоду от Python power;
- вычисление ядра будет в Fortran , если потребуется.
Обновление:
Спасибо за ваши комментарии. Пожалуйста, примите во внимание мои комментарии к комментариям, которые помогут уточнить вопрос больше. Не желаю повторять их здесь, поощряю к рассмотрению все комментарии и ответы;).
Я только что реализовал метод Circle--Line-Segment Intersection
на основе найденного алгоритма [здесь] . На самом деле я адаптировал его для работы с линейными сегментами. Тест алгоритма, реализованного в Python, выглядит следующим образом:
Количество отрезков линии: 100,000
и система обычного рабочего стола. Истекшее время: 15 seconds
. Надеюсь, что это полезно, чтобы дать некоторое представление о стоимости вычислений. Внедрение ядра в Fortan может значительно улучшить производительность.
Однако перевод - последний шаг.