Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2017, 14:49   #1
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию Волновой алгоритм для гексагональной сетки

Здравствуйте.
Подскажите пожалуйста, как правильно получать соседние клетки для матрицы, которая представляется в виде шестиугольной сетки ?
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 05.04.2017, 15:55   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
как правильно получать соседние клетки для матрицы,
Если именно как ПОЛУЧИТЬ то нужно знать как закодировано( как хранятся).
Если как ЗАКОДИРОВАТЬ (хранить), чтобы было удобно получить ...

Код:
-- 11 -- 12 -- 13 -- ...
-- -- 21 -- 22 -- 23 ...
-- 31 -- 32 -- 33 -- ...
-- -- 41 -- 42 -- 43 ...
-- 51 -- 52 -- 53 -- ...
-- неиспользуемые и несуществующие ячейки (показаны исключительно для удобства восприятия)

для 32 соседями будут 12 21 22 41 42 52.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 05.04.2017 в 16:07.
evg_m вне форума Ответить с цитированием
Старый 05.04.2017, 16:15   #3
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

evg_m
Выглядит это - картинка во вложении.
Предполагается хранение в обычной матрице. Для организации работы волнового алгоритма - это наиболее оптимально.
У отдельно взятой клетки может быть до шести соседей, что есть самоочевидно ...
Нужно получать массив из этих "до шести соседей", и распространять волну.
Как в таком варианте получать соседей ?
Изображения
Тип файла: jpg Grid.jpg (116.9 Кб, 156 просмотров)
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 05.04.2017, 16:41   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

смотри выше ПРЕДЛАГАЕМЫЙ пример матрицы (числа это номер строки. номер столбца)
тоже в картинке но здесь есть цвета 2.JPG
Цитата:
-- неиспользуемые и несуществующие ячейки (показаны исключительно для удобства восприятия)
чтобы увидеть шестиугольник (синие ячейки вокруг красной)
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 05.04.2017 в 16:44.
evg_m вне форума Ответить с цитированием
Старый 05.04.2017, 20:16   #5
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

evg_m
С таким вариантом я вижу проблемы с индексацией.
Изначатьно у меня массив координат объектов (со скриншота).
Для поиска путей все объекты должны выстроиться в матрицу ...
Пускать волны по вашему варианту я смогу, но прямая индексация будет выдавать артефакты в виде "несуществующих" ячеек.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Старый 05.04.2017, 22:36   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
С таким вариантом я вижу проблемы с индексацией.
Цитата:
-- неиспользуемые и несуществующие ячейки (показаны исключительно для удобства восприятия)
их нет в массиве. А все прочие имеют сплошную нумерацию (без пропусков).
прочерки введены исключительно для наглядности "шестиугольного сдвига" ячеек.
Код:
действительное и "наглядное" виды
11 12 13 14  11 .. 12 .. 13 .. 14 ..
21 22 23 24  .. 21 .. 22 .. 23 .. 24
31 32 33 34  31 .. 32 .. 33 .. 34 ..
41 42 43 44  .. 41 .. 42 .. 43 .. 44
51 52 53 54  51 .. 52 .. 53 .. 54 ..
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 05.04.2017, 23:06   #7
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

evg_m, хорошо, тогда скажу от чё: вопрос стоял изначально такой - как получить соседние клетки ?
Перефразирую на более "понятный" вариант ...
Есть некоторые координаты X, Y, которые указывают на клетку в квадратной матрице. Как получить соседние клетки при условии того, что матрица рассматривается как гексагональная сетка ? Ещё проще - как посчитать координаты соседних клеток ...
Как построить матрицу - я знаю. Квадратное смещение (вправо/вверх) зависит от того, какая используется гексагональная сетка - вертикальная/горизонтальная (соответственно). У меня сетка вертикальная. Но это всё вода ...

Я задавал этот вопрос тогда, когда у меня не было возможности самому на бумажке просчитывать варианты.
Думал сэкономить время примерно следующим ответом:

Для чётного X в квадратной матрице "соседние" клетки (в гексе) имеют следующие координаты - (X-2; Y), (X-1; Y-1), (X-1; Y), (X+1; Y-1), (X+1; Y), (X+2; Y).
Аналогично для нечётного X координаты - (X-2; Y), (X-1; Y), (X-1; Y+1), (X+1; Y), (X+1; Y+1), (X+2; Y).

Может где ошибся, поправьте пжалста.
Подпись ? Не, не слышал ...

Последний раз редактировалось OmegaBerkut; 05.04.2017 в 23:09.
OmegaBerkut вне форума Ответить с цитированием
Старый 06.04.2017, 09:21   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
для 32 соседями будут 12 21 22 41 42 52.
Код:
 x.y     3.2  
1.2  3-2.2-0
2.1  3-1.2-1 
2.2  3-1.2-0
4.1  3+1.2-1
4.2  3+1.2-0
5.2  3+2.2-0
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 06.04.2017, 15:40   #9
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

http://www.redblobgames.com/grids/hexagons/
http://www-cs-students.stanford.edu/...ramming/grids/
и вообще редблоб почитать полезно.
phomm вне форума Ответить с цитированием
Старый 06.04.2017, 21:17   #10
OmegaBerkut
Спокойный псих
Участник клуба
 
Аватар для OmegaBerkut
 
Регистрация: 19.03.2013
Сообщений: 1,538
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
редблоб почитать полезно
Как раз таки эту статью я и читал, когда ковырялся в гугле.
Вторая статья - тоже будет полезна. Спасибо.
Подпись ? Не, не слышал ...
OmegaBerkut вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Волновой алгоритм Adelia Паскаль, Turbo Pascal, PascalABC.NET 5 10.11.2014 18:02
Волновой алгоритм! flaminger Помощь студентам 4 05.05.2013 13:04
Волновой алгоритм zokwild Помощь студентам 1 28.11.2012 23:47
волновой алгоритм Delphi The Catalyst Помощь студентам 3 01.12.2011 12:32
Волновой алгоритм поиска Merkator Gamedev - cоздание игр: Unity, OpenGL, DirectX 8 12.02.2009 16:15