Wprowadzenie
Hypercube / tesseract jest 4-wymiarowym odpowiednikiem normalnej kostki. Robi się to, biorąc siatkę sześcianu, rozciągając ją na trzeci wymiar, a następnie - używając czwartego wymiaru - składając ją w hipersześcian. Zasadniczo jest to sześcian, którego każda strona to sześcian.
Aby utworzyć hipersześcian, potrzebujesz 16 wektorów 4d (wektor z x
, a y
, a z
i w
składnikiem). Te wektory są następujące:
A(0, 0, 0, 0); B(1, 0, 0, 0); C(1, 0, 1, 0); D(0, 0, 1, 0); E(0, 1, 0, 0); F(1, 1, 0, 0); G(1, 1, 1, 0); H(0, 1, 1, 0);
I(0, 0, 0, 1); J(1, 0, 0, 1); K(1, 0, 1, 1); L(0, 0, 1, 1); M(0, 1, 0, 1); N(1, 1, 0, 1); O(1, 1, 1, 1); P(0, 1, 1, 1);
Hipersześcian ma 24 twarze. Poniższa lista zawiera je wszystkie (każda grupa oznacza quad):
ABFE, CDHG, BCGF, DAEH, DCBA, FEHG
IJNM, KLPO, JKON, LIMP, LKJI, PMNO
ABJI, DCKL, BCKJ, DAIL, FEMN, GHPO, FGON, EHPM, EAIM, BFNJ, CGOK, HDLP
Przy wszystkich tych informacjach technicznie masz hipersześcian w kodzie. Aby to obrócić, potrzebujesz 6 różnych matryc dla każdej płaszczyzny obrotu, po jednej dla płaszczyzn YZ, XZ, XY, XW, YW i ZW. Po utworzeniu każdej macierzy należy pomnożyć z nią wierzchołki sześcianu.
Poniższe obrazy przedstawiają strukturę każdej matrycy:
Dla obrotu na płaszczyźnie YZ:
Dla obrotu na płaszczyźnie XZ:
Dla obrotu na płaszczyźnie XY:
Dla obrotu na płaszczyźnie XW:
Dla obrotu na płaszczyźnie YW:
Dla obrotu na płaszczyźnie ZW:
Obroty są stosowane w tej kolejności.
Po tym wszystkim masz obróconą hipersześcian. Teraz musisz go narysować. Należy użyć rzut prostopadły połączoną z projekcją perspektywy wysłać (x, y, z, w)
do (2x/(2+z), 2y/(2+z))
.
Wkład
Twój wkład to 6 liczb całkowitych od 0 (włącznie) do 360 (wyłącznie). Reprezentują one obroty w stopniach na różnych płaszczyznach obrotu hipersześcianu.
Wydajność
Twój wynik powinien być pojedynczym obrazem zawierającym hipersześcian. Wyświetlany może być obraz rasteryzowany, obraz wektorowy lub grafika ASCII. Obraz wyjściowy powinien mieć co najmniej 100 * 100 pikseli, a kostka musi zajmować co najmniej 50% ekranu. Dowolny domyślny format wyjściowy obrazu jest dozwolony.
Przypadki testowe
0 0 0 0 0 0
0 0 0 0 0 30
30 0 0 0 0 30
0 0 0 30 30 30
45 45 45 0 0 0
45 45 45 45 45 45
Otwórz obrazy w nowej karcie, aby zobaczyć je w pełnym rozmiarze.
Zasady
- Obowiązują zasady domyślne
- Standardowe luki są zabronione
- Najkrótszy kod w bajtach wygrywa