Browse Source

Updated builds.

Mr.doob 7 years ago
parent
commit
4fb8c5f8bc
3 changed files with 678 additions and 478 deletions
  1. 173 73
      build/three.js
  2. 332 332
      build/three.min.js
  3. 173 73
      build/three.module.js

+ 173 - 73
build/three.js

@@ -8362,56 +8362,58 @@
 			// Computes the world-axis-aligned bounding box of an object (including its children),
 			// accounting for both the object's, and children's, world transforms
 
+			var scope, i, l;
+
 			var v1 = new Vector3();
 
-			return function expandByObject( object ) {
+			function traverse( node ) {
 
-				var scope = this;
+				var geometry = node.geometry;
 
-				object.updateMatrixWorld( true );
+				if ( geometry !== undefined ) {
 
-				object.traverse( function ( node ) {
+					if ( geometry.isGeometry ) {
 
-					var i, l;
+						var vertices = geometry.vertices;
 
-					var geometry = node.geometry;
+						for ( i = 0, l = vertices.length; i < l; i ++ ) {
 
-					if ( geometry !== undefined ) {
+							v1.copy( vertices[ i ] );
+							v1.applyMatrix4( node.matrixWorld );
 
-						if ( geometry.isGeometry ) {
+							scope.expandByPoint( v1 );
 
-							var vertices = geometry.vertices;
+						}
 
-							for ( i = 0, l = vertices.length; i < l; i ++ ) {
+					} else if ( geometry.isBufferGeometry ) {
 
-								v1.copy( vertices[ i ] );
-								v1.applyMatrix4( node.matrixWorld );
+						var attribute = geometry.attributes.position;
 
-								scope.expandByPoint( v1 );
+						if ( attribute !== undefined ) {
 
-							}
+							for ( i = 0, l = attribute.count; i < l; i ++ ) {
 
-						} else if ( geometry.isBufferGeometry ) {
+								v1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld );
 
-							var attribute = geometry.attributes.position;
+								scope.expandByPoint( v1 );
 
-							if ( attribute !== undefined ) {
+							}
 
-								for ( i = 0, l = attribute.count; i < l; i ++ ) {
+						}
 
-									v1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld );
+					}
 
-									scope.expandByPoint( v1 );
+				}
 
-								}
+			}
 
-							}
+			return function expandByObject( object ) {
 
-						}
+				scope = this;
 
-					}
+				object.updateMatrixWorld( true );
 
-				} );
+				object.traverse( traverse );
 
 				return this;
 
@@ -10358,6 +10360,26 @@
 
 		}(),
 
+		rotateOnWorldAxis: function () {
+			
+			// rotate object on axis in world space
+			// axis is assumed to be normalized
+			// method assumes no rotated parent
+
+			var q1 = new Quaternion();
+			
+			return function rotateOnWorldAxis( axis, angle ) {
+			
+				q1.setFromAxisAngle( axis, angle );
+			
+				this.quaternion.premultiply( q1 );
+			
+				return this;
+			
+			};
+			
+		}(),
+
 		rotateX: function () {
 
 			var v1 = new Vector3( 1, 0, 0 );
@@ -20552,7 +20574,7 @@
 		var device = null;
 		var frameData = null;
 
-		if ( 'VRFrameData' in window ) {
+		if ( typeof window !== 'undefined' && 'VRFrameData' in window ) {
 
 			frameData = new window.VRFrameData();
 
@@ -20600,7 +20622,11 @@
 
 		}
 
-		window.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false );
+		if ( typeof window !== 'undefined' ) {
+
+			window.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false );
+
+		}
 
 		//
 
@@ -26045,6 +26071,7 @@
 		var vertex = new Vector3();
 		var normal = new Vector3();
 		var uv = new Vector2();
+		var P = new Vector3();
 
 		var i, j;
 
@@ -26098,7 +26125,7 @@
 
 			// we use getPointAt to sample evenly distributed points from the given path
 
-			var P = path.getPointAt( i / tubularSegments );
+			P = path.getPointAt( i / tubularSegments, P );
 
 			// retrieve corresponding normal and binormal
 
@@ -34405,9 +34432,13 @@
 							break;
 
 						case 'DodecahedronGeometry':
+						case 'DodecahedronBufferGeometry':
 						case 'IcosahedronGeometry':
+						case 'IcosahedronBufferGeometry':
 						case 'OctahedronGeometry':
+						case 'OctahedronBufferGeometry':
 						case 'TetrahedronGeometry':
+						case 'TetrahedronBufferGeometry':
 
 							geometry = new Geometries[ data.type ](
 								data.radius,
@@ -34469,6 +34500,18 @@
 
 							break;
 
+						case 'PolyhedronGeometry':
+						case 'PolyhedronBufferGeometry':
+
+							geometry = new Geometries[ data.type ](
+								data.vertices,
+								data.indices,
+								data.radius,
+								data.details
+							);
+
+							break;
+
 						case 'BufferGeometry':
 
 							geometry = bufferGeometryLoader.parse( data );
@@ -35067,8 +35110,8 @@
 	 * Extensible curve object
 	 *
 	 * Some common of curve methods:
-	 * .getPoint(t), getTangent(t)
-	 * .getPointAt(u), getTangentAt(u)
+	 * .getPoint( t, optionalTarget ), .getTangent( t )
+	 * .getPointAt( u, optionalTarget ), .getTangentAt( u )
 	 * .getPoints(), .getSpacedPoints()
 	 * .getLength()
 	 * .updateArcLengths()
@@ -35108,7 +35151,7 @@
 		// Virtual base class method to overwrite and implement in subclasses
 		//	- t [0 .. 1]
 
-		getPoint: function () {
+		getPoint: function ( /* t, optionalTarget */ ) {
 
 			console.warn( 'THREE.Curve: .getPoint() not implemented.' );
 			return null;
@@ -35118,10 +35161,10 @@
 		// Get point at relative position in curve according to arc length
 		// - u [0 .. 1]
 
-		getPointAt: function ( u ) {
+		getPointAt: function ( u, optionalTarget ) {
 
 			var t = this.getUtoTmapping( u );
-			return this.getPoint( t );
+			return this.getPoint( t, optionalTarget );
 
 		},
 
@@ -35454,16 +35497,20 @@
 
 	LineCurve.prototype.isLineCurve = true;
 
-	LineCurve.prototype.getPoint = function ( t ) {
+	LineCurve.prototype.getPoint = function ( t, optionalTarget ) {
+
+		var point = optionalTarget || new Vector2();
 
 		if ( t === 1 ) {
 
-			return this.v2.clone();
+			point.copy( this.v2 );
 
-		}
+		} else {
+
+			point.copy( this.v2 ).sub( this.v1 );
+			point.multiplyScalar( t ).add( this.v1 );
 
-		var point = this.v2.clone().sub( this.v1 );
-		point.multiplyScalar( t ).add( this.v1 );
+		}
 
 		return point;
 
@@ -35471,9 +35518,9 @@
 
 	// Line curve is linear, so we can overwrite default getPointAt
 
-	LineCurve.prototype.getPointAt = function ( u ) {
+	LineCurve.prototype.getPointAt = function ( u, optionalTarget ) {
 
-		return this.getPoint( u );
+		return this.getPoint( u, optionalTarget );
 
 	};
 
@@ -35745,7 +35792,9 @@
 
 	EllipseCurve.prototype.isEllipseCurve = true;
 
-	EllipseCurve.prototype.getPoint = function ( t ) {
+	EllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {
+
+		var point = optionalTarget || new Vector2();
 
 		var twoPi = Math.PI * 2;
 		var deltaAngle = this.aEndAngle - this.aStartAngle;
@@ -35801,7 +35850,7 @@
 
 		}
 
-		return new Vector2( x, y );
+		return point.set( x, y );
 
 	};
 
@@ -35818,24 +35867,28 @@
 
 	SplineCurve.prototype.isSplineCurve = true;
 
-	SplineCurve.prototype.getPoint = function ( t ) {
+	SplineCurve.prototype.getPoint = function ( t, optionalTarget ) {
+
+		var point = optionalTarget || new Vector2();
 
 		var points = this.points;
-		var point = ( points.length - 1 ) * t;
+		var p = ( points.length - 1 ) * t;
 
-		var intPoint = Math.floor( point );
-		var weight = point - intPoint;
+		var intPoint = Math.floor( p );
+		var weight = p - intPoint;
 
-		var point0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];
-		var point1 = points[ intPoint ];
-		var point2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];
-		var point3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];
+		var p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];
+		var p1 = points[ intPoint ];
+		var p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];
+		var p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];
 
-		return new Vector2(
-			CatmullRom( weight, point0.x, point1.x, point2.x, point3.x ),
-			CatmullRom( weight, point0.y, point1.y, point2.y, point3.y )
+		point.set(
+			CatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),
+			CatmullRom( weight, p0.y, p1.y, p2.y, p3.y )
 		);
 
+		return point;
+
 	};
 
 	function CubicBezierCurve( v0, v1, v2, v3 ) {
@@ -35852,15 +35905,21 @@
 	CubicBezierCurve.prototype = Object.create( Curve.prototype );
 	CubicBezierCurve.prototype.constructor = CubicBezierCurve;
 
-	CubicBezierCurve.prototype.getPoint = function ( t ) {
+	CubicBezierCurve.prototype.isCubicBezierCurve = true;
+
+	CubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {
+
+		var point = optionalTarget || new Vector2();
 
 		var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;
 
-		return new Vector2(
+		point.set(
 			CubicBezier( t, v0.x, v1.x, v2.x, v3.x ),
 			CubicBezier( t, v0.y, v1.y, v2.y, v3.y )
 		);
 
+		return point;
+
 	};
 
 	function QuadraticBezierCurve( v0, v1, v2 ) {
@@ -35876,15 +35935,21 @@
 	QuadraticBezierCurve.prototype = Object.create( Curve.prototype );
 	QuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;
 
-	QuadraticBezierCurve.prototype.getPoint = function ( t ) {
+	QuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;
+
+	QuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {
+
+		var point = optionalTarget || new Vector2();
 
 		var v0 = this.v0, v1 = this.v1, v2 = this.v2;
 
-		return new Vector2(
+		point.set(
 			QuadraticBezier( t, v0.x, v1.x, v2.x ),
 			QuadraticBezier( t, v0.y, v1.y, v2.y )
 		);
 
+		return point;
+
 	};
 
 	var PathPrototype = Object.assign( Object.create( CurvePath.prototype ), {
@@ -42416,14 +42481,18 @@
 	CatmullRomCurve3.prototype = Object.create( Curve.prototype );
 	CatmullRomCurve3.prototype.constructor = CatmullRomCurve3;
 
-	CatmullRomCurve3.prototype.getPoint = function ( t ) {
+	CatmullRomCurve3.prototype.isCatmullRomCurve3 = true;
+
+	CatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {
+
+		var point = optionalTarget || new Vector3();
 
 		var points = this.points;
 		var l = points.length;
 
-		var point = ( l - ( this.closed ? 0 : 1 ) ) * t;
-		var intPoint = Math.floor( point );
-		var weight = point - intPoint;
+		var p = ( l - ( this.closed ? 0 : 1 ) ) * t;
+		var intPoint = Math.floor( p );
+		var weight = p - intPoint;
 
 		if ( this.closed ) {
 
@@ -42491,7 +42560,13 @@
 
 		}
 
-		return new Vector3( px.calc( weight ), py.calc( weight ), pz.calc( weight ) );
+		point.set(
+			px.calc( weight ),
+			py.calc( weight ),
+			pz.calc( weight )
+		);
+
+		return point;
 
 	};
 
@@ -42509,16 +42584,22 @@
 	CubicBezierCurve3.prototype = Object.create( Curve.prototype );
 	CubicBezierCurve3.prototype.constructor = CubicBezierCurve3;
 
-	CubicBezierCurve3.prototype.getPoint = function ( t ) {
+	CubicBezierCurve3.prototype.isCubicBezierCurve3 = true;
+
+	CubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {
+
+		var point = optionalTarget || new Vector3();
 
 		var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;
 
-		return new Vector3(
+		point.set(
 			CubicBezier( t, v0.x, v1.x, v2.x, v3.x ),
 			CubicBezier( t, v0.y, v1.y, v2.y, v3.y ),
 			CubicBezier( t, v0.z, v1.z, v2.z, v3.z )
 		);
 
+		return point;
+
 	};
 
 	function QuadraticBezierCurve3( v0, v1, v2 ) {
@@ -42534,16 +42615,22 @@
 	QuadraticBezierCurve3.prototype = Object.create( Curve.prototype );
 	QuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;
 
-	QuadraticBezierCurve3.prototype.getPoint = function ( t ) {
+	QuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;
+
+	QuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {
+
+		var point = optionalTarget || new Vector3();
 
 		var v0 = this.v0, v1 = this.v1, v2 = this.v2;
 
-		return new Vector3(
+		point.set(
 			QuadraticBezier( t, v0.x, v1.x, v2.x ),
 			QuadraticBezier( t, v0.y, v1.y, v2.y ),
 			QuadraticBezier( t, v0.z, v1.z, v2.z )
 		);
 
+		return point;
+
 	};
 
 	function LineCurve3( v1, v2 ) {
@@ -42558,21 +42645,32 @@
 	LineCurve3.prototype = Object.create( Curve.prototype );
 	LineCurve3.prototype.constructor = LineCurve3;
 
-	LineCurve3.prototype.getPoint = function ( t ) {
+	LineCurve3.prototype.isLineCurve3 = true;
+
+	LineCurve3.prototype.getPoint = function ( t, optionalTarget ) {
+
+		var point = optionalTarget || new Vector3();
 
 		if ( t === 1 ) {
 
-			return this.v2.clone();
+			point.copy( this.v2 );
+
+		} else {
+
+			point.copy( this.v2 ).sub( this.v1 );
+			point.multiplyScalar( t ).add( this.v1 );
 
 		}
 
-		var vector = new Vector3();
+		return point;
 
-		vector.subVectors( this.v2, this.v1 ); // diff
-		vector.multiplyScalar( t );
-		vector.add( this.v1 );
+	};
+
+	// Line curve is linear, so we can overwrite default getPointAt
 
-		return vector;
+	LineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {
+
+		return this.getPoint( u, optionalTarget );
 
 	};
 
@@ -42585,6 +42683,8 @@
 	ArcCurve.prototype = Object.create( EllipseCurve.prototype );
 	ArcCurve.prototype.constructor = ArcCurve;
 
+	ArcCurve.prototype.isArcCurve = true;
+
 	/**
 	 * @author alteredq / http://alteredqualia.com/
 	 */

File diff suppressed because it is too large
+ 332 - 332
build/three.min.js


+ 173 - 73
build/three.module.js

@@ -8356,56 +8356,58 @@ Object.assign( Box3.prototype, {
 		// Computes the world-axis-aligned bounding box of an object (including its children),
 		// accounting for both the object's, and children's, world transforms
 
+		var scope, i, l;
+
 		var v1 = new Vector3();
 
-		return function expandByObject( object ) {
+		function traverse( node ) {
 
-			var scope = this;
+			var geometry = node.geometry;
 
-			object.updateMatrixWorld( true );
+			if ( geometry !== undefined ) {
 
-			object.traverse( function ( node ) {
+				if ( geometry.isGeometry ) {
 
-				var i, l;
+					var vertices = geometry.vertices;
 
-				var geometry = node.geometry;
+					for ( i = 0, l = vertices.length; i < l; i ++ ) {
 
-				if ( geometry !== undefined ) {
+						v1.copy( vertices[ i ] );
+						v1.applyMatrix4( node.matrixWorld );
 
-					if ( geometry.isGeometry ) {
+						scope.expandByPoint( v1 );
 
-						var vertices = geometry.vertices;
+					}
 
-						for ( i = 0, l = vertices.length; i < l; i ++ ) {
+				} else if ( geometry.isBufferGeometry ) {
 
-							v1.copy( vertices[ i ] );
-							v1.applyMatrix4( node.matrixWorld );
+					var attribute = geometry.attributes.position;
 
-							scope.expandByPoint( v1 );
+					if ( attribute !== undefined ) {
 
-						}
+						for ( i = 0, l = attribute.count; i < l; i ++ ) {
 
-					} else if ( geometry.isBufferGeometry ) {
+							v1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld );
 
-						var attribute = geometry.attributes.position;
+							scope.expandByPoint( v1 );
 
-						if ( attribute !== undefined ) {
+						}
 
-							for ( i = 0, l = attribute.count; i < l; i ++ ) {
+					}
 
-								v1.fromBufferAttribute( attribute, i ).applyMatrix4( node.matrixWorld );
+				}
 
-								scope.expandByPoint( v1 );
+			}
 
-							}
+		}
 
-						}
+		return function expandByObject( object ) {
 
-					}
+			scope = this;
 
-				}
+			object.updateMatrixWorld( true );
 
-			} );
+			object.traverse( traverse );
 
 			return this;
 
@@ -10352,6 +10354,26 @@ Object.assign( Object3D.prototype, EventDispatcher.prototype, {
 
 	}(),
 
+	rotateOnWorldAxis: function () {
+		
+		// rotate object on axis in world space
+		// axis is assumed to be normalized
+		// method assumes no rotated parent
+
+		var q1 = new Quaternion();
+		
+		return function rotateOnWorldAxis( axis, angle ) {
+		
+			q1.setFromAxisAngle( axis, angle );
+		
+			this.quaternion.premultiply( q1 );
+		
+			return this;
+		
+		};
+		
+	}(),
+
 	rotateX: function () {
 
 		var v1 = new Vector3( 1, 0, 0 );
@@ -20546,7 +20568,7 @@ function WebVRManager( renderer ) {
 	var device = null;
 	var frameData = null;
 
-	if ( 'VRFrameData' in window ) {
+	if ( typeof window !== 'undefined' && 'VRFrameData' in window ) {
 
 		frameData = new window.VRFrameData();
 
@@ -20594,7 +20616,11 @@ function WebVRManager( renderer ) {
 
 	}
 
-	window.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false );
+	if ( typeof window !== 'undefined' ) {
+
+		window.addEventListener( 'vrdisplaypresentchange', onVRDisplayPresentChange, false );
+
+	}
 
 	//
 
@@ -26039,6 +26065,7 @@ function TubeBufferGeometry( path, tubularSegments, radius, radialSegments, clos
 	var vertex = new Vector3();
 	var normal = new Vector3();
 	var uv = new Vector2();
+	var P = new Vector3();
 
 	var i, j;
 
@@ -26092,7 +26119,7 @@ function TubeBufferGeometry( path, tubularSegments, radius, radialSegments, clos
 
 		// we use getPointAt to sample evenly distributed points from the given path
 
-		var P = path.getPointAt( i / tubularSegments );
+		P = path.getPointAt( i / tubularSegments, P );
 
 		// retrieve corresponding normal and binormal
 
@@ -34399,9 +34426,13 @@ Object.assign( ObjectLoader.prototype, {
 						break;
 
 					case 'DodecahedronGeometry':
+					case 'DodecahedronBufferGeometry':
 					case 'IcosahedronGeometry':
+					case 'IcosahedronBufferGeometry':
 					case 'OctahedronGeometry':
+					case 'OctahedronBufferGeometry':
 					case 'TetrahedronGeometry':
+					case 'TetrahedronBufferGeometry':
 
 						geometry = new Geometries[ data.type ](
 							data.radius,
@@ -34463,6 +34494,18 @@ Object.assign( ObjectLoader.prototype, {
 
 						break;
 
+					case 'PolyhedronGeometry':
+					case 'PolyhedronBufferGeometry':
+
+						geometry = new Geometries[ data.type ](
+							data.vertices,
+							data.indices,
+							data.radius,
+							data.details
+						);
+
+						break;
+
 					case 'BufferGeometry':
 
 						geometry = bufferGeometryLoader.parse( data );
@@ -35061,8 +35104,8 @@ function CubicBezier( t, p0, p1, p2, p3 ) {
  * Extensible curve object
  *
  * Some common of curve methods:
- * .getPoint(t), getTangent(t)
- * .getPointAt(u), getTangentAt(u)
+ * .getPoint( t, optionalTarget ), .getTangent( t )
+ * .getPointAt( u, optionalTarget ), .getTangentAt( u )
  * .getPoints(), .getSpacedPoints()
  * .getLength()
  * .updateArcLengths()
@@ -35102,7 +35145,7 @@ Object.assign( Curve.prototype, {
 	// Virtual base class method to overwrite and implement in subclasses
 	//	- t [0 .. 1]
 
-	getPoint: function () {
+	getPoint: function ( /* t, optionalTarget */ ) {
 
 		console.warn( 'THREE.Curve: .getPoint() not implemented.' );
 		return null;
@@ -35112,10 +35155,10 @@ Object.assign( Curve.prototype, {
 	// Get point at relative position in curve according to arc length
 	// - u [0 .. 1]
 
-	getPointAt: function ( u ) {
+	getPointAt: function ( u, optionalTarget ) {
 
 		var t = this.getUtoTmapping( u );
-		return this.getPoint( t );
+		return this.getPoint( t, optionalTarget );
 
 	},
 
@@ -35448,16 +35491,20 @@ LineCurve.prototype.constructor = LineCurve;
 
 LineCurve.prototype.isLineCurve = true;
 
-LineCurve.prototype.getPoint = function ( t ) {
+LineCurve.prototype.getPoint = function ( t, optionalTarget ) {
+
+	var point = optionalTarget || new Vector2();
 
 	if ( t === 1 ) {
 
-		return this.v2.clone();
+		point.copy( this.v2 );
 
-	}
+	} else {
+
+		point.copy( this.v2 ).sub( this.v1 );
+		point.multiplyScalar( t ).add( this.v1 );
 
-	var point = this.v2.clone().sub( this.v1 );
-	point.multiplyScalar( t ).add( this.v1 );
+	}
 
 	return point;
 
@@ -35465,9 +35512,9 @@ LineCurve.prototype.getPoint = function ( t ) {
 
 // Line curve is linear, so we can overwrite default getPointAt
 
-LineCurve.prototype.getPointAt = function ( u ) {
+LineCurve.prototype.getPointAt = function ( u, optionalTarget ) {
 
-	return this.getPoint( u );
+	return this.getPoint( u, optionalTarget );
 
 };
 
@@ -35739,7 +35786,9 @@ EllipseCurve.prototype.constructor = EllipseCurve;
 
 EllipseCurve.prototype.isEllipseCurve = true;
 
-EllipseCurve.prototype.getPoint = function ( t ) {
+EllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {
+
+	var point = optionalTarget || new Vector2();
 
 	var twoPi = Math.PI * 2;
 	var deltaAngle = this.aEndAngle - this.aStartAngle;
@@ -35795,7 +35844,7 @@ EllipseCurve.prototype.getPoint = function ( t ) {
 
 	}
 
-	return new Vector2( x, y );
+	return point.set( x, y );
 
 };
 
@@ -35812,24 +35861,28 @@ SplineCurve.prototype.constructor = SplineCurve;
 
 SplineCurve.prototype.isSplineCurve = true;
 
-SplineCurve.prototype.getPoint = function ( t ) {
+SplineCurve.prototype.getPoint = function ( t, optionalTarget ) {
+
+	var point = optionalTarget || new Vector2();
 
 	var points = this.points;
-	var point = ( points.length - 1 ) * t;
+	var p = ( points.length - 1 ) * t;
 
-	var intPoint = Math.floor( point );
-	var weight = point - intPoint;
+	var intPoint = Math.floor( p );
+	var weight = p - intPoint;
 
-	var point0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];
-	var point1 = points[ intPoint ];
-	var point2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];
-	var point3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];
+	var p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];
+	var p1 = points[ intPoint ];
+	var p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];
+	var p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];
 
-	return new Vector2(
-		CatmullRom( weight, point0.x, point1.x, point2.x, point3.x ),
-		CatmullRom( weight, point0.y, point1.y, point2.y, point3.y )
+	point.set(
+		CatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),
+		CatmullRom( weight, p0.y, p1.y, p2.y, p3.y )
 	);
 
+	return point;
+
 };
 
 function CubicBezierCurve( v0, v1, v2, v3 ) {
@@ -35846,15 +35899,21 @@ function CubicBezierCurve( v0, v1, v2, v3 ) {
 CubicBezierCurve.prototype = Object.create( Curve.prototype );
 CubicBezierCurve.prototype.constructor = CubicBezierCurve;
 
-CubicBezierCurve.prototype.getPoint = function ( t ) {
+CubicBezierCurve.prototype.isCubicBezierCurve = true;
+
+CubicBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {
+
+	var point = optionalTarget || new Vector2();
 
 	var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;
 
-	return new Vector2(
+	point.set(
 		CubicBezier( t, v0.x, v1.x, v2.x, v3.x ),
 		CubicBezier( t, v0.y, v1.y, v2.y, v3.y )
 	);
 
+	return point;
+
 };
 
 function QuadraticBezierCurve( v0, v1, v2 ) {
@@ -35870,15 +35929,21 @@ function QuadraticBezierCurve( v0, v1, v2 ) {
 QuadraticBezierCurve.prototype = Object.create( Curve.prototype );
 QuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;
 
-QuadraticBezierCurve.prototype.getPoint = function ( t ) {
+QuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;
+
+QuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget ) {
+
+	var point = optionalTarget || new Vector2();
 
 	var v0 = this.v0, v1 = this.v1, v2 = this.v2;
 
-	return new Vector2(
+	point.set(
 		QuadraticBezier( t, v0.x, v1.x, v2.x ),
 		QuadraticBezier( t, v0.y, v1.y, v2.y )
 	);
 
+	return point;
+
 };
 
 var PathPrototype = Object.assign( Object.create( CurvePath.prototype ), {
@@ -42410,14 +42475,18 @@ function CatmullRomCurve3( points ) {
 CatmullRomCurve3.prototype = Object.create( Curve.prototype );
 CatmullRomCurve3.prototype.constructor = CatmullRomCurve3;
 
-CatmullRomCurve3.prototype.getPoint = function ( t ) {
+CatmullRomCurve3.prototype.isCatmullRomCurve3 = true;
+
+CatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget ) {
+
+	var point = optionalTarget || new Vector3();
 
 	var points = this.points;
 	var l = points.length;
 
-	var point = ( l - ( this.closed ? 0 : 1 ) ) * t;
-	var intPoint = Math.floor( point );
-	var weight = point - intPoint;
+	var p = ( l - ( this.closed ? 0 : 1 ) ) * t;
+	var intPoint = Math.floor( p );
+	var weight = p - intPoint;
 
 	if ( this.closed ) {
 
@@ -42485,7 +42554,13 @@ CatmullRomCurve3.prototype.getPoint = function ( t ) {
 
 	}
 
-	return new Vector3( px.calc( weight ), py.calc( weight ), pz.calc( weight ) );
+	point.set(
+		px.calc( weight ),
+		py.calc( weight ),
+		pz.calc( weight )
+	);
+
+	return point;
 
 };
 
@@ -42503,16 +42578,22 @@ function CubicBezierCurve3( v0, v1, v2, v3 ) {
 CubicBezierCurve3.prototype = Object.create( Curve.prototype );
 CubicBezierCurve3.prototype.constructor = CubicBezierCurve3;
 
-CubicBezierCurve3.prototype.getPoint = function ( t ) {
+CubicBezierCurve3.prototype.isCubicBezierCurve3 = true;
+
+CubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {
+
+	var point = optionalTarget || new Vector3();
 
 	var v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;
 
-	return new Vector3(
+	point.set(
 		CubicBezier( t, v0.x, v1.x, v2.x, v3.x ),
 		CubicBezier( t, v0.y, v1.y, v2.y, v3.y ),
 		CubicBezier( t, v0.z, v1.z, v2.z, v3.z )
 	);
 
+	return point;
+
 };
 
 function QuadraticBezierCurve3( v0, v1, v2 ) {
@@ -42528,16 +42609,22 @@ function QuadraticBezierCurve3( v0, v1, v2 ) {
 QuadraticBezierCurve3.prototype = Object.create( Curve.prototype );
 QuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;
 
-QuadraticBezierCurve3.prototype.getPoint = function ( t ) {
+QuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;
+
+QuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget ) {
+
+	var point = optionalTarget || new Vector3();
 
 	var v0 = this.v0, v1 = this.v1, v2 = this.v2;
 
-	return new Vector3(
+	point.set(
 		QuadraticBezier( t, v0.x, v1.x, v2.x ),
 		QuadraticBezier( t, v0.y, v1.y, v2.y ),
 		QuadraticBezier( t, v0.z, v1.z, v2.z )
 	);
 
+	return point;
+
 };
 
 function LineCurve3( v1, v2 ) {
@@ -42552,21 +42639,32 @@ function LineCurve3( v1, v2 ) {
 LineCurve3.prototype = Object.create( Curve.prototype );
 LineCurve3.prototype.constructor = LineCurve3;
 
-LineCurve3.prototype.getPoint = function ( t ) {
+LineCurve3.prototype.isLineCurve3 = true;
+
+LineCurve3.prototype.getPoint = function ( t, optionalTarget ) {
+
+	var point = optionalTarget || new Vector3();
 
 	if ( t === 1 ) {
 
-		return this.v2.clone();
+		point.copy( this.v2 );
+
+	} else {
+
+		point.copy( this.v2 ).sub( this.v1 );
+		point.multiplyScalar( t ).add( this.v1 );
 
 	}
 
-	var vector = new Vector3();
+	return point;
 
-	vector.subVectors( this.v2, this.v1 ); // diff
-	vector.multiplyScalar( t );
-	vector.add( this.v1 );
+};
+
+// Line curve is linear, so we can overwrite default getPointAt
 
-	return vector;
+LineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {
+
+	return this.getPoint( u, optionalTarget );
 
 };
 
@@ -42579,6 +42677,8 @@ function ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {
 ArcCurve.prototype = Object.create( EllipseCurve.prototype );
 ArcCurve.prototype.constructor = ArcCurve;
 
+ArcCurve.prototype.isArcCurve = true;
+
 /**
  * @author alteredq / http://alteredqualia.com/
  */

Some files were not shown because too many files changed in this diff