Для багатьох ігор, що граються на сітці, шестикутники є явно Superior Choice ™. На жаль, на багатьох безкоштовних сайтах мистецтва ігор є лише безшовні набори плиток для квадратних карт. У минулому проекті я використав деякі з них і вручну перетворив їх на шестикутники.
Однак я лінивий літ. Автоматизувати процес слід невеликим сценарієм.
Однак я лінивий літ. Тож я передаю це на аутсорсинг для вас і маскую його як кодове завдання для гольфу 1 .
Вхідні дані
Вхід - це квадратне зображення у будь-якому загальному форматі зображення, здатне до 24-бітового RGB кольору. Ви також можете взяти ім'я файлу як вхідне замість самих даних зображення.
Ви можете припустити, що зображення квадратне, а довжина сторони кратна чотирьом.
Вихід
Вихід - це вхідна плитка, але перетворена на шестикутник (саме зображення буде квадратним, з прозорими ділянками). Ви можете зберегти його у файл або відобразити на екрані.
Знову ж, будь-який загальний формат зображення буде робити. Якщо формат, який ви використовуєте, підтримує прозорість, фонові області повинні бути прозорими. Якщо це не так, ви можете використовувати колір # FF00FF (той жахливий фуксія) як резервний.
Метод
То як нам це зробити? Метод, який я використовую, 2 розбиває зображення трохи вертикально, але в цілому він виглядає досить добре для більшості речей. Ми зробимо приклад із цим вхідним зображенням:
- Масштаб: масштабуйте зображення до співвідношення 3: 2. Оскільки наші зображення будуть квадратними, це означає, що ви просто масштабуєте їх до 75% ширини та 50% висоти. Наш приклад 200x200, тож ми закінчуємо цим зображенням розміром 150x100:
- Плитка: розмістіть копії масштабованого зображення в сітці 2x2:
- Обрізка: візьміть шестикутник відповідного розміру з будь-якої точки цієї 2х2 сітки. Тепер для зручності плитки цей шестикутник не зовсім регулярний. Після обрізання квадрата оригінального розміру (тут 200х200) ви обрізаєте кути. Лінії обрізання повинні проходити (приблизно) від центру кожного лівого / правого боку до однієї чверті від краю вгорі / внизу:
І це ваш вихід!
Ось приклад того, як це може виглядати, коли викладено плитку (зменшено тут):
Це код гольфу, тому найкоротший код у байтах виграє. Застосовуються стандартні лазівки тощо тощо.
1 Ви можете вірити цьому чи ні.
2 Спосіб один із цього корисного сайту.