Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Мини-навигатор (https://javascript.ru/forum/misc/70484-mini-navigator.html)

GreenCoder 08.09.2017 11:57

Мини-навигатор
 
Здравствуйте!

Хочу сделать мини-навигатор, который отображал бы пользователю текстовую информацию в виде расстояния и угла поворота в градусах к заданной цели.

Есть, допустим координаты цели - 55.861462, 37.625886
Пользователь находится по координатам - 55.722194, 37.749482

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

Dilettante_Pro 08.09.2017 12:22

GreenCoder,
Расстояния на глобусе

Таблицы

Nexus 08.09.2017 12:38

Цитата:

Сообщение от GreenCoder
Достаточно ли этих данных, чтобы для координат пользователя отображать на сколько градусов ему нужно повернуться, чтобы его маршрут был наиболее коротким к заданной цели?

Может я чего-то не понял, но как можно определить по координатам сторону, в которую пользователь смотрит(к которой обращен)?
Как минимум нужны координаты двух точек пользователя, чтобы определить сторону его движения.

Dilettante_Pro 08.09.2017 12:43

НNexus,
На сколько повернуть - определить невозможно, зато можно понять, куда идти (если есть компас - настоящий или в навигаторе)

GreenCoder 08.09.2017 12:45

Цитата:

Сообщение от Nexus (Сообщение 464061)
Может я чего-то не понял, но как можно определить по координатам сторону, в которую пользователь смотрит(к которой обращен)?
Как минимум нужны координаты двух точек пользователя, чтобы определить сторону его движения.

Это я скорее всего неправильно объяснил!
Да, вы правы, скорее всего нужны предыдущие координаты пользователя.
Расстояние я знаю как вычислять, но вот угол поворота к заданной цели увы пока не понимаю. Для этих целей есть какая-то формула?

GreenCoder 08.09.2017 12:48

Цитата:

Сообщение от Dilettante_Pro (Сообщение 464062)
НNexus,
На сколько повернуть - определить невозможно, зато можно понять, куда идти (если есть компас - настоящий или в навигаторе)

Вот это то, что и хотел сделать, определять градус поворота, чтобы было понятно на сколько градусов нужно повернуть, чтобы придти к цели.

Dilettante_Pro 08.09.2017 13:07

GreenCoder,
Зачем вам градусы, на сколько повернуть? Как вы их будете определять их при повороте?
Главное - правильное направление: сориентировать смартфон и двигаться в нужную сторону, отслеживая отклонения.

GreenCoder 08.09.2017 13:54

Dilettante_Pro,
Градусы буду сам я определять глазами, и допустим каждые 10 метров пройденного пути корректировать своё движение на основе новых координат смартфона, по сути это и есть ориентация смартфона в нужном направлении, только голосом.
Чтобы можно было положить смартфон в карман, подключить наушники и просто слушать, куда надо поворачивать, налево или направо и на сколько градусов. В лесу мне так было бы удобней выбираться из всяких зарослей, чем смотреть на экран смартфона.

GreenCoder 08.09.2017 13:57

Dilettante_Pro,
Такое приложение есть для андройда, называется я иду домой, но оно какое-то не стабильное, иногда координаты сбиваются, иногда после обновления приложения и вовсе вылетает при запуске, да и половина функционала в нем мне не нужно. Поэтому хочу сделать свой аналог, просто сохранение координат и возможность вести смартфон к ним.

Dilettante_Pro 08.09.2017 14:03

GreenCoder,
Цитата:

Сообщение от GreenCoder
Градусы буду сам я определять глазами,

Я так не умею:-E

GreenCoder 08.09.2017 14:07

Dilettante_Pro,
Ну навигатор сказал, поверните налево на 90 градусов, что тут уметь?)
Поворачиваетесь на четверть круга влево и идёте дальше, если сбились с курса, навигатор каждые 10 секунд будет подсказывать на сколько градусов и в какую сторону нужно скорректировать своё движение.

Dilettante_Pro 08.09.2017 18:16

GreenCoder,
Примерный алгоритм расчета угла.
1. определили координаты стартового местонахождения.
2. Определили координаты цели.
3. Вычислили расстояние до цели.
4. Пошли. (Первоначальный угол корректировки неизвестен, далее будет известен).
5. Определили через какое-то время текущие координаты.
6. Вычислили пройденный путь (по прямой от начальной точки).
7. Через пропорцию вычислили координаты точки на правильном пути на таком же расстоянии от начала.
8. определили расстояние между этой точкой и точкой вашего местонахождения - дельта.
9. дельта / (путь*2) = sin(Alfa), где Alfa - половина угла отклонения
10. Отклонение влево или вправо - по анализу разности координат с учетом координат начальной и конечной точки
и т.д - снова с пункта 4 .

GreenCoder 08.09.2017 20:54

Dilettante_Pro,
Благодарю! Попробую ваш алгоритм реализовать.


Часовой пояс GMT +3, время: 16:08.