소스 검색

remove Vector3.projectOnUnit, add Vector3.projectOnPlane (equivalent to previously removed orthoTo).

Ben Houston 12 년 전
부모
커밋
ba1a28489c
2개의 변경된 파일41개의 추가작업 그리고 15개의 파일을 삭제
  1. 18 10
      src/math/Vector3.js
  2. 23 5
      test/unit/math/Vector3.js

+ 18 - 10
src/math/Vector3.js

@@ -520,13 +520,6 @@ THREE.extend( THREE.Vector3.prototype, {
 
 
 	},
 	},
 
 
-	projectOnUnit: function( unitNormal ) {
-
-		var d = this.dot( unitNormal );
-		return this.copy( unitNormal ).multiplyScalar( d );
-
-	},
-
 	projectOnVector: function () {
 	projectOnVector: function () {
 
 
 		var v1 = new THREE.Vector3();
 		var v1 = new THREE.Vector3();
@@ -534,19 +527,34 @@ THREE.extend( THREE.Vector3.prototype, {
 		return function( vector ) {
 		return function( vector ) {
 
 
 			v1.copy( vector ).normalize();
 			v1.copy( vector ).normalize();
-			return this.projectOnUnit( v1 );
+			var d = this.dot( v1 );
+			return this.copy( v1 ).multiplyScalar( d );
 
 
 		};
 		};
 
 
 	}(),
 	}(),
 
 
+	projectOnPlane: function () {
+
+		var v1 = new THREE.Vector3();
+
+		return function( planeNormal ) {
+
+			v1.copy( this ).projectOnVector( planeNormal );
+
+			return this.sub( v1 );
+
+		}
+
+	}(),
+
 	reflect: function () {
 	reflect: function () {
 
 
 		var v1 = new THREE.Vector3();
 		var v1 = new THREE.Vector3();
 
 
-		return function ( unitNormal ) {
+		return function ( vector ) {
 
 
-		    v1.copy( this ).projectOnUnit( unitNormal ).multiplyScalar( 2 );
+		    v1.copy( this ).projectOnVector( vector ).multiplyScalar( 2 );
 
 
 		    return this.subVectors( v1, this );
 		    return this.subVectors( v1, this );
 
 

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

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