1+ /**
2+ * @author zz85 / http://joshuakoo.com
3+ */
4+
5+ module ( "CatmullRomCurve3" ) ;
6+
7+ 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 )
13+ ] ;
14+
15+ test ( "catmullrom check" , function ( ) {
16+
17+ var curve = new THREE . CatmullRomCurve3 ( positions ) ;
18+ curve . type = 'catmullrom' ;
19+
20+ var catmullPoints = [
21+
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 )
33+
34+ ] ;
35+
36+ var getPoints = curve . getPoints ( 10 ) ;
37+ var error = vectorsAreEqual ( getPoints , catmullPoints ) ;
38+ ok ( getPoints . length == 11 , 'getPoints should be equal.' ) ;
39+ var desc = error ? ' ' + error : '' ;
40+ ok ( ! error , 'Lists of Vectors3 should be equal.' + desc ) ;
41+
42+ } ) ;
43+
44+ test ( "chordal basic check" , function ( ) {
45+
46+ var curve = new THREE . CatmullRomCurve3 ( positions ) ;
47+
48+ curve . type = 'chordal' ;
49+
50+ 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 )
62+ ] ;
63+
64+ var getPoints = curve . getPoints ( 10 ) ;
65+ var error = vectorsAreEqual ( getPoints , chordalPoints ) ;
66+ ok ( getPoints . length == 11 , 'getPoints should be equal.' ) ;
67+ var desc = error ? ' ' + error : '' ;
68+ ok ( ! error , 'Lists of Vectors3 should be equal.' + desc ) ;
69+
70+ } ) ;
71+
72+ test ( "centripetal basic check" , function ( ) {
73+
74+ var curve = new THREE . CatmullRomCurve3 ( positions ) ;
75+ curve . type = 'centripetal' ;
76+
77+ 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 ) ,
89+ ] ;
90+
91+ var getPoints = curve . getPoints ( 10 ) ;
92+ var error = vectorsAreEqual ( getPoints , centripetalPoints ) ;
93+ ok ( getPoints . length == 11 , 'getPoints should be equal.' ) ;
94+ var desc = error ? ' ' + error : '' ;
95+ ok ( ! error , 'Lists of Vectors3 should be equal.' + desc ) ;
96+
97+ } ) ;
0 commit comments