![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Всем привет.
Для начала опишу задачу словами: Есть машинка, есть дороги. Я должен кликнуть куда нибудь - машина должна по этим дорогам проехать к этой точке. Все дороги - отрезки. По сути, мы имеем несколько опорных точек, которые соединяются прямыми с другими точками (я решил дать точкам гордое имя waypoint). Давайте разберемся пока с простыми формами, вроде буквы Г или квадрата. По сути я не могу сформулировать даже алгоритм, по которому это возможно сделать. Пока написал класс, который элементарно смотрит все вейпоинты и расстояния до них, берет 2 кратчайших и смотрит, какой из них ближе к цели, и движется к нему. Работает на ура, но анализировать при прихода в вейпоинт снова все точки (оптимизация вроде не смотреть старые точки, по которым уже прошлись не в счет) - вовсе не айс. Буду рад любым подсказкам, тычкам в статью и тому подобному. Спасибо.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
Поищите про алгоритм Дейкстры.
|
|
|||||
|
как вариант:
каждая точка является объектом каждый объект имеет ссылку на своязаный с ним объект. после чего запускается цыкл от начальной точки. по принципу паутины по ссылкам обходим каждую точку Правила: 1. не ходить в ту точку, в которую одна из паутинак уже ходила 3. при достижении целевой точки вырубать цыкл. кол-во итераций цыкла будет равно кол-ву точек максимум. как исбежать повторных обходов: в начале цыкла создаётся линейный массив точек. после посещения точки ссылка из массива удаляется. |
|
|||||
|
2VVall: спасибо, сейчас поищу.
2Mnilionic: дык это уже как раз и реализованно. На фрейм уходит до 1 мс расчетного времени на моей машине, а таких машинок может быть до 3 - это неприемлимо много.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
а сколько точек?
|
|
|||||
|
мм не знаю насколько подойдет, но http://demiart.ru/forum/index.php?showtopic=46096
|
|
|||||
|
Регистрация: Nov 2008
Сообщений: 528
|
Одна тысячная секунды - это неприемлимо долго?
|
|
|||||
|
Цитата:
Цитата:
Цитата:
2nOobCrafter: регистрация нужна, сейчас зарегистрируюсь и посмотрю, спасибо.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
стандартная задачка по теории графов, причем дороги более похожи на граф, чем возможные пути на матричном поле...
см.A* Предрасчет всех путей тоже неплохо, если полей мало. простовстречал варианты.. где для 9 локаций нуна 2Г памяти... а если 300 -500, хранить в базе тоже не айс.. траблы с запросами.. в общем очень прикольный вопрос.
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 28.03.2009 в 01:03. |
![]() |
![]() |
Часовой пояс GMT +4, время: 16:19. |
|
|
« Предыдущая тема | Следующая тема » |
|
|