В настоящее время я сталкиваюсь со сценарием удаления линии в моем проекте. Я надеюсь получить некоторые предложения оттуда. Далее следует абстрагироваться от конкретной проблемы:
Двумерная область m * n с множеством неправильных кривых, каждая из которых записана во многих точках: [(x1, y1), (x2, y2), (x3, y3) ...], хранится в виде массивов: array1, array2 ..., теперь есть окружность (x, y) с радиусом r, мне нужно подтвердить, есть ли пересечение окружности и этих линий,и выберите линии с пересечениями. Кроме того, координаты и радиус круга постоянно меняются, а нерегулярная кривая меняется, но изменение происходит не очень быстро, поэтому мне нужно рассмотреть возможность использования кэша для повышения производительности.
Рис. случай:
Некоторые из моих мыслей: На самом деле, даже если Он пересекает все точки один раз, сложность O (N), но здесь N немного велико, и потому что круг меняется в реальном времени, поэтому производительность все еще относительно низкая. Я могу выбрать использование квадродерева, но это не типичный сценарий двухмерного столкновения, и я должен также учитывать, что текущий метод хранения не выполняется, поэтому мне нужно выполнить синхронное обновление в реальном времени двух структур данных, ноОбщий вид должен быть лучше, чем первый метод, но я не знаю, если это правильный путь. Кроме того, я думаю, что здесь должно быть лучшее решение.
Есть ли какие-нибудь хорошие идеи или соответствующий опыт, которым можно поделиться? Большое спасибо