processing - 如何在 Processing (v. 3.4) 中将元素附加到 3 维数组?
问题描述
我正在创建一个程序来渲染 3D 图形。我有一个 3D 数组“形状”,其中包含要渲染的所有多边形。它是一个多边形数组,其中每个多边形本身就是一个点数组,每个点是一个由 3 个整数值(x、y、z 坐标)组成的数组。我尝试过使用 append() 函数但失败了。我还能如何让它工作?
我试过使用 append() 函数,但这似乎不适用于多维数组。
int[][][] addPolyhedron(int[][][] shapes, int[][][] polyhedron)
{
for(int i = 0; i < polyhedron.length; i ++)
{
shapes = append(shapes, polyhedron[i]);
{
return shapes;
}
我希望这可以扩展阵列形状以包括阵列多面体中的所有多边形。但是,我收到一条错误消息,提示“类型不匹配,“java.lang.Object”与“int[][][]”不匹配。提前致谢。
解决方案
在 Java 中,数组(任何维度)是不可扩展的——大小在实例化时定义、分配和固定。您想要添加到(并因此动态调整大小)shapes
。虽然 Processing 确实提供了功能,但我认为使用内置的 Java 数据类型append()
更合适。ArrayList
您的函数可以重构为如下所示:
ArrayList<Integer[][]> addPolyhedron(ArrayList<Integer[][]> shapes, ArrayList<Integer[][]> polyhedron)
{
shapes.addAll(polyhedron);
return shapes;
}
请注意,这int[][]
是Integer[][]
因为 anArrayList
不能用原始类型(int
、bool
、float
等)声明。
添加一个单独的程序定义的多边形shapes
将像这样完成:
shapes.add(new Integer[][] {{1,2,5},{3,4,5},{6,5,4}}); // adds a triangle to shapes.
从shapes
ArrayList 获取坐标可以这样完成:
shapes.get(0)[1][1]; // returns 4.
推荐阅读
- javascript - Javascript - 将回调与 addEventListener 一起用于“全部删除”按钮
- c# - 如何获取 VSTS 迭代的 TimeFrame(当前或未来)
- mysql - 在 SQL 上显示列值及其计数
- android - 错误。当我将应用程序更改为库时,出现多个错误
- javascript - 如何设置我的 Ubuntu 18.04 服务器以允许 WebSockets?
- c++ - Are there multiple member functions compiled for each C++ object?
- excel - 在 SeleniumVBA 中将提供编译错误的首选项方法设置为“Argument not optional”
- facebook - Graph 返回错误:(#100) 只有 URL 的所有者才能指定图片、名称、缩略图或描述参数
- html - 如何在文本上放置一个小图标?
- javascript - 如何在 json 文件中移动。#反应