introduction
Un hypercube / tesseract est l'équivalent en 4 dimensions d'un cube normal. Il est fait en prenant un filet de cube, en l'étendant à la 3e dimension, puis - en utilisant la 4e dimension - en le pliant en un hypercube. C'est fondamentalement un cube, où chaque côté est un cube.
Pour créer un hypercube, vous avez besoin de 16 vecteurs 4d (un vecteur avec un x
, un y
, un z
et un w
composant). Ces vecteurs sont les suivants:
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);
L'hypercube a 24 faces. La liste suivante les contient tous (chaque groupe marque un 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
Avec toutes ces informations, vous avez techniquement un hypercube en code. Pour faire pivoter cela, vous avez besoin de 6 matrices différentes pour chaque plan de rotation, une pour les plans YZ, XZ, XY, XW, YW et ZW. Une fois que vous avez chaque matrice, vous devez multiplier les sommets du cube avec eux.
Les images suivantes montrent la structure de chaque matrice:
Pour la rotation sur le plan YZ:
Pour la rotation sur le plan XZ:
Pour la rotation sur le plan XY:
Pour la rotation sur le plan XW:
Pour la rotation sur le plan YW:
Pour la rotation sur le plan ZW:
Les rotations sont appliquées dans cet ordre.
Après tout cela, vous avez un hypercube tourné. Maintenant, vous devez le dessiner. Vous devez utiliser une projection orthogonale combinée à une projection en perspective d'envoyer (x, y, z, w)
à (2x/(2+z), 2y/(2+z))
.
Contribution
Votre entrée est de 6 entiers compris entre 0 (inclusivement) et 360 (exclusivement). Ceux-ci représentent les rotations en degrés sur les différents plans de rotation de l'hypercube.
Sortie
Votre sortie doit être une seule image contenant l'hypercube. L'affichage peut être une image tramée, une image vectorielle ou un art ASCII. L'image de sortie doit être d'au moins 100 * 100 pixels et le cube doit occuper au moins 50% de l'écran. Tout format de sortie d'image par défaut est autorisé.
Cas de test
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
Ouvrez les images dans un nouvel onglet, pour les voir en taille réelle.
Règles
- Les règles par défaut s'appliquent
- Les failles standard sont interdites
- Le code le plus court en octets gagne