From 2010f1b8d59ae089b68f29b32063764cb550aafa Mon Sep 17 00:00:00 2001 From: Jonathan Puckey Date: Tue, 28 Jun 2011 12:20:29 +0200 Subject: [PATCH] Clean up Tadpoles example. --- examples/Animated/Tadpoles.html | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/examples/Animated/Tadpoles.html b/examples/Animated/Tadpoles.html index 6825b5c3..0b6ee51d 100644 --- a/examples/Animated/Tadpoles.html +++ b/examples/Animated/Tadpoles.html @@ -26,7 +26,7 @@ initialize: function(position, maxSpeed, maxForce) { var strength = Math.random() * 0.5; this.acc = new Point(0, 0); - this.vel = new Point(Math.random() * 2 - 1, Math.random() * 2 - 1); + this.vel = Point.random() * 2 - 1; this.loc = position.clone(); this.r = 30; this.maxSpeed = maxSpeed + strength; @@ -64,8 +64,10 @@ var segment = segments[i]; var vector = lastPoint - segment.point; this.count += this.vel.length * 10; - var rotated = lastVector.rotate(90).normalize(Math.sin((this.count + i * 3) / 300)); - lastPoint = segment.point = lastPoint + lastVector.normalize(-5 - this.vel.length / 3); + var rotLength = Math.sin((this.count + i * 3) / 300); + var rotated = lastVector.rotate(90).normalize(rotLength); + lastPoint += lastVector.normalize(-5 - this.vel.length / 3); + segment.point = lastPoint; segment.point += rotated; lastVector = vector; } @@ -108,15 +110,18 @@ }, // A method that calculates a steering vector towards a target - // Takes a second argument, if true, it slows down as it approaches the target + // Takes a second argument, if true, it slows down as it approaches + // the target steer: function(target, slowdown) { var steer, desired = target - this.loc, d = desired.length; if (d > 0) { - // Two options for desired vector magnitude (1 -- based on distance, 2 -- maxSpeed) + // Two options for desired vector magnitude + // (1 -- based on distance, 2 -- maxSpeed) if (slowdown && d < 100) { - desired.length = this.maxSpeed * (d / 100); // This damping is somewhat arbitrary + // // This damping is somewhat arbitrary: + desired.length = this.maxSpeed * (d / 100); } else { desired.length = this.maxSpeed; } @@ -203,7 +208,8 @@ }, // Cohesion - // For the average location (i.e. center) of all nearby boids, calculate steering vector towards that location + // For the average location (i.e. center) of all nearby boids, + // calculate steering vector towards that location cohesion: function(boids) { var neighborDist = 100; var sum = new Point(0, 0); @@ -263,7 +269,8 @@ function onFrame(event) { for (var i = 0, l = boids.length; i < l; i++) { if (groupTogether) { - var point = heartPath.getPointAt(((i + event.count / 30) % l) / l * pathLength); + var length = ((i + event.count / 30) % l) / l * pathLength; + var point = heartPath.getPointAt(length); boids[i].arrive(point); } boids[i].run(boids);