【发布时间】:2017-07-11 04:29:13
【问题描述】:
过去几天我一直在用 Processing 3 构建一个程序(自 2009 年计算机科学简介以来第一次回到 Processing)并一直遇到这个问题:
public class PolarMap {
...
PVector[][] mapping = new PVector[width][height];
PVector[][] cartesian = new PVector[width][height];
PVector cart = new PVector();
PVector polar = new PVector();
/**
Maps every pixel on the cartesian plane to a polar coordinate
relative to some origin point.
*/
public void Map(float originX, float originY){
for (int x=0; x < width; x++){
for (int y=0; y < height; y++){
...
cart.add(x, y);
polar.add(r, theta);
mapping[x][y] = polar; ***
cartesian[x][y] = cart;
}
}
}
...
}
在带有 *** 的行上,我总是会抛出一个 Array Index Out Of Bounds 。我搜索了 SO、Reddit 和 Processing 自己的文档以找出原因。如果您不熟悉处理,宽度和高度都是内置变量,并且等于画布上的像素数,并且在 setup() 方法中声明(在我的情况下为 800x800)。由于某种原因,两个数组都没有被初始化为这个值——相反,它们被初始化为这些变量的默认值:100。
所以,因为它没有任何意义,但这是其中之一,我尝试声明新变量:
int high = height;
int wide = width;
并用这些变量初始化数组。你不知道吗,这解决了问题。我现在有两个 800x800 数组。
所以这是我的问题:为什么内置变量在用于初始化数组时没有按预期工作,但在分配给定义的变量时却完全按照预期工作?
【问题讨论】:
标签: variables processing built-in