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