Прикольная задачка, но решать надо исключительно на трезувую голову.
Если у нас есть такая картинка с такой индексацией, ничего сложного -- достаточно получить квадратную решетку -- а это проще простого -- достаточно немного подвинуть вниз нечетные столбцы.
Всего будет по ходу два случая -- для четного центра и нечетного. Для нечетного по ходу будет такая же картинка вниз.
А при такой номерации ячеек всё встаёт на свои места.
Достаточно ввести половинный индекс ячейки и сразу становится возможным вычисление любых геометрических фигур.
Как панк панку скажу, 16/2=8 17/2=8.5 те это разложение на четные и не четные.
Четные строки отвечают за координаты нечётных столбцов,а не четные строки отвечают за координаты чётных столбцов.
Или наоборот по желанию писателя(кодера).
ТЕ возмите и посчитайте через уравнение x^2+y^2=R^2( уравнение окружности) какие двумерные координаты имеют точки окружности и увидите что с округлением до 0.5 эти точки по координатам совпадают с предложеным мной методом кодировки.
PS мы этот методом применяли для расчёта координат перегруз машины для ядерного топлива.
PPS строки округляем до 0.5 столбцы до 1
Ну хорошо - без религиозных споров, допустим поделим индекс на четные и нечетные
(условно полуцелые) А далее алгоритм-то какой по новым индексам подразумевается ?
Как к примеру найти все клетки в окресностях заданной ячейки с радиусом 11 или 12 ?
Относительно центра есть шесть вершин. Их координаты вычисляются. Формулы надо искать. Точки связаны прямыми. Формулы тоже надо искать. Все формулы линейные, искать их несложно, но муторно и сравнительно долго, т.к. надо проверять и учитывать все особенности при всех размерах и расположениях, иначе я б уже давно их вывел и отписался.
Ну хорошо - без религиозных споров, допустим поделим индекс на четные и нечетные
(условно полуцелые) А далее алгоритм-то какой по новым индексам подразумевается ?
Как к примеру найти все клетки в окресностях заданной ячейки с радиусом 11 или 12 ?
Блин весь вечер убил, держите скрипт.
Хотя б обьясните зачем это нужно? Если большой секрет можно в личку.
i | [ x : y ]
-------------------------------
0 | [ 10 : 11 ]
1 | [ 11 : 10.5 ]
2 | [ 12 : 10 ]
3 | [ 12 : 9 ]
4 | [ 12 : 8 ]
5 | [ 11 : 7.5 ]
6 | [ 10 : 7 ]
7 | [ 9 : 7.5 ]
8 | [ 8 : 8 ]
9 | [ 8 : 9 ]
10 | [ 8 : 10 ]
11 | [ 9 : 10.5 ]
окружение точки [10:9] по радиусу 2
// у нечётных столбцов половинная номерация строк, у чётных целая.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть гексагональная решетка, необходимо для заданной ячейки найти
формулу для вычисления окружающих ее ячеек на задонном расстоянии.
Минимальная единица длины - кратное расстояние между центрами гексгонов.
Для понимания сделал рисунок объясняющий суть и принцип нумерации ячеек в решетке.
необходимо по радиусу удаленности (1-9) найти окружающие центральную клетку ячейки.