Каков алгоритм поиска объектов под курсором?
получается проблема представить эффективный алгоритм определения какие объекты должны подсвечиваться при перемещении курсора или быть выбраны при нажатии!
Мне известен "игровой" алгоритм определения объектов через параллельную плоскость где по цвету под курсором определяется принадлежность точки объекту, я думаю он не подходит, так как не справится при наложении нескольких объектов, и для определения соседних объектов для подсвечивания.
Прямой перебор всех созданных объектов и сравнение координат может все функции что мне нужны но мне он представляется ужасно медленным!
Нужна помощь!
Вот небольшой пример, не совсем по теме, но поиск под курсором есть.
Но все равно что то гложут сомнения что это будет быстро.
И я не понял как можно применить здесь хеширование, что сворачивать?
Координаты узловых точек надо напрямую сравнивать, здесь хешированием ничего не выиграть - нечего упрощать в сравнении.
Для определения пересечения с промежуточной точкой отрезков, нужно решение уравнения - где здесь применять хеширование?
Также и при определении что курсор приближается к узловым точкам или соединяющих их линиям!
Если можешь, расскажи наглядно!
Или покажи цикл поиска, упрощенно - хоть на псевдокоде / комментариях
- пожалуйста!
ЗЫ
Координаты узловых точек, скорее всего, не придется сравнивать напрямую, если не хочешь, конечно, заставлять пользователя целиться и попадать в конкретные пиксели экрана. Пользователь, все равно должен попадать в некоторую характерную область.
Однако, для твоих целей лучше обратить внимание на алгоритм
Если векторный редактор - то сделай список объектов с определёнными аттрибутами в том числе и координаты, + еще как советует Meander, сделай кеш - это будет многомерный массив. Каждый элемент будет представлен куском пространства, в котором будут записываться айдишники объектов.