Bläddra i källkod

ClosedSplineCurve3: use CatmullRomCurve3 internally.

- Added depreciation message
- Some code tidy
Joshua Koo 9 år sedan
förälder
incheckning
9f44a80d2d

+ 8 - 32
src/extras/curves/ClosedSplineCurve3.js

@@ -3,37 +3,13 @@
  **************************************************************/
 
 
-THREE.ClosedSplineCurve3 = THREE.Curve.create(
+THREE.ClosedSplineCurve3 = function ( points ) {
 
-	function ( points /* array of Vector3 */ ) {
+	console.warn( 'THREE.ClosedSplineCurve3 may be depreciated. Please consider THREE.CatmullRomCurve3' );
+	THREE.CatmullRomCurve3.call( this, points );
+	this.type = 'catmullrom';
+	this.closed = true;
+	
+};
 
-		this.points = ( points == undefined ) ? [] : points;
-
-	},
-
-	function ( t ) {
-
-		var points = this.points;
-		var point = ( points.length - 0 ) * t; // This needs to be from 0-length +1
-
-		var intPoint = Math.floor( point );
-		var weight = point - intPoint;
-
-		intPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / points.length ) + 1 ) * points.length;
-
-		var point0 = points[ ( intPoint - 1 ) % points.length ];
-		var point1 = points[ ( intPoint     ) % points.length ];
-		var point2 = points[ ( intPoint + 1 ) % points.length ];
-		var point3 = points[ ( intPoint + 2 ) % points.length ];
-
-		var interpolate = THREE.CurveUtils.interpolate;
-
-		return new THREE.Vector3(
-			interpolate( point0.x, point1.x, point2.x, point3.x, weight ),
-			interpolate( point0.y, point1.y, point2.y, point3.y, weight ),
-			interpolate( point0.z, point1.z, point2.z, point3.z, weight )
-		);
-
-	}
-
-);
+THREE.ClosedSplineCurve3.prototype = Object.create( THREE.CatmullRomCurve3.prototype );

+ 69 - 69
test/unit/extras/curves/CatmullRomCurve3.js

@@ -5,11 +5,11 @@
 module( "CatmullRomCurve3" );
 
 var positions = [
-	new THREE.Vector3( -60, -100,  60 ),
-	new THREE.Vector3( -60,   20,  60 ),
-	new THREE.Vector3( -60,  120,  60 ),
-	new THREE.Vector3(  60,   20, -60 ),
-	new THREE.Vector3(  60, -100, -60 )
+	new THREE.Vector3( - 60, - 100,  60 ),
+	new THREE.Vector3( - 60,   20,  60 ),
+	new THREE.Vector3( - 60,  120,  60 ),
+	new THREE.Vector3(  60,   20, - 60 ),
+	new THREE.Vector3(  60, - 100, - 60 )
 ];
 
 test( "catmullrom check", function() {
@@ -19,27 +19,27 @@ test( "catmullrom check", function() {
 
 	var catmullPoints = [
 
-		new THREE.Vector3(-60,-100,60),
-		new THREE.Vector3(-60,-51.04,60),
-		new THREE.Vector3(-60,-2.7199999999999998,60),
-		new THREE.Vector3(-61.92,44.48,61.92),
-		new THREE.Vector3(-68.64,95.36000000000001,68.64),
-		new THREE.Vector3(-60,120,60),
-		new THREE.Vector3(-14.880000000000017,95.36000000000001,14.880000000000017),
-		new THREE.Vector3(41.75999999999997,44.48000000000003,-41.75999999999997),
-		new THREE.Vector3(67.68,-4.640000000000025,-67.68),
-		new THREE.Vector3(65.75999999999999,-59.68000000000002,-65.75999999999999),
-		new THREE.Vector3(60,-100,-60)
+		new THREE.Vector3( - 60, - 100, 60 ),
+		new THREE.Vector3( - 60, - 51.04, 60 ),
+		new THREE.Vector3( - 60, - 2.7199999999999998, 60 ),
+		new THREE.Vector3( - 61.92, 44.48, 61.92 ),
+		new THREE.Vector3( - 68.64, 95.36000000000001, 68.64 ),
+		new THREE.Vector3( - 60, 120, 60 ),
+		new THREE.Vector3( - 14.880000000000017, 95.36000000000001, 14.880000000000017 ),
+		new THREE.Vector3( 41.75999999999997, 44.48000000000003, - 41.75999999999997 ),
+		new THREE.Vector3( 67.68, - 4.640000000000025, - 67.68 ),
+		new THREE.Vector3( 65.75999999999999, - 59.68000000000002, - 65.75999999999999 ),
+		new THREE.Vector3( 60, - 100, - 60 )
 
 	];
 
-	var getPoints = curve.getPoints(10);
-	var error = vectorsAreEqual( getPoints , catmullPoints );
-	ok( getPoints.length == 11, 'getPoints should be equal.');
+	var getPoints = curve.getPoints( 10 );
+	var error = vectorsAreEqual( getPoints, catmullPoints );
+	ok( getPoints.length == 11, 'getPoints should be equal.' );
 	var desc = error ? ' ' + error : '';
-	ok( !error, 'Lists of Vectors3 should be equal.' + desc );
+	ok( ! error, 'Lists of Vectors3 should be equal.' + desc );
 
-});
+} );
 
 test( "chordal basic check", function() {
 
@@ -48,26 +48,26 @@ test( "chordal basic check", function() {
 	curve.type = 'chordal';
 
 	var chordalPoints = [
-		new THREE.Vector3(-60,-100,60),
-		new THREE.Vector3(-60,-52,60),
-		new THREE.Vector3(-60,-4,60),
-		new THREE.Vector3(-60.656435889910924,41.62455386421379,60.656435889910924),
-		new THREE.Vector3(-62.95396150459915,87.31049238896205,62.95396150459915),
-		new THREE.Vector3(-60,120,60),
-		new THREE.Vector3(-16.302568199486444,114.1500463116312,16.302568199486444),
-		new THREE.Vector3(42.998098664956586,54.017050116427455,-42.998098664956586),
-		new THREE.Vector3(63.542500175682434,-3.0571533975463856,-63.542500175682434),
-		new THREE.Vector3(62.65687513176183,-58.49286504815978,-62.65687513176183),
-		new THREE.Vector3(60.00000000000001,-100,-60.00000000000001)
+		new THREE.Vector3( - 60, - 100, 60 ),
+		new THREE.Vector3( - 60, - 52, 60 ),
+		new THREE.Vector3( - 60, - 4, 60 ),
+		new THREE.Vector3( - 60.656435889910924, 41.62455386421379, 60.656435889910924 ),
+		new THREE.Vector3( - 62.95396150459915, 87.31049238896205, 62.95396150459915 ),
+		new THREE.Vector3( - 60, 120, 60 ),
+		new THREE.Vector3( - 16.302568199486444, 114.1500463116312, 16.302568199486444 ),
+		new THREE.Vector3( 42.998098664956586, 54.017050116427455, - 42.998098664956586 ),
+		new THREE.Vector3( 63.542500175682434, - 3.0571533975463856, - 63.542500175682434 ),
+		new THREE.Vector3( 62.65687513176183, - 58.49286504815978, - 62.65687513176183 ),
+		new THREE.Vector3( 60.00000000000001, - 100, - 60.00000000000001 )
 	];
 
-	var getPoints = curve.getPoints(10);
-	var error = vectorsAreEqual( getPoints , chordalPoints );
-	ok( getPoints.length == 11, 'getPoints should be equal.');
+	var getPoints = curve.getPoints( 10 );
+	var error = vectorsAreEqual( getPoints, chordalPoints );
+	ok( getPoints.length == 11, 'getPoints should be equal.' );
 	var desc = error ? ' ' + error : '';
-	ok( !error, 'Lists of Vectors3 should be equal.' + desc );
+	ok( ! error, 'Lists of Vectors3 should be equal.' + desc );
 
-});
+} );
 
 test( "centripetal basic check", function() {
 
@@ -75,26 +75,26 @@ test( "centripetal basic check", function() {
 	curve.type = 'centripetal';
 
 	var centripetalPoints = [
-		new THREE.Vector3(-60,-100,60),
-		new THREE.Vector3(-60,-51.47527724919028,60),
-		new THREE.Vector3(-60,-3.300369665587032,60),
-		new THREE.Vector3(-61.13836565863938,42.86306307781241,61.13836565863938),
-		new THREE.Vector3(-65.1226454638772,90.69743905511538,65.1226454638772),
-		new THREE.Vector3(-60,120,60),
-		new THREE.Vector3(-15.620412575504497,103.10790870179872,15.620412575504497),
-		new THREE.Vector3(42.384384731047874,48.35477686933143,-42.384384731047874),
-		new THREE.Vector3(65.25545512241153,-3.5662509660683424,-65.25545512241153),
-		new THREE.Vector3(63.94159134180865,-58.87468822455125,-63.94159134180865),
-		new THREE.Vector3(59.99999999999999,-100,-59.99999999999999),
+		new THREE.Vector3( - 60, - 100, 60 ),
+		new THREE.Vector3( - 60, - 51.47527724919028, 60 ),
+		new THREE.Vector3( - 60, - 3.300369665587032, 60 ),
+		new THREE.Vector3( - 61.13836565863938, 42.86306307781241, 61.13836565863938 ),
+		new THREE.Vector3( - 65.1226454638772, 90.69743905511538, 65.1226454638772 ),
+		new THREE.Vector3( - 60, 120, 60 ),
+		new THREE.Vector3( - 15.620412575504497, 103.10790870179872, 15.620412575504497 ),
+		new THREE.Vector3( 42.384384731047874, 48.35477686933143, - 42.384384731047874 ),
+		new THREE.Vector3( 65.25545512241153, - 3.5662509660683424, - 65.25545512241153 ),
+		new THREE.Vector3( 63.94159134180865, - 58.87468822455125, - 63.94159134180865 ),
+		new THREE.Vector3( 59.99999999999999, - 100, - 59.99999999999999 ),
 	];
 
-	var getPoints = curve.getPoints(10);
-	var error = vectorsAreEqual( getPoints , centripetalPoints );
-	ok( getPoints.length == 11, 'getPoints should be equal.');
+	var getPoints = curve.getPoints( 10 );
+	var error = vectorsAreEqual( getPoints, centripetalPoints );
+	ok( getPoints.length == 11, 'getPoints should be equal.' );
 	var desc = error ? ' ' + error : '';
-	ok( !error, 'Lists of Vectors3 should be equal.' + desc );
+	ok( ! error, 'Lists of Vectors3 should be equal.' + desc );
 
-});
+} );
 
 test( "closed catmullrom basic check", function() {
 
@@ -103,23 +103,23 @@ test( "closed catmullrom basic check", function() {
 	curve.closed = true;
 
 	var closedSplinePoints = [
-		new THREE.Vector3(-60,-100,60),
-		new THREE.Vector3(-67.5,-46.25,67.5),
-		new THREE.Vector3(-60,20,60),
-		new THREE.Vector3(-67.5,83.75,67.5),
-		new THREE.Vector3(-60,120,60),
-		new THREE.Vector3(0,83.75,0),
-		new THREE.Vector3(60,20,-60),
-		new THREE.Vector3(75,-46.25,-75),
-		new THREE.Vector3(60,-100,-60),
-		new THREE.Vector3(0,-115,0),
-		new THREE.Vector3(-60,-100,60),
+		new THREE.Vector3( - 60, - 100, 60 ),
+		new THREE.Vector3( - 67.5, - 46.25, 67.5 ),
+		new THREE.Vector3( - 60, 20, 60 ),
+		new THREE.Vector3( - 67.5, 83.75, 67.5 ),
+		new THREE.Vector3( - 60, 120, 60 ),
+		new THREE.Vector3( 0, 83.75, 0 ),
+		new THREE.Vector3( 60, 20, - 60 ),
+		new THREE.Vector3( 75, - 46.25, - 75 ),
+		new THREE.Vector3( 60, - 100, - 60 ),
+		new THREE.Vector3( 0, - 115, 0 ),
+		new THREE.Vector3( - 60, - 100, 60 ),
 	];
 
-	var getPoints = curve.getPoints(10);
-	var error = vectorsAreEqual( getPoints , closedSplinePoints );
-	ok( getPoints.length == 11, 'getPoints should be equal.');
+	var getPoints = curve.getPoints( 10 );
+	var error = vectorsAreEqual( getPoints, closedSplinePoints );
+	ok( getPoints.length == 11, 'getPoints should be equal.' );
 	var desc = error ? ' ' + error : '';
-	ok( !error, 'Lists of Vectors3 should be equal.' + desc );
+	ok( ! error, 'Lists of Vectors3 should be equal.' + desc );
 
-});
+} );

+ 1 - 1
test/unit/unittests_sources.html

@@ -35,8 +35,8 @@
 
   <script src="../../src/extras/core/Curve.js"></script>
   <script src="../../src/extras/CurveUtils.js"></script>
-  <script src="../../src/extras/curves/ClosedSplineCurve3.js"></script>
   <script src="../../src/extras/curves/CatmullRomCurve3.js"></script>
+  <script src="../../src/extras/curves/ClosedSplineCurve3.js"></script>
 
   <!-- add class-based unit tests below -->