【发布时间】:2018-08-16 12:37:46
【问题描述】:
我正在尝试在不使用 p3d 渲染器的情况下创建类似 3d 的草图。我已经设法制作了一个立方体,但为此我对所有坐标和连接进行了硬编码,一旦你想添加另一个维度,它就会开始变得有点无聊。所以我创建了一个函数来创建所有坐标:
float[][] cube(int dims, float w) {
int outputSize = (int)pow(2, dims);
float[] temp = new float[dims];
float[][] res = new float[outputSize][dims];
Arrays.fill(temp, w);
res[0] = temp.clone();
for (int i = 0; i < outputSize - 1; i++) {
for (int j = dims - 1; true; j--) {
temp[j] *= -1;
if (temp[j] < 0) {
break;
}
}
res[i + 1] = temp.clone();
}
return res;
}
它只是通过使用二进制来工作,因此输入 (2, 1) 立方体将是:
[[1, 1], [1, -1], [-1, 1], [-1, -1]]
它工作正常,但问题是它只返回角落而不是女巫角落来连接,但我找不到有效的方法来做到这一点。我需要另一个函数来返回要连接的索引。
下面是给定上述数组的函数应该做什么的示例:
[[0, 1], [1, 3], [3, 2], [2, 0]]
(内部数组可能有不同的顺序)
是否有任何已知的算法可以连接 n 维立方体的角?
如果其他点生成有帮助,我可以更改其他功能。
【问题讨论】:
-
你能举一些例子来说明这应该是什么样子吗?你能发一个minimal reproducible example吗?您将如何使用 P3D 渲染器做到这一点?
-
@KevinWorkman 我已更改问题以使其更易于理解。没有错误,因此我无法发布最小、完整和可验证的示例,而且确实,我无法使用 p3d 渲染器进行 4d,事实上这就是我开始尝试它的原因。
-
@BenediktViljiMagnússon 这个how should i handle (morphing) 4D objects in opengl? 以及其中的所有链接可能会让您感兴趣
-
@Spektre 我在处理时这样做,这是一个用于画布的 Java 库,但据我对 opengl 的了解,它最多支持 4x4 矩阵,并且最多支持 4d 转换。关于 4d 投影和旋转的文章很多,在 Google 上搜索 4d 投影即可。您还不需要通过更改片段着色器来填充对象的表面。 TL;博士
标签: java vector 3d processing 4d