前書き
ハイパーキューブ/テセラクトは、通常のキューブに相当する4次元です。キューブネットを取得して3次元に拡張し、4次元を使用してハイパーキューブに折り畳むことで作成されます。基本的には立方体で、各辺は立方体です。
ハイパーキューブを作成するには、16個の4Dベクトル(のベクトルを必要とするx
、y
、z
およびw
コンポーネント)。これらのベクトルは次のとおりです。
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);
ハイパーキューブには24の面があります。次のリストには、それらすべてが含まれています(すべてのグループがクワッドをマークします)。
ABFE, CDHG, BCGF, DAEH, DCBA, FEHG
IJNM, KLPO, JKON, LIMP, LKJI, PMNO
ABJI, DCKL, BCKJ, DAIL, FEMN, GHPO, FGON, EHPM, EAIM, BFNJ, CGOK, HDLP
これらすべての情報を使用して、技術的にコード内にハイパーキューブを作成します。これを回転するには、YZ、XZ、XY、XW、YW、ZW平面にそれぞれ1つずつ、6つの異なる回転平面に異なるマトリックスが必要です。すべてのマトリックスを作成したら、キューブの頂点にそれらを乗算する必要があります。
次の画像は、各マトリックスの構造を示しています。
YZ平面上の回転の場合:
XZ平面上の回転の場合:
XY平面での回転の場合:
XW平面上の回転の場合:
YW平面上の回転の場合:
ZW平面上の回転の場合:
回転はこの順序で適用されます。
結局、回転したハイパーキューブができました。今、あなたはそれを描く必要があります。に送信(x, y, z, w)
するには、透視投影と組み合わせた直交投影を使用する必要があります(2x/(2+z), 2y/(2+z))
。
入力
入力は、0(包括的)から360(排他的)までの6つの整数です。これらは、ハイパーキューブのさまざまな回転面での回転を度単位で表します。
出力
出力は、ハイパーキューブを含む単一の画像である必要があります。表示は、ラスタライズされた画像、ベクター画像、またはASCIIアートです。出力画像は少なくとも100 * 100ピクセルである必要があり、キューブは画面の少なくとも50%を占める必要があります。デフォルトの画像出力形式はすべて許可されます。
テストケース
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
画像を新しいタブで開き、フルサイズで表示します。
ルール
- デフォルトのルールが適用されます
- 標準的な抜け穴は禁止されています
- バイト単位の最短コードが勝つ