Преглед изворни кода

Examples: Moved hilbert functions to GeometryUtils.

Mugen87 пре 6 година
родитељ
комит
5609c6a2b9

+ 0 - 157
examples/js/geometries/Hilbert.js

@@ -1,157 +0,0 @@
-/**
- * Hilbert Curves.
- *
- * @author Dylan Grafmyre
- */
-
-THREE.Hilbert = {
-
-	/**
-	 * Generates 2D-Coordinates in a very fast way.
-	 *
-	 * @author Dylan Grafmyre
-	 *
-	 * Based on work by:
-	 * @author Thomas Diewald
-	 * @link http://www.openprocessing.org/sketch/15493
-	 *
-	 * @param center     Center of Hilbert curve.
-	 * @param size       Total width of Hilbert curve.
-	 * @param iterations Number of subdivisions.
-	 * @param v0         Corner index -X, -Z.
-	 * @param v1         Corner index -X, +Z.
-	 * @param v2         Corner index +X, +Z.
-	 * @param v3         Corner index +X, -Z.
-	 */
-	generate2D( center, size, iterations, v0, v1, v2, v3 ) {
-
-		// Default Vars
-		var center = center !== undefined ? center : new THREE.Vector3( 0, 0, 0 ),
-			size = size !== undefined ? size : 10,
-			half = size / 2,
-			iterations = iterations !== undefined ? iterations : 1,
-			v0 = v0 !== undefined ? v0 : 0,
-			v1 = v1 !== undefined ? v1 : 1,
-			v2 = v2 !== undefined ? v2 : 2,
-			v3 = v3 !== undefined ? v3 : 3
-		;
-
-		var vec_s = [
-			new THREE.Vector3( center.x - half, center.y, center.z - half ),
-			new THREE.Vector3( center.x - half, center.y, center.z + half ),
-			new THREE.Vector3( center.x + half, center.y, center.z + half ),
-			new THREE.Vector3( center.x + half, center.y, center.z - half )
-		];
-
-		var vec = [
-			vec_s[ v0 ],
-			vec_s[ v1 ],
-			vec_s[ v2 ],
-			vec_s[ v3 ]
-		];
-
-		// Recurse iterations
-		if ( 0 <= -- iterations ) {
-
-			var tmp = [];
-
-			Array.prototype.push.apply( tmp, THREE.Hilbert.generate2D( vec[ 0 ], half, iterations, v0, v3, v2, v1 ) );
-			Array.prototype.push.apply( tmp, THREE.Hilbert.generate2D( vec[ 1 ], half, iterations, v0, v1, v2, v3 ) );
-			Array.prototype.push.apply( tmp, THREE.Hilbert.generate2D( vec[ 2 ], half, iterations, v0, v1, v2, v3 ) );
-			Array.prototype.push.apply( tmp, THREE.Hilbert.generate2D( vec[ 3 ], half, iterations, v2, v1, v0, v3 ) );
-
-			// Return recursive call
-			return tmp;
-
-		}
-
-		// Return complete Hilbert Curve.
-		return vec;
-
-	},
-
-	/**
-	 * Generates 3D-Coordinates in a very fast way.
-	 *
-	 * @author Dylan Grafmyre
-	 *
-	 * Based on work by:
-	 * @author Thomas Diewald
-	 * @link http://www.openprocessing.org/visuals/?visualID=15599
-	 *
-	 * @param center     Center of Hilbert curve.
-	 * @param size       Total width of Hilbert curve.
-	 * @param iterations Number of subdivisions.
-	 * @param v0         Corner index -X, +Y, -Z.
-	 * @param v1         Corner index -X, +Y, +Z.
-	 * @param v2         Corner index -X, -Y, +Z.
-	 * @param v3         Corner index -X, -Y, -Z.
-	 * @param v4         Corner index +X, -Y, -Z.
-	 * @param v5         Corner index +X, -Y, +Z.
-	 * @param v6         Corner index +X, +Y, +Z.
-	 * @param v7         Corner index +X, +Y, -Z.
-	 */
-	generate3D( center, size, iterations, v0, v1, v2, v3, v4, v5, v6, v7 ) {
-
-		// Default Vars
-		var center = center !== undefined ? center : new THREE.Vector3( 0, 0, 0 ),
-			size = size !== undefined ? size : 10,
-			half = size / 2,
-			iterations = iterations !== undefined ? iterations : 1,
-			v0 = v0 !== undefined ? v0 : 0,
-			v1 = v1 !== undefined ? v1 : 1,
-			v2 = v2 !== undefined ? v2 : 2,
-			v3 = v3 !== undefined ? v3 : 3,
-			v4 = v4 !== undefined ? v4 : 4,
-			v5 = v5 !== undefined ? v5 : 5,
-			v6 = v6 !== undefined ? v6 : 6,
-			v7 = v7 !== undefined ? v7 : 7
-		;
-
-		var vec_s = [
-			new THREE.Vector3( center.x - half, center.y + half, center.z - half ),
-			new THREE.Vector3( center.x - half, center.y + half, center.z + half ),
-			new THREE.Vector3( center.x - half, center.y - half, center.z + half ),
-			new THREE.Vector3( center.x - half, center.y - half, center.z - half ),
-			new THREE.Vector3( center.x + half, center.y - half, center.z - half ),
-			new THREE.Vector3( center.x + half, center.y - half, center.z + half ),
-			new THREE.Vector3( center.x + half, center.y + half, center.z + half ),
-			new THREE.Vector3( center.x + half, center.y + half, center.z - half )
-		];
-
-		var vec = [
-			vec_s[ v0 ],
-			vec_s[ v1 ],
-			vec_s[ v2 ],
-			vec_s[ v3 ],
-			vec_s[ v4 ],
-			vec_s[ v5 ],
-			vec_s[ v6 ],
-			vec_s[ v7 ]
-		];
-
-		// Recurse iterations
-		if ( -- iterations >= 0 ) {
-
-			var tmp = [];
-
-			Array.prototype.push.apply( tmp, THREE.Hilbert.generate3D( vec[ 0 ], half, iterations, v0, v3, v4, v7, v6, v5, v2, v1 ) );
-			Array.prototype.push.apply( tmp, THREE.Hilbert.generate3D( vec[ 1 ], half, iterations, v0, v7, v6, v1, v2, v5, v4, v3 ) );
-			Array.prototype.push.apply( tmp, THREE.Hilbert.generate3D( vec[ 2 ], half, iterations, v0, v7, v6, v1, v2, v5, v4, v3 ) );
-			Array.prototype.push.apply( tmp, THREE.Hilbert.generate3D( vec[ 3 ], half, iterations, v2, v3, v0, v1, v6, v7, v4, v5 ) );
-			Array.prototype.push.apply( tmp, THREE.Hilbert.generate3D( vec[ 4 ], half, iterations, v2, v3, v0, v1, v6, v7, v4, v5 ) );
-			Array.prototype.push.apply( tmp, THREE.Hilbert.generate3D( vec[ 5 ], half, iterations, v4, v3, v2, v5, v6, v1, v0, v7 ) );
-			Array.prototype.push.apply( tmp, THREE.Hilbert.generate3D( vec[ 6 ], half, iterations, v4, v3, v2, v5, v6, v1, v0, v7 ) );
-			Array.prototype.push.apply( tmp, THREE.Hilbert.generate3D( vec[ 7 ], half, iterations, v6, v5, v2, v1, v0, v3, v4, v7 ) );
-
-			// Return recursive call
-			return tmp;
-
-		}
-
-		// Return complete Hilbert Curve.
-		return vec;
-
-	}
-
-};

+ 148 - 0
examples/js/utils/GeometryUtils.js

@@ -295,6 +295,154 @@ THREE.GeometryUtils = {
 		console.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );
 		console.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );
 		return geometry.center();
 		return geometry.center();
 
 
+	},
+
+	/**
+	 * Generates 2D-Coordinates in a very fast way.
+	 *
+	 * @author Dylan Grafmyre
+	 *
+	 * Based on work by:
+	 * @author Thomas Diewald
+	 * @link http://www.openprocessing.org/sketch/15493
+	 *
+	 * @param center     Center of Hilbert curve.
+	 * @param size       Total width of Hilbert curve.
+	 * @param iterations Number of subdivisions.
+	 * @param v0         Corner index -X, -Z.
+	 * @param v1         Corner index -X, +Z.
+	 * @param v2         Corner index +X, +Z.
+	 * @param v3         Corner index +X, -Z.
+	 */
+	hilbert2D: function ( center, size, iterations, v0, v1, v2, v3 ) {
+
+		// Default Vars
+		var center = center !== undefined ? center : new THREE.Vector3( 0, 0, 0 ),
+			size = size !== undefined ? size : 10,
+			half = size / 2,
+			iterations = iterations !== undefined ? iterations : 1,
+			v0 = v0 !== undefined ? v0 : 0,
+			v1 = v1 !== undefined ? v1 : 1,
+			v2 = v2 !== undefined ? v2 : 2,
+			v3 = v3 !== undefined ? v3 : 3
+		;
+
+		var vec_s = [
+			new THREE.Vector3( center.x - half, center.y, center.z - half ),
+			new THREE.Vector3( center.x - half, center.y, center.z + half ),
+			new THREE.Vector3( center.x + half, center.y, center.z + half ),
+			new THREE.Vector3( center.x + half, center.y, center.z - half )
+		];
+
+		var vec = [
+			vec_s[ v0 ],
+			vec_s[ v1 ],
+			vec_s[ v2 ],
+			vec_s[ v3 ]
+		];
+
+		// Recurse iterations
+		if ( 0 <= -- iterations ) {
+
+			var tmp = [];
+
+			Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert2D( vec[ 0 ], half, iterations, v0, v3, v2, v1 ) );
+			Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert2D( vec[ 1 ], half, iterations, v0, v1, v2, v3 ) );
+			Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert2D( vec[ 2 ], half, iterations, v0, v1, v2, v3 ) );
+			Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert2D( vec[ 3 ], half, iterations, v2, v1, v0, v3 ) );
+
+			// Return recursive call
+			return tmp;
+
+		}
+
+		// Return complete Hilbert Curve.
+		return vec;
+
+	},
+
+	/**
+	 * Generates 3D-Coordinates in a very fast way.
+	 *
+	 * @author Dylan Grafmyre
+	 *
+	 * Based on work by:
+	 * @author Thomas Diewald
+	 * @link http://www.openprocessing.org/visuals/?visualID=15599
+	 *
+	 * @param center     Center of Hilbert curve.
+	 * @param size       Total width of Hilbert curve.
+	 * @param iterations Number of subdivisions.
+	 * @param v0         Corner index -X, +Y, -Z.
+	 * @param v1         Corner index -X, +Y, +Z.
+	 * @param v2         Corner index -X, -Y, +Z.
+	 * @param v3         Corner index -X, -Y, -Z.
+	 * @param v4         Corner index +X, -Y, -Z.
+	 * @param v5         Corner index +X, -Y, +Z.
+	 * @param v6         Corner index +X, +Y, +Z.
+	 * @param v7         Corner index +X, +Y, -Z.
+	 */
+	hilbert3D: function ( center, size, iterations, v0, v1, v2, v3, v4, v5, v6, v7 ) {
+
+		// Default Vars
+		var center = center !== undefined ? center : new THREE.Vector3( 0, 0, 0 ),
+			size = size !== undefined ? size : 10,
+			half = size / 2,
+			iterations = iterations !== undefined ? iterations : 1,
+			v0 = v0 !== undefined ? v0 : 0,
+			v1 = v1 !== undefined ? v1 : 1,
+			v2 = v2 !== undefined ? v2 : 2,
+			v3 = v3 !== undefined ? v3 : 3,
+			v4 = v4 !== undefined ? v4 : 4,
+			v5 = v5 !== undefined ? v5 : 5,
+			v6 = v6 !== undefined ? v6 : 6,
+			v7 = v7 !== undefined ? v7 : 7
+		;
+
+		var vec_s = [
+			new THREE.Vector3( center.x - half, center.y + half, center.z - half ),
+			new THREE.Vector3( center.x - half, center.y + half, center.z + half ),
+			new THREE.Vector3( center.x - half, center.y - half, center.z + half ),
+			new THREE.Vector3( center.x - half, center.y - half, center.z - half ),
+			new THREE.Vector3( center.x + half, center.y - half, center.z - half ),
+			new THREE.Vector3( center.x + half, center.y - half, center.z + half ),
+			new THREE.Vector3( center.x + half, center.y + half, center.z + half ),
+			new THREE.Vector3( center.x + half, center.y + half, center.z - half )
+		];
+
+		var vec = [
+			vec_s[ v0 ],
+			vec_s[ v1 ],
+			vec_s[ v2 ],
+			vec_s[ v3 ],
+			vec_s[ v4 ],
+			vec_s[ v5 ],
+			vec_s[ v6 ],
+			vec_s[ v7 ]
+		];
+
+		// Recurse iterations
+		if ( -- iterations >= 0 ) {
+
+			var tmp = [];
+
+			Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert3D( vec[ 0 ], half, iterations, v0, v3, v4, v7, v6, v5, v2, v1 ) );
+			Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert3D( vec[ 1 ], half, iterations, v0, v7, v6, v1, v2, v5, v4, v3 ) );
+			Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert3D( vec[ 2 ], half, iterations, v0, v7, v6, v1, v2, v5, v4, v3 ) );
+			Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert3D( vec[ 3 ], half, iterations, v2, v3, v0, v1, v6, v7, v4, v5 ) );
+			Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert3D( vec[ 4 ], half, iterations, v2, v3, v0, v1, v6, v7, v4, v5 ) );
+			Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert3D( vec[ 5 ], half, iterations, v4, v3, v2, v5, v6, v1, v0, v7 ) );
+			Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert3D( vec[ 6 ], half, iterations, v4, v3, v2, v5, v6, v1, v0, v7 ) );
+			Array.prototype.push.apply( tmp, THREE.GeometryUtils.hilbert3D( vec[ 7 ], half, iterations, v6, v5, v2, v1, v0, v3, v4, v7 ) );
+
+			// Return recursive call
+			return tmp;
+
+		}
+
+		// Return complete Hilbert Curve.
+		return vec;
+
 	}
 	}
 
 
 };
 };

+ 3 - 6
examples/software_lines_splines.html

@@ -46,9 +46,8 @@
 
 
 		<script src="../build/three.js"></script>
 		<script src="../build/three.js"></script>
 
 
-		<script src="js/geometries/Hilbert.js"></script>
+		<script src="js/utils/GeometryUtils.js"></script>
 
 
-		<script src="js/libs/stats.min.js"></script>
 		<script src="js/renderers/Projector.js"></script>
 		<script src="js/renderers/Projector.js"></script>
 		<script src="js/renderers/SoftwareRenderer.js"></script>
 		<script src="js/renderers/SoftwareRenderer.js"></script>
 
 
@@ -59,7 +58,7 @@
 				windowHalfX = window.innerWidth / 2,
 				windowHalfX = window.innerWidth / 2,
 				windowHalfY = window.innerHeight / 2,
 				windowHalfY = window.innerHeight / 2,
 
 
-				camera, scene, renderer, material, stats;
+				camera, scene, renderer;
 
 
 			init();
 			init();
 			animate();
 			animate();
@@ -81,7 +80,7 @@
 
 
 				//
 				//
 
 
-				var hilbertPoints = THREE.Hilbert.generate3D( new THREE.Vector3( 0, 0, 0 ), 200.0, 1, 0, 1, 2, 3, 4, 5, 6, 7 );
+				var hilbertPoints = THREE.GeometryUtils.hilbert3D( new THREE.Vector3( 0, 0, 0 ), 200.0, 1, 0, 1, 2, 3, 4, 5, 6, 7 );
 
 
 				var geometry1 = new THREE.BufferGeometry();
 				var geometry1 = new THREE.BufferGeometry();
 				var geometry2 = new THREE.BufferGeometry();
 				var geometry2 = new THREE.BufferGeometry();
@@ -148,8 +147,6 @@
 
 
 				}
 				}
 
 
-				stats = new Stats();
-
 				document.addEventListener( 'mousemove', onDocumentMouseMove, false );
 				document.addEventListener( 'mousemove', onDocumentMouseMove, false );
 				document.addEventListener( 'touchstart', onDocumentTouchStart, false );
 				document.addEventListener( 'touchstart', onDocumentTouchStart, false );
 				document.addEventListener( 'touchmove', onDocumentTouchMove, false );
 				document.addEventListener( 'touchmove', onDocumentTouchMove, false );

+ 2 - 2
examples/software_sandbox.html

@@ -33,7 +33,7 @@
 		</div>
 		</div>
 
 
 		<script src="../build/three.js"></script>
 		<script src="../build/three.js"></script>
-		<script src="js/geometries/Hilbert.js"></script>
+		<script src="js/utils/GeometryUtils.js"></script>
 		<script src="js/controls/TrackballControls.js"></script>
 		<script src="js/controls/TrackballControls.js"></script>
 		<script src="js/renderers/Projector.js"></script>
 		<script src="js/renderers/Projector.js"></script>
 		<script src="js/renderers/SoftwareRenderer.js"></script>
 		<script src="js/renderers/SoftwareRenderer.js"></script>
@@ -119,7 +119,7 @@
 				scene.add( texSprite );
 				scene.add( texSprite );
 
 
 				// Line
 				// Line
-				var hilbertPoints = THREE.Hilbert.generate3D( new THREE.Vector3( 0, 0, 0 ), 200.0, 1, 0, 1, 2, 3, 4, 5, 6, 7 );
+				var hilbertPoints = THREE.GeometryUtils.hilbert3D( new THREE.Vector3( 0, 0, 0 ), 200.0, 1, 0, 1, 2, 3, 4, 5, 6, 7 );
 
 
 				var lineGeometry = new THREE.BufferGeometry();
 				var lineGeometry = new THREE.BufferGeometry();
 				var subdivisions = 6;
 				var subdivisions = 6;

+ 2 - 2
examples/webgl_lines_colors.html

@@ -42,7 +42,7 @@
 
 
 		<script src="../build/three.js"></script>
 		<script src="../build/three.js"></script>
 
 
-		<script src="js/geometries/Hilbert.js"></script>
+		<script src="js/utils/GeometryUtils.js"></script>
 
 
 		<script src="js/WebGL.js"></script>
 		<script src="js/WebGL.js"></script>
 
 
@@ -78,7 +78,7 @@
 
 
 				//
 				//
 
 
-				var hilbertPoints = THREE.Hilbert.generate3D( new THREE.Vector3( 0, 0, 0 ), 200.0, 1, 0, 1, 2, 3, 4, 5, 6, 7 );
+				var hilbertPoints = THREE.GeometryUtils.hilbert3D( new THREE.Vector3( 0, 0, 0 ), 200.0, 1, 0, 1, 2, 3, 4, 5, 6, 7 );
 
 
 				var geometry1 = new THREE.BufferGeometry();
 				var geometry1 = new THREE.BufferGeometry();
 				var geometry2 = new THREE.BufferGeometry();
 				var geometry2 = new THREE.BufferGeometry();

+ 2 - 2
examples/webgl_lines_dashed.html

@@ -33,7 +33,7 @@
 
 
 		<script src="../build/three.js"></script>
 		<script src="../build/three.js"></script>
 
 
-		<script src="js/geometries/Hilbert.js"></script>
+		<script src="js/utils/GeometryUtils.js"></script>
 
 
 		<script src="js/WebGL.js"></script>
 		<script src="js/WebGL.js"></script>
 		<script src="js/libs/stats.min.js"></script>
 		<script src="js/libs/stats.min.js"></script>
@@ -66,7 +66,7 @@
 				var subdivisions = 6;
 				var subdivisions = 6;
 				var recursion = 1;
 				var recursion = 1;
 
 
-				var points = THREE.Hilbert.generate3D( new THREE.Vector3( 0, 0, 0 ), 25.0, recursion, 0, 1, 2, 3, 4, 5, 6, 7 );
+				var points = THREE.GeometryUtils.hilbert3D( new THREE.Vector3( 0, 0, 0 ), 25.0, recursion, 0, 1, 2, 3, 4, 5, 6, 7 );
 				var spline = new THREE.CatmullRomCurve3( points );
 				var spline = new THREE.CatmullRomCurve3( points );
 
 
 				var samples = spline.getPoints( points.length * subdivisions );
 				var samples = spline.getPoints( points.length * subdivisions );

+ 2 - 2
examples/webgl_lines_fat.html

@@ -36,7 +36,7 @@
 		<script src="../build/three.js"></script>
 		<script src="../build/three.js"></script>
 		<script src="js/controls/OrbitControls.js"></script>
 		<script src="js/controls/OrbitControls.js"></script>
 
 
-		<script src="js/geometries/Hilbert.js"></script>
+		<script src="js/utils/GeometryUtils.js"></script>
 
 
 		<script src="js/WebGL.js"></script>
 		<script src="js/WebGL.js"></script>
 
 
@@ -100,7 +100,7 @@
 				var positions = [];
 				var positions = [];
 				var colors = [];
 				var colors = [];
 
 
-				var points = THREE.Hilbert.generate3D( new THREE.Vector3( 0, 0, 0 ), 20.0, 1, 0, 1, 2, 3, 4, 5, 6, 7 );
+				var points = THREE.GeometryUtils.hilbert3D( new THREE.Vector3( 0, 0, 0 ), 20.0, 1, 0, 1, 2, 3, 4, 5, 6, 7 );
 
 
 				var spline = new THREE.CatmullRomCurve3( points );
 				var spline = new THREE.CatmullRomCurve3( points );
 				var divisions = Math.round( 12 * points.length );
 				var divisions = Math.round( 12 * points.length );