aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNat Lasseter <Nat Lasseter nathan@bytemark.co.uk>2017-06-28 19:55:45 +0100
committerNat Lasseter <Nat Lasseter nathan@bytemark.co.uk>2017-06-28 19:55:45 +0100
commit1c2acd3320963884821d52530b24637abd88354f (patch)
tree1a864fdb635b507c639270943c31b01f172c1d18
parent993442813dbee7805ef18146113872cae5892e99 (diff)
Causally air resistance.
-rw-r--r--particle.js6
-rw-r--r--sketch.js4
2 files changed, 9 insertions, 1 deletions
diff --git a/particle.js b/particle.js
index 66f4f6e..c62dd47 100644
--- a/particle.js
+++ b/particle.js
@@ -9,6 +9,12 @@ function Particle(x, y, m, c) {
this.acc.add(p5.Vector.div(force, this.mass));
}
+ this.applyDrag = function(drag_coeff) {
+ var rev_vel = createVector().sub(this.vel);
+ var drag = rev_vel.mult(drag_coeff);
+ this.applyForce(drag);
+ }
+
this.update = function() {
this.vel.add(this.acc);
this.pos.add(this.vel);
diff --git a/sketch.js b/sketch.js
index 3cce527..2c6b9d3 100644
--- a/sketch.js
+++ b/sketch.js
@@ -1,5 +1,6 @@
var ps = [];
var gravity;
+var air_resistance = 0.5;
var wid = 800;
var hei = 600;
@@ -14,6 +15,7 @@ function draw() {
for(var i = ps.length - 1; i >= 0; i--) {
ps[i].applyForce(gravity);
+ ps[i].applyDrag(air_resistance);
ps[i].update();
stroke(ps[i].colour);
@@ -30,7 +32,7 @@ function draw() {
mouseX, mouseY, random(2, 8),
color(random(0, 360), random(90, 100), random(50, 100))
);
- p.applyForce(createVector(random(-40, 40), random(-150, 0)));
+ p.applyForce(createVector(random(-200, 200), random(-400, 0)));
ps.push(p);
}
}