Здравствуйте!
Суть проблемы в следующем:
Пишу приложение на телефон, часть функционала должна быть в том, что нужно провести автомобиль по заданному маршруту (типа навигатор)! И вот интересуюсь какие алгоритмы используются в навигаторах, а именно интересует, как навигатор понимает, что машина сошла с "пути истинного" и в какой момент переключается одна точка следования на следующую?
Маршрут построить могу, направление и положение машины узнать по сути тоже! В голову приходит какие-то костыльные идеи, как использовать эту инфу для решения вышеперечисленных задач!
ОК, а как устройство понимает, сошла с маршрута! Мне приходила в голову мысль, что можно использовать формулу для нахождения точки на прямой, но как то это костыльно мне показалось!
Ничего костыльного. Берёте текущее положение, расчитываете расстояние до каждого отрезка маршрута, выбираете наименьшее значение и смотрите если оно больше какого-то порога, то машина сошла с дистанции. Для каждого отрезка ещё можно хранить направление движения, и если оно отличается, то говорить, что водитель едет не в ту сторону.
По матиматике векторы проходили? Берете текущие координаты (там может быть погрешность в 20-50 метров: недостаточно спутников для точного определения).
Если текущие кокординаты уже с учетом погрешности не лежат на проложенном пути, то объект изменил маршрут. А направление показывает в какую сторону от текущей точки будет направлен вектор движения. Угол между двумя векторами (проекция текущей точки на дорогу по Х и по У) и направления движения показывает, что отклонение существует. Если оно совпадает с учетом погрешности с другой дорогой, то можно смело пересчитывать маршрут.