Как определить, принадлежат ли координаты одному из графиков? Здравствуйте!
Есть программа для построения графиков. Графики представляются в виде контейнера с точками (x,y) и рисуются как ломаные кривые. Стоит задача определения графика при наведении на него указателя.
Подскажите пожалуйста в общих чертах, как такое можно реализовать? В голову приходит только банальный перебор всех значений графиков при изменении положения курсора мыши, но это неэффективно, поскольку графики могут быть больше чем на 100000 точек.

21 Авг 2019 в 06:05
172 +1
2
Ответы
1

Для определения принадлежности координаты графику при наведении курсора можно использовать алгоритм пересечения луча с полигоном RaycastingalgorithmRay casting algorithmRaycastingalgorithm. Этот метод позволяет определить, попадает ли точка внутрь заданного многоугольника.

Как это работает:

При наведении курсора мыши на экран получаем координаты точки x,yx, yx,y.Создаем луч, который начинается в этой точке и направлен вдоль оси X иливлюбомдругомнаправлении,взависимостиоториентацииграфикаили в любом другом направлении, в зависимости от ориентации графикаиливлюбомдругомнаправлении,взависимостиоториентацииграфика.Проверяем пересечения этого луча с каждым сегментом отрезкоммеждусоседнимиточкамиотрезком между соседними точкамиотрезкоммеждусоседнимиточками графика.Если луч пересекается с нечетным числом сегментов, значит точка внутри графика, и мы можем определить, что координаты принадлежат этому графику.

Этот метод гораздо более эффективен, чем простой перебор всех точек графика, особенно при большом числе точек. Вам нужно будет реализовать алгоритм пересечения луча с отрезком и применить его к вашим графикам для определения принадлежности координаты графику.

20 Апр 2024 в 13:24
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир