介绍
超立方体/梯形函数是普通立方体的4维等效项。它是通过以下方法制成的:使用立方体网,将其扩展到第3维,然后使用第4维将其折叠成超立方体。基本上是一个立方体,每边都是一个立方体。
要创建超立方体,您需要16个4d向量(一个具有an x
,a y
,a 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
利用所有这些信息,从技术上来说,您在代码中拥有一个超级立方体。要旋转此平面,每个旋转平面需要6个不同的矩阵,YZ,XZ,XY,XW,YW和ZW平面需要一个矩阵。获得每个矩阵后,需要将多维数据集的顶点与它们相乘。
下图显示了每个矩阵的结构:
对于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
在新标签页中打开图像,以查看完整尺寸的图像。
规则
- 默认规则适用
- 禁止出现标准漏洞
- 以字节为单位的最短代码获胜