Initial Commit
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
// A simple Particle class
|
||||
|
||||
class Particle {
|
||||
PVector position;
|
||||
PVector velocity;
|
||||
PVector acceleration;
|
||||
float lifespan;
|
||||
|
||||
Particle(PVector l) {
|
||||
acceleration = new PVector(0, 0.05);
|
||||
velocity = new PVector(random(-1, 1), random(-2, 0));
|
||||
position = l.copy();
|
||||
lifespan = 255.0;
|
||||
}
|
||||
|
||||
void run() {
|
||||
update();
|
||||
display();
|
||||
}
|
||||
|
||||
// Method to update position
|
||||
void update() {
|
||||
velocity.add(acceleration);
|
||||
position.add(velocity);
|
||||
lifespan -= 1.0;
|
||||
}
|
||||
|
||||
// Method to display
|
||||
void display() {
|
||||
stroke(255, lifespan);
|
||||
fill(255, lifespan);
|
||||
ellipse(position.x, position.y, 8, 8);
|
||||
}
|
||||
|
||||
// Is the particle still useful?
|
||||
boolean isDead() {
|
||||
if (lifespan < 0.0) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
// A class to describe a group of Particles
|
||||
// An ArrayList is used to manage the list of Particles
|
||||
|
||||
class ParticleSystem {
|
||||
ArrayList<Particle> particles;
|
||||
PVector origin;
|
||||
|
||||
ParticleSystem(PVector position) {
|
||||
origin = position.copy();
|
||||
particles = new ArrayList<Particle>();
|
||||
}
|
||||
|
||||
void addParticle() {
|
||||
particles.add(new Particle(origin));
|
||||
}
|
||||
|
||||
void run() {
|
||||
for (int i = particles.size()-1; i >= 0; i--) {
|
||||
Particle p = particles.get(i);
|
||||
p.run();
|
||||
if (p.isDead()) {
|
||||
particles.remove(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
/**
|
||||
* Simple Particle System
|
||||
* by Daniel Shiffman.
|
||||
*
|
||||
* Particles are generated each cycle through draw(),
|
||||
* fall with gravity and fade out over time
|
||||
* A ParticleSystem object manages a variable size (ArrayList)
|
||||
* list of particles.
|
||||
*/
|
||||
|
||||
ParticleSystem ps;
|
||||
|
||||
void setup() {
|
||||
size(640, 360);
|
||||
ps = new ParticleSystem(new PVector(width/2, 50));
|
||||
}
|
||||
|
||||
void draw() {
|
||||
background(0);
|
||||
ps.addParticle();
|
||||
ps.run();
|
||||
}
|
||||
Reference in New Issue
Block a user