Реализация алгоритма навигации в j2me для мобильных устройств - PullRequest
1 голос
/ 05 ноября 2010

В рамках своего проекта в колледже я разрабатываю специальное приложение для мобильной навигации. Я использую J2ME.

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

Я не могу использовать карты Google, потому что кампус не полностью покрыт ими. Поэтому я беру координаты всех блоков и дорог, сохраняю их в своем магазине и создаю мини-карту координат.

Теперь настоящая проблема заключается в том, «Как реализовать навигационную часть приложения»? Это мой текущий план действий по реализации.

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

Теперь алгоритм работает, и кратчайший путь генерируется с первой инструкцией, скажем, например. Двигайтесь на 100 метров на север.

Пользователь продолжает как таковой, но делает ошибку и идет в неправильном направлении. Как я постоянно проверяю, движется ли пользователь в правильном направлении? Если я проверяю его положение каждые 10 секунд и предупреждаю его, если он движется не в том направлении (я тоже не знаю, как это сделать! Т.е. проверяю, в правильном ли он направлении) и снова генерирую новые направления, я не буду замедлять работу приложения?

Есть ли лучший способ реализовать это?

PS: Пожалуйста, помогите мне с тем, как координаты должны храниться в моей базе данных (Landmarks Store) Должен ли я хранить координаты для каждого небольшого расстояния (например, 5 мс) или использовать более длинное расстояние, чтобы уменьшить количество узлов в графе и алгоритм работал быстрее.

1 Ответ

1 голос
/ 05 ноября 2010

Прежде всего можно легко обнаружить «неправильное направление»: длина кратчайшего пути к пункту назначения увеличивается.Или, если у вас есть несколько «контрольных точек» на вашем оптимальном пути, то пользователь уходит от следующей контрольной точки.

Для сложности не используйте точку каждые 5 метров или другое расстояние: вам нужно иметь какое-то основноеточки на вашей карте (каждая дверь, пересечение коридора ...) вы можете дать вам общее направление.Вы даже можете себе представить кратчайший путь для предварительного подсчета между каждым зданием и затем внутри каждого здания;Ваша первая необходимость покинуть здание, чтобы перейти к другому.

В любом случае, когда у вас есть эти основные точки, вам нужно добавить только одну точку на карту (пользовательскую позицию) и подключить ее к соседним «основным точкам».

Сколько узлов выесть в вашем графике сейчас?


РЕДАКТИРОВАТЬ:

По сути, идея заключается в следующем: с учетом всех дорог действительно легко предварительно рассчитать кратчайший путь из любой точкидорога в любое здание.Нет необходимости делать это для каждой дороги, рассматривайте только каждое пересечение или здание как узел на вашем графике.Тогда, учитывая точку на дороге, у вас есть только две возможности прочитать узел: влево или вправо.(Это, конечно, предполагает, что люди остаются на дороге, но могут быть легко адаптированы;)).

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

Вы можете давать указания человеку, и если вы заметите, что расстояние до пункта назначения увеличивается, вы можете предупредить его, что он идет внеправильное направление.

...