У меня есть алгоритмическая проблема на картезианской плоскости. Мне нужно эффективно искать геометрические фигуры, которые пересекаются с данной точкой. Существует несколько форм (прямоугольник, круг, треугольник и многоугольник), но это не важно, потому что определение фактического включения точки не является проблемой здесь, я буду реализовывать их самостоятельно. Проблема заключается в определении того, какие формы необходимо проверить для включения с данной точкой. Итерация через все мои фигуры на плоскости и запуск метода включения точек на каждом из них неэффективна, так как количество экземпляров форм будет довольно большим. Моя первая идея состояла в том, чтобы разделить плоскость на сегменты (плоскость конечна, но слишком велика для любого 3D-массива), и при добавлении формы в базу данных я бы определил, с какими сегментами она будет пересекаться, и сохранить их в объекте форма. Затем, когда дается точка для проверки включения, мне нужно будет только определить сегмент, в котором находится точка, а затем проверить включение только с объектами, которые пересекаются с этим сегментом.Поиск геометрической формы на декартовой плоскости по координатам
Это путь? Я не знаю, оптимален ли метод, который я описал, или если я чего-то не упускаю. Любая помощь будет оценена ..
Заранее спасибо
P.S .: Я буду писать это в C++. Это не очень актуально, так как это скорее алгоритмическая проблема, но я хотел бы выразить это, если кому-то было любопытно ...
Какие 3D-массивы? –