
непонятна связка волной дискретных клеток с подготовленными районами. бьюсь над алгоритмом уже долго. никак не доходит! могу ли я надеется на ответ? я подготовлю небольшой вопрос в виде своей наработки в картинках\гифках\видео.
Каким образом у вас выглядит связь между дискретными клетками 2.1 и 2.0 ?
У вас должно быть для клетки 2.1 указано, что оттуда можно попасть в 2.0. через район 1.
Соответственно, если это не указано, то дискретная волна туда и не пойдет.
И еще.... вы понимаете, что у вас в клетку 2.1 должно быть как бы два независимых входа? ...
... первый через район 1, а второй через район 2. И это будет 2 независимые волны.
Вопрос чересчур объемно сформулирован
Т. е. говорить о дискретной клетке с координатами 100,100 бессмысленно, так как не хватает еще номера района.
как может быть две волны?
Кажется, я понял, чего вы не понимаете.
...
Дискретные клетки вообще не имеют понятия "посещённые", это относится именно к районам в них.
//поигрался с районами в паинте. смог дойти до финиша
- пометил район "старта" волной
- добавил д.клетку "старта" в список обработки
- цикл (пока есть д.клетки для обработки)
- вытащил с конца новую д.клетку
- цикл соседей д.клетки (направ. 0-7)
- цикл моих связующих районов с соседом
- если мой связующий район помечен волной
- если связующий район соседа не помечен волной
- помечаем район соседа волной (+ откуда пришла волна)
- если д.клетка соседа еще не обрабатывалась, помечаем "обработанной", добавляем в список обработки
то что нужно! БОЛЬШОЕ СПАСИБО! буду переосмысливать.
волна не зашла в район №3 клетки 1.1
...
Если это у вас видео с программы, то тут может быть недоработка.
потестил в проге волну с учетом районов. крутой алгоритм! даже лабиринты нипочем.
есть такой алгоритм Jump Point Search - улучшенный A*, говорят очень быстрый. вкупе с дискретными клетками это будет бомба.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1