sketch_200718a文件
Star[] stars = new Star[600];
float speed;
void setup(){
size(400, 400);
for(int i = 0; i < stars.length; i++){
stars[i] = new Star();
}
}
void draw(){
speed = map(mouseX, 0, width, 0, 20);
background(0);
translate(width / 2, height / 2);
for(int i = 0; i < stars.length; i++){
stars[i].update();
stars[i].show();
}
}
Star文件
class Star{
float x;
float y;
float z;
float pz;
Star(){
x = random(-width, width);
y = random(-height, height);
z = random(width);
pz = z;
}
void update(){
z = z - speed;
if(z < 1){
x = random(-width, width);
y = random(-height, height);
z = width;
pz = z;
}
}
void show(){
fill(255);
noStroke();
float sx = map(x / z, 0, 1, 0, width);
float sy = map(y / z, 0, 1, 0, height);
float r = map(z, 0, width, 16, 0);
float px = map(x / pz, 0, 1, 0, width);
float py = map(y / pz, 0, 1, 0, height);
pz = z;
ellipse(sx, sy, r, r);
stroke(255);
line(px, py, sx, sy);
}
}
效果图: