W przypadku wielu gier rozgrywanych na planszy sześciokąty to Clearly Superior Choice ™. Niestety, wiele darmowych stron z grafikami gier zawiera wyłącznie bezszwowe kafelki dla kwadratowych map. W poprzednim projekcie wykorzystałem niektóre z nich i ręcznie przekonwertowałem je na sześciokąty.
Jednak na starość stałem się leniwy. Zautomatyzowanie procesu powinno być łatwe za pomocą małego skryptu.
Jednak na starość stałem się leniwy. Więc zlecam to tobie i ukrywam jako wyzwanie dla golfa 1 .
Wkład
Dane wejściowe to kwadratowy obraz w dowolnym popularnym formacie obrazu z 24-bitowym kolorem RGB. Możesz również wziąć nazwę pliku jako dane wejściowe zamiast samych danych obrazu.
Możesz założyć, że obraz jest kwadratowy i że długość boku jest wielokrotnością czterech.
Wydajność
Dane wyjściowe to kafelek wejściowy, ale przekształcony w sześciokąt (sam obraz będzie kwadratowy z przezroczystymi obszarami). Możesz zapisać go do pliku lub wyświetlić na ekranie.
Ponownie, zrobi to każdy wspólny format obrazu. Jeśli używany format obsługuje przezroczystość, obszary tła muszą być przezroczyste. Jeśli nie, możesz użyć koloru # FF00FF (ten okropny fuksja) jako stand-in.
metoda
Więc jak to zrobimy? Metoda, której używam 2, powoduje ściśnięcie obrazu nieco pionowo, ale ogólnie rzecz biorąc wygląda całkiem dobrze w większości rzeczy. Zrobimy przykład z tym obrazem wejściowym:
- Skala: przeskaluj obraz do proporcji 3: 2. Ponieważ nasze obrazy będą kwadratami, oznacza to, że po prostu skalujesz je do 75% szerokości i 50% wysokości. Nasze przykładowe dane wejściowe to 200 x 200, więc otrzymujemy obraz o wymiarach 150 x 100:
- Kafelek: umieść kopie skalowanego obrazu w siatce 2x2:
- Przytnij: weź siatkę o odpowiednim rozmiarze z dowolnego miejsca na tej siatce 2x2. Dla ułatwienia układania ten sześciokąt nie jest dokładnie regularny. Po przycięciu kwadratu o oryginalnym rozmiarze (tutaj 200 x 200), następnie przycinasz rogi. Linie przycinania powinny przebiegać od (z grubsza) środka każdej lewej / prawej strony do jednej czwartej od krawędzi u góry / u dołu:
I to jest twój wynik!
Oto przykład tego, jak może wyglądać po ułożeniu kafelków (tutaj pomniejszony):
To jest kod golfowy, więc wygrywa najkrótszy kod w bajtach. Obowiązują standardowe luki itp.
1 Możesz w to wierzyć lub nie.
2 Metoda pierwsza z tej pomocnej strony.