Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.04.2010, 08:26
denver вне форума Посмотреть профиль Отправить личное сообщение для denver Найти все сообщения от denver
  № 51  
Ответить с цитированием
denver

Регистрация: Jan 2010
Сообщений: 32
Я изначально не закладывал диагональные перемещения. Хотя волновой это позволяет делать.
Вот что пишут в вики про волновой алгоритм.
Я пользую по 4м направлениям.

Старый 01.04.2010, 09:55
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 52  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Ладно, это всё частности.. просто волновой алгоритм, поиск в ширину, поиск в глубину, поиск Дейкстры - это всё частные случаи A*.
Цитата:
Почему A* допустим и оптимален

Алгоритм A* и допустим, и обходит при этом минимальное количество вершин, благодаря тому, что он работает с «оптимистичной» оценкой пути через вершину. Оптимистичной в том смысле, что, если он пойдёт через эту вершину, у алгоритма «есть шанс», что реальная стоимость результата будет равна этой оценке, но никак не меньше. Но, поскольку A* является информированным алгоритмом, такое равенство может быть вполне возможным.

Когда A* завершает поиск, он, согласно определению, нашёл путь, истинная стоимость которого меньше, чем оценка стоимости любого пути через любой открытый узел. Но поскольку эти оценки являются оптимистичными, соответствующие узлы можно без сомнений отбросить. Иначе говоря, A* никогда не упустит возможности минимизировать длину пути, и потому является допустимым.

Предположим теперь, что некий алгоритм B вернул в качестве результата путь, длина которого больше оценки стоимости пути через некоторую вершину. На основании эвристической информации, для алгоритма B нельзя исключить возможность, что этот путь имел и меньшую реальную длину, чем результат. Соответственно, пока алгоритм B просмотрел меньше вершин, чем A*, он не будет допустимым. Итак, A* проходит наименьшее количество вершин графа среди допустимых алгоритмов, использующих такую же точную (или менее точную) эвристику.
а вообще выбирать вам.
вот здесь хорошее описание алгоритмов поиска пути
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 01.04.2010 в 10:00.
Старый 01.04.2010, 10:06
denver вне форума Посмотреть профиль Отправить личное сообщение для denver Найти все сообщения от denver
  № 53  
Ответить с цитированием
denver

Регистрация: Jan 2010
Сообщений: 32
Это мой первый опыт в поиске пути, и пока меня устраивает волновой. Да суть даже не в алгоритме. Т.е. путь я получу (включая невозможный).
Тут вопрос как лучше (оптимальней) двигать объекты по полю, чтобы отлавливать возникающие коллизии в ходе движения каждого из объектов.
У меня объекты двигает Tweener получая очередную координату опорной точки.
Двигать объекты по-клеточно как то будет выглядеть дергано.
Как вариант можно по ходу движения проверять проходима ли следующая клетка или нет, если нет генерить новый путь начиная с текущей.

Старый 01.04.2010, 10:21
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 54  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Цитата:
Сообщение от denver Посмотреть сообщение
У меня объекты двигает Tweener получая очередную координату опорной точки.
Двигать объекты по-клеточно как то будет выглядеть дергано.
не вижу связи.. дёргано не будет
двигайте от клетки a1 до клетки a2 твинером (в начале движения выбираете направление анимации) затем до следующей клетки также (причем время прохождения по диагонали = 1.4 времени по прямой, можно легко ввести коэффициенты поверхности если надо - скорость тогда тоже будет пропорциональна)
что-то вроде:
Код AS3:
public function turn (e:TweenEvent = null)
{
// берем следующую точку пути, если надо пересчитываем
var targetPoint:Point = getNextPoint();
//пришли  - вообще надо не так сравнивать, это для примера..
if (targetPoint==currentPont) 
{
dispathEvent(new PathEvent(PathEvent.END));
return;
}
// двигаем твинером - 
//...
//по окончанию - двигаем дальше
tweener.addEventListener(TweenEvent.END,turn);
}
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 01.04.2010 в 10:27.
Старый 05.04.2010, 09:45
denver вне форума Посмотреть профиль Отправить личное сообщение для denver Найти все сообщения от denver
  № 55  
Ответить с цитированием
denver

Регистрация: Jan 2010
Сообщений: 32
Заделал перемещение без опорных точек, получилось действительно те как дергано как я предполагал.
Бывают конечно "нахлесты" в плане коллизий, запишу это в "погрешности", ничего страшного

Старый 28.07.2010, 00:28
Worfollomey вне форума Посмотреть профиль Отправить личное сообщение для Worfollomey Найти все сообщения от Worfollomey
  № 56  
Ответить с цитированием
Worfollomey

Регистрация: Jul 2010
Сообщений: 16
Здравствуйте. Нашел пару хороших уроков по изометрии и алгоритму поиска пути
вот в этой книге:http://www.friendsofed.com/book.html?isbn=1430216085
На Демиарте эти уроки даже перевели. Но вот как соеденить эти 2 урока и внедрить
алгоритм в изометрию не получается. Возможно кто-то этим занимался и может
подсказать где что и как дописывать в классах?

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:50.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
плиточный мир

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:50.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.