Introdução
Um hipercubo / tesserato é o equivalente em 4 dimensões de um cubo normal. É feito pegando uma rede de cubos, estendendo-a para a 3ª dimensão e depois - usando a 4ª dimensão - dobrando-a em um hipercubo. É basicamente um cubo, onde cada lado é um cubo.
Para criar um hipercubo, você precisa de 16 vetores 4d (um vetor com um x
, a y
, a z
e um w
componente). Esses vetores são os seguintes:
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);
O hipercubo tem 24 faces. A lista a seguir contém todos eles (cada grupo marca um 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
Com todas essas informações, você tecnicamente tem um hipercubo no código. Para girar isso, você precisa de 6 matrizes diferentes para cada plano de rotação, uma para os planos YZ, XZ, XY, XW, YW e ZW. Depois de ter todas as matrizes, você precisa multiplicar os vértices do cubo com eles.
As seguintes imagens mostram a estrutura de cada matriz:
Para a rotação no plano YZ:
Para a rotação no plano XZ:
Para a rotação no plano XY:
Para a rotação no plano XW:
Para a rotação no plano YW:
Para a rotação no plano ZW:
As rotações são aplicadas nesta ordem.
Depois de tudo isso, você tem um hipercubo girado. Agora você precisa desenhá-lo. Você deve usar uma projeção ortogonal combinada com uma projeção em perspectiva para enviar (x, y, z, w)
para (2x/(2+z), 2y/(2+z))
.
Entrada
Sua entrada é de 6 números inteiros entre 0 (inclusive) e 360 (exclusivamente). Eles representam as rotações em graus nos diferentes planos de rotação do hipercubo.
Saída
Sua saída deve ser uma única imagem contendo o hipercubo. A tela pode ser uma imagem rasterizada, uma imagem vetorial ou uma arte ASCII. A imagem de saída deve ter pelo menos 100 * 100 pixels e o cubo precisa ocupar pelo menos 50% da tela. Qualquer formato de saída de imagem padrão é permitido.
Casos de teste
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
Abra as imagens em uma nova guia, para vê-las em tamanho real.
Regras
- Aplicam-se regras padrão
- As brechas padrão são proibidas
- O menor código em bytes ganha