Browse Source

Vector3.projectOn -> projectOnUnit, added projectOnVector.

Ben Houston 12 years ago
parent
commit
e46d955358
2 changed files with 20 additions and 7 deletions
  1. 15 2
      src/math/Vector3.js
  2. 5 5
      test/unit/math/Vector3.js

+ 15 - 2
src/math/Vector3.js

@@ -520,20 +520,33 @@ THREE.extend( THREE.Vector3.prototype, {
 
 	},
 
-	projectOn: function( unitNormal ) {
+	projectOnUnit: function( unitNormal ) {
 
 		var d = this.dot( unitNormal );
 		return this.copy( unitNormal ).multiplyScalar( d );
 
 	},
 
+	projectOnVector: function () {
+
+		var v1 = new THREE.Vector3();
+
+		return function( vector ) {
+
+			v1.copy( vector ).normalize();
+			return this.projectOnUnit( v1 );
+
+		};
+
+	}(),
+
 	reflect: function () {
 
 		var v1 = new THREE.Vector3();
 
 		return function ( unitNormal ) {
 
-		    v1.copy( this ).projectOn( unitNormal ).multiplyScalar( 2 );
+		    v1.copy( this ).projectOnUnit( unitNormal ).multiplyScalar( 2 );
 
 		    return this.subVectors( v1, this );
 

+ 5 - 5
test/unit/math/Vector3.js

@@ -239,21 +239,21 @@ test( "setLength", function() {
 
 });
 
-test( "projectOn", function() {
+test( "projectOnUnit", function() {
 	var a = new THREE.Vector3( 1, 0, 0 );
 	var b = new THREE.Vector3();
 	var normal = new THREE.Vector3( 1, 0, 0 );
 
-	ok( b.copy( a ).projectOn( normal ).equals( new THREE.Vector3( 1, 0, 0 ) ), "Passed!" );
+	ok( b.copy( a ).projectOnUnit( normal ).equals( new THREE.Vector3( 1, 0, 0 ) ), "Passed!" );
 
 	a.set( 0, 1, 0 );
-	ok( b.copy( a ).projectOn( normal ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
+	ok( b.copy( a ).projectOnUnit( normal ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
 
 	a.set( 0, 0, -1 );
-	ok( b.copy( a ).projectOn( normal ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
+	ok( b.copy( a ).projectOnUnit( normal ).equals( new THREE.Vector3( 0, 0, 0 ) ), "Passed!" );
 
 	a.set( -1, 0, 0 );
-	ok( b.copy( a ).projectOn( normal ).equals( new THREE.Vector3( -1, 0, 0 ) ), "Passed!" );
+	ok( b.copy( a ).projectOnUnit( normal ).equals( new THREE.Vector3( -1, 0, 0 ) ), "Passed!" );
 
 });