Войти
Исаев ВикторФорум

Простая генерация гексагональной (шестиугольной) сетки из центра + поворот матрицы на любой угол. Апгрейд 2019 года (комментарии)

Страницы: 1 2 Следующая »
#0
(Правка: 26 мар. 2019, 16:59) 11:08, 10 янв. 2014

Простая генерация гексагональной (шестиугольной) сетки из центра + поворот матрицы на любой угол. Апгрейд 2019 года (комментарии)

Это сообщение сгенерировано автоматически.
#1
11:08, 10 янв. 2014

Красотень )

#2
17:50, 11 янв. 2014

Incvisitor
Маленькая придирка.
Мне не нравится версия гексо-полей с Вертикальными зубцами.

Я люблю горизонтальные зубцы, аля волны /\/\/\ по оси Хикс.
-00000
00110
-01110
00110
-00000
Ноль - это невидимые борт-ячейки. Минус - это разница в половину ячейки.

#3
17:55, 11 янв. 2014

slatazan
Это ты верно подметил.
Ну тут есть 3 варианта:
1. Повернуть все вместе на 90 (30) градусов вокруг вертикальной оси:)
2. Повернуть камеру на -90 градусов вокруг вертикальной оси:)
3. Переписать алгоритм.

#4
18:01, 11 янв. 2014

slatazan
Привязал все гексаконы к центральном и повернул его на 30 градусов.
3 | Простая генерация гексагональной (шестиугольной) сетки из центра + поворот матрицы на любой угол. Апгрейд 2019 года (комментарии)

#5
18:23, 11 янв. 2014

Incvisitor
Нормально.

Это поле для проекта стратегии ?
Или визуальный эфект для красоты ?

#6
18:40, 11 янв. 2014

Ну, возможно это будет игра.

#7
22:08, 11 янв. 2014

Когда-то я писал пример для другой темы:
Iso-Hex

#8
11:55, 12 янв. 2014

slatazan, благодаря тебе я улучшил функцию! Теперь можно вращать матрицу на любой угол!

#9
15:25, 12 янв. 2014

Incvisitor
Круто !!!

#10
15:42, 12 янв. 2014

Mikle
Я мало интересовался гексо-полями.
Как я понял, у тебя там каждая строка на половину ячейки уходит вправо, зато логика линейная.

А я, как дурачок, проецирую линейный масив и поиск клеток, разделяя запросы по строкам на чёт-нечет.
У меня, каждая вторая строка начинается с лишней ячейки, которая занимает место в масиве, но
всегда игнорируется.
Даже не знаю, какой вариант лучше для логики, и для графики.

#11
15:54, 12 янв. 2014

slatazan
Я сильно не вчитывался в твой вариант, но мой явно компактнее. Вообще, этот пример писался для обратной задачи - нахождения координат на гексагональном поле, в этой теме обсуждалось:
http://www.gamedev.ru/code/forum/?id=123819#m0

#12
13:06, 13 янв. 2014

Incvisitor
>Недавно я столкнулся с проблемой генерации шестиугольной сетки из центра.
вообще то самый православный способ генерации гексагональной решётки из центра
это spiral honeycomb mozaic
http://paulbourke.net/texture_colour/tilingplane/
там поиском по странице "Hexagonal Lattice"
ИзображениеИзображениеИзображение
самый главный прикол в том что это еще и система индексирования гексагональной решетки в семиричной системе счисления
и для данной системы определены операции умножения сложения и т д и тп
что позволяет допустим манипулировать изображениями
http://paulbourke.net/texture_colour/tilingplane/hexmul.html
http://paulbourke.net/texture_colour/tilingplane/hexmul2.html
http://paulbourke.net/texture_colour/tilingplane/hexadd.html
еще оно называется Spiral Architecture

#13
14:31, 13 янв. 2014

cNoNim
Неплохо.

#14
14:48, 13 янв. 2014

Incvisitor
вот более "правильная" функция получения координат центра гексагона, по индексу гексагона
то что в статье имеет ряд ограничений и прочих мелких недостатков...
это кончено тоже не идеал, но всяко получше,

function hexCoord(index : number) {
    var base = 1;
    var radius = Math.sqrt(3);
    var x = 0, y = 0;
    for(var i = 0; i <= (Math.log(index) / Math.log(7)); i++) {
        var digit = Math.floor((index % (base * 7)) / base);
        if (digit != 0) {
            var theta = Math.PI
                + i * Math.atan(Math.sqrt(3) / 2)
                + (digit - 1) * 60 * Math.PI / 180;
            x += (radius * Math.sin(theta));
            y += (radius * Math.cos(theta));
        }
        radius *= Math.sqrt(7);
        base *= 7;
    }
    return { x: x, y: y }
}
+ результат_функции
сори что typescript, я обещал в этом году на С++ не писать )
Страницы: 1 2 Следующая »
Исаев ВикторФорум