From 0463fcc9cab7c59ce1764435b770f591cee70b9a Mon Sep 17 00:00:00 2001
From: Jonathan Puckey <me@jonathanpuckey.com>
Date: Tue, 28 Jun 2011 11:35:08 +0200
Subject: [PATCH 1/4] Fix spelling mistake.

---
 src/ui/View.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/ui/View.js b/src/ui/View.js
index dad0a6ac..024ae5f1 100644
--- a/src/ui/View.js
+++ b/src/ui/View.js
@@ -20,7 +20,7 @@
  * @class The View object wraps a canvas element and handles drawing and user
  * interaction through mouse and keyboard for it. It offer means to scroll the
  * view, find the currently visible bounds in project coordinates, or the
- * center, both useful fo constructing artwork that should appear centered on
+ * center, both useful for constructing artwork that should appear centered on
  * screen.
  */
 var View = this.View = Base.extend(/** @lends View# */{

From 9e2fa872f8934e7b9c576807102d87cd1d32f1de Mon Sep 17 00:00:00 2001
From: Jonathan Puckey <me@jonathanpuckey.com>
Date: Tue, 28 Jun 2011 11:35:52 +0200
Subject: [PATCH 2/4] Fix downloads url in readme.

---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 005d9665..d3016826 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
 # Paper.js - The Swiss Army Knife of Vector Graphics Scripting
 
-If you want to work with Paper.js, simply download the latest "stable" version from [http://paperjs.org/downloads/](http://paperjs.org/downloads/)
+If you want to work with Paper.js, simply download the latest "stable" version from [http://paperjs.org/download/](http://paperjs.org/download/)
 
 - Website: <http://paperjs.org/>
 - Discussion forum: <http://groups.google.com/group/paperjs>

From b7ba11c9b8ec14191ccc3fbe428d2fdd62de7deb Mon Sep 17 00:00:00 2001
From: Jonathan Puckey <me@jonathanpuckey.com>
Date: Tue, 28 Jun 2011 12:13:13 +0200
Subject: [PATCH 3/4] Cleanup StrokeBounds example.

---
 examples/Scripts/StrokeBounds.html | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/examples/Scripts/StrokeBounds.html b/examples/Scripts/StrokeBounds.html
index 1f38dbcf..903710d3 100644
--- a/examples/Scripts/StrokeBounds.html
+++ b/examples/Scripts/StrokeBounds.html
@@ -68,14 +68,6 @@
 		path.strokeCap = 'round';
 		path.strokeJoin = 'miter';
 
-		var path = new Path.Circle([50, 50], 35);
-		path.strokeColor = 'black';
-		path.strokeWidth = 30;
-		path.strokeJoin = 'round';
-		path.strokeCap = 'round';
-//		path.scale(1, 0.5);
-		paths.push(path);
-
 		for (var i = 0; i < paths.length; i++) {
 			var path = paths[i];
 			path.scale(1.5, new Point(300, 0));
@@ -88,6 +80,8 @@
 			rect.strokeColor = 'red'
 			rect.fillColor = null;
 		}
+		
+		project.activeLayer.position = view.center;
 	</script>
 </head>
 <body>

From 2010f1b8d59ae089b68f29b32063764cb550aafa Mon Sep 17 00:00:00 2001
From: Jonathan Puckey <me@jonathanpuckey.com>
Date: Tue, 28 Jun 2011 12:20:29 +0200
Subject: [PATCH 4/4] 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);