Skip to content

Commit 9f44a80

Browse files
committed
ClosedSplineCurve3: use CatmullRomCurve3 internally.
- Added depreciation message - Some code tidy
1 parent 96de7b7 commit 9f44a80

3 files changed

Lines changed: 78 additions & 102 deletions

File tree

src/extras/curves/ClosedSplineCurve3.js

Lines changed: 8 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,37 +3,13 @@
33
**************************************************************/
44

55

6-
THREE.ClosedSplineCurve3 = THREE.Curve.create(
6+
THREE.ClosedSplineCurve3 = function ( points ) {
77

8-
function ( points /* array of Vector3 */ ) {
8+
console.warn( 'THREE.ClosedSplineCurve3 may be depreciated. Please consider THREE.CatmullRomCurve3' );
9+
THREE.CatmullRomCurve3.call( this, points );
10+
this.type = 'catmullrom';
11+
this.closed = true;
12+
13+
};
914

10-
this.points = ( points == undefined ) ? [] : points;
11-
12-
},
13-
14-
function ( t ) {
15-
16-
var points = this.points;
17-
var point = ( points.length - 0 ) * t; // This needs to be from 0-length +1
18-
19-
var intPoint = Math.floor( point );
20-
var weight = point - intPoint;
21-
22-
intPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / points.length ) + 1 ) * points.length;
23-
24-
var point0 = points[ ( intPoint - 1 ) % points.length ];
25-
var point1 = points[ ( intPoint ) % points.length ];
26-
var point2 = points[ ( intPoint + 1 ) % points.length ];
27-
var point3 = points[ ( intPoint + 2 ) % points.length ];
28-
29-
var interpolate = THREE.CurveUtils.interpolate;
30-
31-
return new THREE.Vector3(
32-
interpolate( point0.x, point1.x, point2.x, point3.x, weight ),
33-
interpolate( point0.y, point1.y, point2.y, point3.y, weight ),
34-
interpolate( point0.z, point1.z, point2.z, point3.z, weight )
35-
);
36-
37-
}
38-
39-
);
15+
THREE.ClosedSplineCurve3.prototype = Object.create( THREE.CatmullRomCurve3.prototype );

test/unit/extras/curves/CatmullRomCurve3.js

Lines changed: 69 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
module( "CatmullRomCurve3" );
66

77
var positions = [
8-
new THREE.Vector3( -60, -100, 60 ),
9-
new THREE.Vector3( -60, 20, 60 ),
10-
new THREE.Vector3( -60, 120, 60 ),
11-
new THREE.Vector3( 60, 20, -60 ),
12-
new THREE.Vector3( 60, -100, -60 )
8+
new THREE.Vector3( - 60, - 100, 60 ),
9+
new THREE.Vector3( - 60, 20, 60 ),
10+
new THREE.Vector3( - 60, 120, 60 ),
11+
new THREE.Vector3( 60, 20, - 60 ),
12+
new THREE.Vector3( 60, - 100, - 60 )
1313
];
1414

1515
test( "catmullrom check", function() {
@@ -19,27 +19,27 @@ test( "catmullrom check", function() {
1919

2020
var catmullPoints = [
2121

22-
new THREE.Vector3(-60,-100,60),
23-
new THREE.Vector3(-60,-51.04,60),
24-
new THREE.Vector3(-60,-2.7199999999999998,60),
25-
new THREE.Vector3(-61.92,44.48,61.92),
26-
new THREE.Vector3(-68.64,95.36000000000001,68.64),
27-
new THREE.Vector3(-60,120,60),
28-
new THREE.Vector3(-14.880000000000017,95.36000000000001,14.880000000000017),
29-
new THREE.Vector3(41.75999999999997,44.48000000000003,-41.75999999999997),
30-
new THREE.Vector3(67.68,-4.640000000000025,-67.68),
31-
new THREE.Vector3(65.75999999999999,-59.68000000000002,-65.75999999999999),
32-
new THREE.Vector3(60,-100,-60)
22+
new THREE.Vector3( - 60, - 100, 60 ),
23+
new THREE.Vector3( - 60, - 51.04, 60 ),
24+
new THREE.Vector3( - 60, - 2.7199999999999998, 60 ),
25+
new THREE.Vector3( - 61.92, 44.48, 61.92 ),
26+
new THREE.Vector3( - 68.64, 95.36000000000001, 68.64 ),
27+
new THREE.Vector3( - 60, 120, 60 ),
28+
new THREE.Vector3( - 14.880000000000017, 95.36000000000001, 14.880000000000017 ),
29+
new THREE.Vector3( 41.75999999999997, 44.48000000000003, - 41.75999999999997 ),
30+
new THREE.Vector3( 67.68, - 4.640000000000025, - 67.68 ),
31+
new THREE.Vector3( 65.75999999999999, - 59.68000000000002, - 65.75999999999999 ),
32+
new THREE.Vector3( 60, - 100, - 60 )
3333

3434
];
3535

36-
var getPoints = curve.getPoints(10);
37-
var error = vectorsAreEqual( getPoints , catmullPoints );
38-
ok( getPoints.length == 11, 'getPoints should be equal.');
36+
var getPoints = curve.getPoints( 10 );
37+
var error = vectorsAreEqual( getPoints, catmullPoints );
38+
ok( getPoints.length == 11, 'getPoints should be equal.' );
3939
var desc = error ? ' ' + error : '';
40-
ok( !error, 'Lists of Vectors3 should be equal.' + desc );
40+
ok( ! error, 'Lists of Vectors3 should be equal.' + desc );
4141

42-
});
42+
} );
4343

4444
test( "chordal basic check", function() {
4545

@@ -48,53 +48,53 @@ test( "chordal basic check", function() {
4848
curve.type = 'chordal';
4949

5050
var chordalPoints = [
51-
new THREE.Vector3(-60,-100,60),
52-
new THREE.Vector3(-60,-52,60),
53-
new THREE.Vector3(-60,-4,60),
54-
new THREE.Vector3(-60.656435889910924,41.62455386421379,60.656435889910924),
55-
new THREE.Vector3(-62.95396150459915,87.31049238896205,62.95396150459915),
56-
new THREE.Vector3(-60,120,60),
57-
new THREE.Vector3(-16.302568199486444,114.1500463116312,16.302568199486444),
58-
new THREE.Vector3(42.998098664956586,54.017050116427455,-42.998098664956586),
59-
new THREE.Vector3(63.542500175682434,-3.0571533975463856,-63.542500175682434),
60-
new THREE.Vector3(62.65687513176183,-58.49286504815978,-62.65687513176183),
61-
new THREE.Vector3(60.00000000000001,-100,-60.00000000000001)
51+
new THREE.Vector3( - 60, - 100, 60 ),
52+
new THREE.Vector3( - 60, - 52, 60 ),
53+
new THREE.Vector3( - 60, - 4, 60 ),
54+
new THREE.Vector3( - 60.656435889910924, 41.62455386421379, 60.656435889910924 ),
55+
new THREE.Vector3( - 62.95396150459915, 87.31049238896205, 62.95396150459915 ),
56+
new THREE.Vector3( - 60, 120, 60 ),
57+
new THREE.Vector3( - 16.302568199486444, 114.1500463116312, 16.302568199486444 ),
58+
new THREE.Vector3( 42.998098664956586, 54.017050116427455, - 42.998098664956586 ),
59+
new THREE.Vector3( 63.542500175682434, - 3.0571533975463856, - 63.542500175682434 ),
60+
new THREE.Vector3( 62.65687513176183, - 58.49286504815978, - 62.65687513176183 ),
61+
new THREE.Vector3( 60.00000000000001, - 100, - 60.00000000000001 )
6262
];
6363

64-
var getPoints = curve.getPoints(10);
65-
var error = vectorsAreEqual( getPoints , chordalPoints );
66-
ok( getPoints.length == 11, 'getPoints should be equal.');
64+
var getPoints = curve.getPoints( 10 );
65+
var error = vectorsAreEqual( getPoints, chordalPoints );
66+
ok( getPoints.length == 11, 'getPoints should be equal.' );
6767
var desc = error ? ' ' + error : '';
68-
ok( !error, 'Lists of Vectors3 should be equal.' + desc );
68+
ok( ! error, 'Lists of Vectors3 should be equal.' + desc );
6969

70-
});
70+
} );
7171

7272
test( "centripetal basic check", function() {
7373

7474
var curve = new THREE.CatmullRomCurve3( positions );
7575
curve.type = 'centripetal';
7676

7777
var centripetalPoints = [
78-
new THREE.Vector3(-60,-100,60),
79-
new THREE.Vector3(-60,-51.47527724919028,60),
80-
new THREE.Vector3(-60,-3.300369665587032,60),
81-
new THREE.Vector3(-61.13836565863938,42.86306307781241,61.13836565863938),
82-
new THREE.Vector3(-65.1226454638772,90.69743905511538,65.1226454638772),
83-
new THREE.Vector3(-60,120,60),
84-
new THREE.Vector3(-15.620412575504497,103.10790870179872,15.620412575504497),
85-
new THREE.Vector3(42.384384731047874,48.35477686933143,-42.384384731047874),
86-
new THREE.Vector3(65.25545512241153,-3.5662509660683424,-65.25545512241153),
87-
new THREE.Vector3(63.94159134180865,-58.87468822455125,-63.94159134180865),
88-
new THREE.Vector3(59.99999999999999,-100,-59.99999999999999),
78+
new THREE.Vector3( - 60, - 100, 60 ),
79+
new THREE.Vector3( - 60, - 51.47527724919028, 60 ),
80+
new THREE.Vector3( - 60, - 3.300369665587032, 60 ),
81+
new THREE.Vector3( - 61.13836565863938, 42.86306307781241, 61.13836565863938 ),
82+
new THREE.Vector3( - 65.1226454638772, 90.69743905511538, 65.1226454638772 ),
83+
new THREE.Vector3( - 60, 120, 60 ),
84+
new THREE.Vector3( - 15.620412575504497, 103.10790870179872, 15.620412575504497 ),
85+
new THREE.Vector3( 42.384384731047874, 48.35477686933143, - 42.384384731047874 ),
86+
new THREE.Vector3( 65.25545512241153, - 3.5662509660683424, - 65.25545512241153 ),
87+
new THREE.Vector3( 63.94159134180865, - 58.87468822455125, - 63.94159134180865 ),
88+
new THREE.Vector3( 59.99999999999999, - 100, - 59.99999999999999 ),
8989
];
9090

91-
var getPoints = curve.getPoints(10);
92-
var error = vectorsAreEqual( getPoints , centripetalPoints );
93-
ok( getPoints.length == 11, 'getPoints should be equal.');
91+
var getPoints = curve.getPoints( 10 );
92+
var error = vectorsAreEqual( getPoints, centripetalPoints );
93+
ok( getPoints.length == 11, 'getPoints should be equal.' );
9494
var desc = error ? ' ' + error : '';
95-
ok( !error, 'Lists of Vectors3 should be equal.' + desc );
95+
ok( ! error, 'Lists of Vectors3 should be equal.' + desc );
9696

97-
});
97+
} );
9898

9999
test( "closed catmullrom basic check", function() {
100100

@@ -103,23 +103,23 @@ test( "closed catmullrom basic check", function() {
103103
curve.closed = true;
104104

105105
var closedSplinePoints = [
106-
new THREE.Vector3(-60,-100,60),
107-
new THREE.Vector3(-67.5,-46.25,67.5),
108-
new THREE.Vector3(-60,20,60),
109-
new THREE.Vector3(-67.5,83.75,67.5),
110-
new THREE.Vector3(-60,120,60),
111-
new THREE.Vector3(0,83.75,0),
112-
new THREE.Vector3(60,20,-60),
113-
new THREE.Vector3(75,-46.25,-75),
114-
new THREE.Vector3(60,-100,-60),
115-
new THREE.Vector3(0,-115,0),
116-
new THREE.Vector3(-60,-100,60),
106+
new THREE.Vector3( - 60, - 100, 60 ),
107+
new THREE.Vector3( - 67.5, - 46.25, 67.5 ),
108+
new THREE.Vector3( - 60, 20, 60 ),
109+
new THREE.Vector3( - 67.5, 83.75, 67.5 ),
110+
new THREE.Vector3( - 60, 120, 60 ),
111+
new THREE.Vector3( 0, 83.75, 0 ),
112+
new THREE.Vector3( 60, 20, - 60 ),
113+
new THREE.Vector3( 75, - 46.25, - 75 ),
114+
new THREE.Vector3( 60, - 100, - 60 ),
115+
new THREE.Vector3( 0, - 115, 0 ),
116+
new THREE.Vector3( - 60, - 100, 60 ),
117117
];
118118

119-
var getPoints = curve.getPoints(10);
120-
var error = vectorsAreEqual( getPoints , closedSplinePoints );
121-
ok( getPoints.length == 11, 'getPoints should be equal.');
119+
var getPoints = curve.getPoints( 10 );
120+
var error = vectorsAreEqual( getPoints, closedSplinePoints );
121+
ok( getPoints.length == 11, 'getPoints should be equal.' );
122122
var desc = error ? ' ' + error : '';
123-
ok( !error, 'Lists of Vectors3 should be equal.' + desc );
123+
ok( ! error, 'Lists of Vectors3 should be equal.' + desc );
124124

125-
});
125+
} );

test/unit/unittests_sources.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@
3535

3636
<script src="../../src/extras/core/Curve.js"></script>
3737
<script src="../../src/extras/CurveUtils.js"></script>
38-
<script src="../../src/extras/curves/ClosedSplineCurve3.js"></script>
3938
<script src="../../src/extras/curves/CatmullRomCurve3.js"></script>
39+
<script src="../../src/extras/curves/ClosedSplineCurve3.js"></script>
4040

4141
<!-- add class-based unit tests below -->
4242

0 commit comments

Comments
 (0)