Processing 无法在处理中从void转换为PVector

Processing 无法在处理中从void转换为PVector,processing,Processing,我正在学习处理,并尝试使用帕斯卡三角形生成分形。这需要PVectors的数组。我遇到了一个我不理解的问题,我发现无法从void转换为PVector 这是一个摘录,并不是每个变量都在摘录中定义,但我认为问题可能是这样的,我不需要透露更多的代码,因为显示的更多代码可能会混淆问题 arrayCopy(点、旧点); 点数=新的PVector[int(pow(2,j))]; 如果(j==1) { 点[0]=新的PVector(0,0); } 如果(j==2) { 点[0]=新的PVector(1,0);

我正在学习处理,并尝试使用帕斯卡三角形生成分形。这需要
PVectors的数组。我遇到了一个我不理解的问题,我发现
无法从void转换为PVector

这是一个摘录,并不是每个变量都在摘录中定义,但我认为问题可能是这样的,我不需要透露更多的代码,因为显示的更多代码可能会混淆问题

arrayCopy(点、旧点);
点数=新的PVector[int(pow(2,j))];
如果(j==1)
{
点[0]=新的PVector(0,0);
}
如果(j==2)
{
点[0]=新的PVector(1,0);
点[1]=新PVector(-1,0);
}
其他的
{
//在这一系列的第三学期中,j将是3岁
整数项的个数=整数(pow(j-1,2));
int[]pasc=PascalTriangle(j-1);
float real=findReal(pasc,x,y,从项到填充的个数);
float imagi=findImagi(pasc,x,y,从项到填充的个数);
PVector v=新PVector(real,imagi);
对于(int k=0;k<要填充的项的数量;k=k+2)
{
点[k]=旧点[k]。添加(v);/!!***问题行***!!!
点[k+1]=旧点[k].sub(v);
}
}
我的其他功能,如
findReal
findImagi
,我相信是正确的。问题行上的添加应该是两个
pvector
之间的添加-合法操作。相反,有些东西是空的?也许
arrayCopy
不是我想要的深度拷贝

不确定发生了什么。

方法.add()不返回PVector(它不返回任何内容,因此为void),因此无法执行此操作

points[k] = old_points[k].add(v);
我想你要做的是把v加到旧的点[k]上,然后把它传递给点[k],而点[k]不会像那样工作。。。你必须这样做:

old_points[k].add(v);
points[k] = old_points[k];
old_points[k].sub(v);
points[k+1] = old_points[k];
PVector add(PVector v) {
  this.x += v.x;
  this.y += v.y;
  this.z += v.z;
  return this;
}
void add(PVector v) {
  this.x += v.x;
  this.y += v.y;
  this.z += v.z;
}
为了使您编写的内容有效,add函数应该如下所示:

old_points[k].add(v);
points[k] = old_points[k];
old_points[k].sub(v);
points[k+1] = old_points[k];
PVector add(PVector v) {
  this.x += v.x;
  this.y += v.y;
  this.z += v.z;
  return this;
}
void add(PVector v) {
  this.x += v.x;
  this.y += v.y;
  this.z += v.z;
}
相反,它看起来有点像这样:

old_points[k].add(v);
points[k] = old_points[k];
old_points[k].sub(v);
points[k+1] = old_points[k];
PVector add(PVector v) {
  this.x += v.x;
  this.y += v.y;
  this.z += v.z;
  return this;
}
void add(PVector v) {
  this.x += v.x;
  this.y += v.y;
  this.z += v.z;
}
编辑:在Ryan下面的评论之后,我在这里提供了另一种方法,使用static.add()方法返回一个PVector

points[k] = PVector.add(old_points[k],v);
points[k+1] = PVector.sub(old_points[k],v);

实际上,said
返回void或PVector
我明白了。加法和减法运算意味着要单独使用。很公平。谢谢@RyanCarlson编辑:@pinkelephantson欢迎您!