mirror of
https://github.com/processing/processing4.git
synced 2026-01-29 11:21:06 +01:00
60 lines
1.0 KiB
Plaintext
60 lines
1.0 KiB
Plaintext
|
|
// A simple Particle class, renders the particle as an image
|
|
|
|
class Particle {
|
|
PVector loc;
|
|
PVector vel;
|
|
PVector acc;
|
|
float lifespan;
|
|
PImage img;
|
|
|
|
Particle(PVector l,PImage img_) {
|
|
acc = new PVector(0,0);
|
|
float vx = (float) generator.nextGaussian()*0.3;
|
|
float vy = (float) generator.nextGaussian()*0.3 - 1.0;
|
|
vel = new PVector(vx,vy);
|
|
loc = l.get();
|
|
lifespan = 100.0;
|
|
img = img_;
|
|
}
|
|
|
|
void run() {
|
|
update();
|
|
render();
|
|
}
|
|
|
|
// Method to apply a force vector to the Particle object
|
|
// Note we are ignoring "mass" here
|
|
void applyForce(PVector f) {
|
|
acc.add(f);
|
|
}
|
|
|
|
// Method to update location
|
|
void update() {
|
|
vel.add(acc);
|
|
loc.add(vel);
|
|
acc.mult(0); // clear Acceleration
|
|
lifespan -= 2.5;
|
|
}
|
|
|
|
// Method to display
|
|
void render() {
|
|
imageMode(CENTER);
|
|
tint(255,lifespan);
|
|
image(img,loc.x,loc.y);
|
|
}
|
|
|
|
// Is the particle still useful?
|
|
boolean dead() {
|
|
if (lifespan <= 0.0) {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|