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