Processing 如何在处理过程中创建尾随模式?

Processing 如何在处理过程中创建尾随模式?,processing,Processing,我正在尝试创建一个程序,其中椭圆围绕中心屏幕旋转,并添加一个尾随图案。我在处理中使用ArrayList来存储旧向量,然后绘制它,但它不是渲染。还是我做错了?我写的部分在底部,谢谢 Particle[] part = new Particle[10]; int len = 10; void setup(){ size(1000,1000,P2D); //fullScreen(); for(int i = 0; i < len; i++){ part[i] = new P

我正在尝试创建一个程序,其中椭圆围绕中心屏幕旋转,并添加一个尾随图案。我在处理中使用ArrayList来存储旧向量,然后绘制它,但它不是渲染。还是我做错了?我写的部分在底部,谢谢

Particle[] part = new Particle[10];
int len = 10;

void setup(){
  size(1000,1000,P2D);
  //fullScreen();
  for(int i = 0; i < len; i++){
    part[i] = new Particle();
  }
}

void draw(){
  background(255);
  for(int i = 0; i < len; i++){
    part[i].show();
    part[i].update();
    part[i].trail();
  }
}

class Particle{

  float r,angle,d;
  PVector pos = new PVector();
  ArrayList<PVector> history = new ArrayList<PVector>();

  Particle(){
    angle = random(20,360);
    r = random(20,300);
    pos.x = width/2 + cos(angle) * r;
    pos.y = height/2 + sin(angle) * r;
  }

  void show(){
    stroke(0,0,255);
    ellipse(pos.x,pos.y,5,5);
    //line(x,y,width/2,height/2);
  }

  void update(){
    pos.x = width/2 + cos(angle) * r;
    pos.y = height/2 + sin(angle) * r;
    angle += random(0.001,0.01);
  }

  void trail(){
    history.add(pos);

    if(history.size() > 50){
      history.remove(0);
    }

    for(int i = 0; i < history.size(); i++){
      PVector prev = history.get(i);
      ellipse(prev.x,prev.y,5,5);
    }
  }
}
Particle[]part=新粒子[10];
int len=10;
无效设置(){
尺寸(10001000,P2D);
//全屏();
对于(int i=0;i50){
历史。删除(0);
}
对于(int i=0;i
当您这样做时

然后不创建新的
PVector
对象。您只需将对属性
pos
的引用添加到数组列表
history
。当
pos
发生更改时,
history
的所有元素仍然参考
pos
。每个
粒子只存在一个
PVecor
对象

pos
添加到
history
时,创建一个
pos
,以解决此问题:

history.add(pos.copy());
当您这样做时

然后不创建新的
PVector
对象。您只需将对属性
pos
的引用添加到数组列表
history
。当
pos
发生更改时,
history
的所有元素仍然参考
pos
。每个
粒子只存在一个
PVecor
对象

pos
添加到
history
时,创建一个
pos
,以解决此问题:

history.add(pos.copy());
history.add(pos);