![]() |
Сетка из прямых: поиск пути и движение по этим прямым
Всем привет.
Для начала опишу задачу словами: Есть машинка, есть дороги. Я должен кликнуть куда нибудь - машина должна по этим дорогам проехать к этой точке. Все дороги - отрезки. По сути, мы имеем несколько опорных точек, которые соединяются прямыми с другими точками (я решил дать точкам гордое имя waypoint). Давайте разберемся пока с простыми формами, вроде буквы Г или квадрата. По сути я не могу сформулировать даже алгоритм, по которому это возможно сделать. Пока написал класс, который элементарно смотрит все вейпоинты и расстояния до них, берет 2 кратчайших и смотрит, какой из них ближе к цели, и движется к нему. Работает на ура, но анализировать при прихода в вейпоинт снова все точки (оптимизация вроде не смотреть старые точки, по которым уже прошлись не в счет) - вовсе не айс. Буду рад любым подсказкам, тычкам в статью и тому подобному. Спасибо. |
Поищите про алгоритм Дейкстры.
|
как вариант:
каждая точка является объектом каждый объект имеет ссылку на своязаный с ним объект. после чего запускается цыкл от начальной точки. по принципу паутины по ссылкам обходим каждую точку Правила: 1. не ходить в ту точку, в которую одна из паутинак уже ходила 3. при достижении целевой точки вырубать цыкл. кол-во итераций цыкла будет равно кол-ву точек максимум. как исбежать повторных обходов: в начале цыкла создаётся линейный массив точек. после посещения точки ссылка из массива удаляется. |
2VVall: спасибо, сейчас поищу.
2Mnilionic: дык это уже как раз и реализованно. На фрейм уходит до 1 мс расчетного времени на моей машине, а таких машинок может быть до 3 - это неприемлимо много. |
а сколько точек?
|
мм не знаю насколько подойдет, но http://demiart.ru/forum/index.php?showtopic=46096
|
Одна тысячная секунды - это неприемлимо долго?
|
Можно посчитать таблицу кратчайших расстояний один раз, и затем ей пользоваться (если точки неподвижны)
Кстати это называется метод потенциалов |
Цитата:
Цитата:
Цитата:
2nOobCrafter: регистрация нужна, сейчас зарегистрируюсь и посмотрю, спасибо. |
стандартная задачка по теории графов, причем дороги более похожи на граф, чем возможные пути на матричном поле...
см.A* Предрасчет всех путей тоже неплохо, если полей мало. простовстречал варианты.. где для 9 локаций нуна 2Г памяти... а если 300 -500, хранить в базе тоже не айс.. траблы с запросами.. в общем очень прикольный вопрос. |
| Часовой пояс GMT +4, время: 16:04. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.