#cpp #boost #геолокация
Имеется прорисовка пути маршрута автобуса выполненная при помощи массива точек (широта, долгота) которые затем через leaflet прорисовываются у клиента Делалось это все просто для визуального отображения маршрута в GPS мониторинге. Теперь понадобилось контролировать съезд с маршрута как можно менее затратно в плане ресурсов. План таков, преобразовать каким то образом трансформировать точки в полигон и уже через boost::geometry::intersects сверять находится ли машина на маршруте или нет при поступлении свежих координат. Идея по трансформации только такая, брать 2 точки добавлять по 10 метров отступа слева и создавать полигон. Проблема в том что точек на маршруте бывает под 1000..сомневаюсь что работать будет быстро..может как то можно отсеять лишние точки Ломаю голову.. Может есть что то готовое для подобной задачи? Прошу помощи
Ответы
Ответ 1
А зачем возиться с полигонами? У вас есть массив точек маршрута. Каждая пара соседних точек определяет отрезок, часть маршрута. Определить, к какому отрезку ближе всего точка Вычислить кратчайшее расстояние до него (длинна перпендикуляра) Если оно больше максимального заданного расстояния Lmax - зафиксировать съезд с маршрута
Комментариев нет:
Отправить комментарий