Processing 如何在处理过程中创建尾随模式?
我正在尝试创建一个程序,其中椭圆围绕中心屏幕旋转,并添加一个尾随图案。我在处理中使用ArrayList来存储旧向量,然后绘制它,但它不是渲染。还是我做错了?我写的部分在底部,谢谢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
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);