Для многих игр, сыгранных по сетке, шестиугольники - это явно превосходный выбор ™. К сожалению, на многих бесплатных игровых сайтах есть наборы бесшовных плиток для квадратных карт. В прошлом проекте я использовал некоторые из них и вручную преобразовал их в шестиугольники.
Тем не менее , я стал ленивым в старости. Должно быть легко автоматизировать процесс с помощью небольшого сценария.
Тем не менее , я стал ленивым в старости. Так что я передаю его вам и маскирую под кодовый гольф 1 .
вход
Ввод представляет собой квадратное изображение в любом обычном формате изображения, способном к 24-битному цвету RGB. Вы также можете взять имя файла в качестве ввода вместо самих данных изображения.
Вы можете предположить, что изображение квадратное, а длина стороны кратна четырем.
Выход
Выход является входной плиткой, но преобразуется в шестиугольник (само изображение будет квадратным с прозрачными областями). Вы можете сохранить его в файл или отобразить на экране.
Опять же, подойдет любой обычный формат изображения. Если используемый вами формат поддерживает прозрачность, фоновые области должны быть прозрачными. Если это не так, вы можете использовать цвет # FF00FF (этот ужасный фуксия) в качестве замены.
метод
Так как нам это сделать? Метод, который я использую 2, сжимает изображение немного вертикально, но в целом это выглядит довольно хорошо для большинства вещей. Мы сделаем пример с этим входным изображением:
- Масштаб: масштабировать изображение до соотношения 3: 2. Поскольку наши изображения будут квадратными, это означает, что вы просто масштабируете их до ширины 75% и высоты 50%. Наш пример ввода - 200x200, поэтому мы получаем изображение 150x100:
- Плитка: поместите копии вашего масштабированного изображения в сетку 2x2:
- Урожай: возьмите шестиугольник подходящего размера из любой точки сетки 2x2. Теперь, для простоты мозаики, этот шестиугольник не совсем обычный. После обрезки квадрата оригинального размера (здесь 200x200) вы затем обрезаете углы. Линии обрезки должны проходить от (примерно) центра каждой левой / правой стороны до одной четверти от края сверху / снизу:
И это ваш выход!
Вот пример того, как это может выглядеть, когда выложено плиткой (здесь уменьшено):
Это код гольф, поэтому выигрывает самый короткий код в байтах. Применяются стандартные лазейки и тд и тп.
1 Не стесняйтесь верить этому или нет.
2 Способ один из этого полезного сайта.