Вопрос

Какой самый простой способ алгоритмически нарисовать шестнадцатеричную сетку?Как я должен представить их в виде данных?

Например, в квадратной сетке я мог бы просто сохранить координаты x-y..

Это было полезно?

Решение

Итак шестиугольник - это аккуратная библиотека для игр AS3 в нем есть несколько классов hexagon, которые могут пригодиться в ваших исследованиях. Эта статья содержит несколько очень приятных деталей о шестиугольных плитках во Flash.

Другие советы

Существует несколько способов управления координатами шестнадцатеричной карты, и большинство из них неинтуитивно настаивают на сопоставлении их с координатами x-y, что важно только для рендеринга.Обычно лучше всего использовать ту или иную форму полярных координат.У меня есть библиотека perl для управления большинством векторных вычислений, которая является очень полезной для точечных вычислений, таких как искусственный интеллект и другие деревья поиска.

http://en.wikipedia.org/wiki/Polar_coordinate_system

Для дешевых мест polar coordinates выводит точку в качестве начала координат (подобно стандартному декартову графику x-y), выбирает вектор в качестве базовой линии (подобно декартову графику), а затем обозначает точки как (величина, градусы).

Где это действительно поражает в хоум-ране с шестнадцатеричными картами, так это в том, что каждый чистый угол кратен 60 градусам.Если вы назначите каждой шестигранной стороне облицовку ((a,b, d, e, f, g) и примените вектор в качестве величины и облицовки, появится несколько полезных свойств.

1) Каждый шестнадцатеричный код может быть представлен как сумма двух соседних векторов (или одного вектора, где второй вектор является величиной 0 или элементом идентификации).например ,1a+1b = 1a1b или 1b1a.В любом случае, это пересечение 2 гексов, величина которого равна 2, и обозначает уникальный гекс из начала координат (0,0).2) Несмежные векторы всегда можно упростить до двух смежных векторов, применяя эти правила:2) Отрицание:1A + 1D = 0, 1B + 1E = 0, 1C + 1F = 0, например3) Комбинация :1A + 1C = 1B, 1B + 1D = 1C, 1C + 1E = 1D, 1D + 1F = 1E, 1E + 1A = 1F

Помня об этих принципах, ракета, которая должна пересекать реальное пространство, должна сохранять векторы в виде объединения или порядка меньших проходов.1A + 1A + 1C + 1C представляет ракету, которая вылетает на два гекса, а затем резко кренится (120 градусов) и пролетает на два гекса, завершая пролет всего на расстоянии 2 гексов, но на 60 градусов отклоняясь от курса от первоначального направления.

Однако компьютер наведения или результирующий взрыв могут заботиться только о дальности, поэтому упрощение этих векторов с использованием этих правил может быть важным.Чтобы вычислить кратчайшее расстояние между любыми двумя точками, просто объедините векторы и упростите их.

Также довольно легко создать шестнадцатеричную карту и визуализировать ее Создайте шестнадцатеричный объект в качестве источника со свойствами, Величина = 0, Вектор = NULL, Метка (необязательно) = некоторая строка (мне нравится, чтобы это значение было доступно для чтения человеком), Name = 0 (объединение величины и вектора) и Exits = Array (вы будете заполнять 6 узлов, исключая червоточины или другие).Нанесите начало координат с центром в пикселе, который вы выберете для создания центра карты.Визуализируйте шестнадцатеричное значение.Выберите Радиус для вашей карты

По каждой величине, ---заполните кольцо каждой комбинацией смежных векторов.Есть несколько способов сделать это, но самый простой - выбрать один вектор в качестве базового, а затем пересечь магнитудные поля в соответствующем направлении и выйти на орбиту с разворотом на 60 градусов.например ,Для величины 3 начните с 3E, затем перейдите к 3A, 3B, 3C, 3D, 3E, 3F, вычисляя каждый шестнадцатеричный показатель как суммы последнего пройденного шестнадцатеричного значения и нового одиночного шестнадцатеричного вектора.---В каждом из этих гексов примените некоторую тригонометрию, чтобы вычислить, где должен находиться центральный пиксель относительно вашего исходного пикселя, и отобразить шестнадцатеричный

Надеюсь, это кому-то поможет.Камень с шестигранными картами.Рендеринг их немного отстой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top