Selaa lähdekoodia

RingGeometry: Optimising and code formating.

Mr.doob 12 vuotta sitten
vanhempi
commit
21d2d38484
2 muutettua tiedostoa jossa 91 lisäystä ja 91 poistoa
  1. 28 27
      src/extras/geometries/CircleGeometry.js
  2. 63 64
      src/extras/geometries/RingGeometry.js

+ 28 - 27
src/extras/geometries/CircleGeometry.js

@@ -4,49 +4,50 @@
 
 THREE.CircleGeometry = function ( radius, segments, thetaStart, thetaLength ) {
 
-    THREE.Geometry.call( this );
+	THREE.Geometry.call( this );
 
-    radius = radius || 50;
+	radius = radius || 50;
 
-    thetaStart = thetaStart !== undefined ? thetaStart : 0;
-    thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;
-    segments = segments !== undefined ? Math.max( 3, segments ) : 8;
+	thetaStart = thetaStart !== undefined ? thetaStart : 0;
+	thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;
+	segments = segments !== undefined ? Math.max( 3, segments ) : 8;
 
-    var i, uvs = [],
-    center = new THREE.Vector3(), centerUV = new THREE.Vector2( 0.5, 0.5 );
+	var i, uvs = [],
+	center = new THREE.Vector3(), centerUV = new THREE.Vector2( 0.5, 0.5 );
 
-    this.vertices.push(center);
-    uvs.push( centerUV );
+	this.vertices.push(center);
+	uvs.push( centerUV );
 
-    for ( i = 0; i <= segments; i ++ ) {
+	for ( i = 0; i <= segments; i ++ ) {
 
-        var vertex = new THREE.Vector3();
+		var vertex = new THREE.Vector3();
+		var segment = thetaStart + i / segments * thetaLength;
 
-        vertex.x = radius * Math.cos( thetaStart + i / segments * thetaLength );
-        vertex.y = radius * Math.sin( thetaStart + i / segments * thetaLength );
+		vertex.x = radius * Math.cos( segment );
+		vertex.y = radius * Math.sin( segment );
 
-        this.vertices.push( vertex );
-        uvs.push( new THREE.Vector2( ( vertex.x / radius + 1 ) / 2, - ( vertex.y / radius + 1 ) / 2 + 1 ) );
+		this.vertices.push( vertex );
+		uvs.push( new THREE.Vector2( ( vertex.x / radius + 1 ) / 2, - ( vertex.y / radius + 1 ) / 2 + 1 ) );
 
-    }
+	}
 
-    var n = new THREE.Vector3( 0, 0, -1 );
+	var n = new THREE.Vector3( 0, 0, -1 );
 
-    for ( i = 1; i <= segments; i ++ ) {
+	for ( i = 1; i <= segments; i ++ ) {
 
-        var v1 = i;
-        var v2 = i + 1 ;
-        var v3 = 0;
+		var v1 = i;
+		var v2 = i + 1 ;
+		var v3 = 0;
 
-        this.faces.push( new THREE.Face3( v1, v2, v3, [ n, n, n ] ) );
-        this.faceVertexUvs[ 0 ].push( [ uvs[ i ], uvs[ i + 1 ], centerUV ] );
+		this.faces.push( new THREE.Face3( v1, v2, v3, [ n, n, n ] ) );
+		this.faceVertexUvs[ 0 ].push( [ uvs[ i ], uvs[ i + 1 ], centerUV ] );
 
-    }
+	}
 
-    this.computeCentroids();
-    this.computeFaceNormals();
+	this.computeCentroids();
+	this.computeFaceNormals();
 
-    this.boundingSphere = new THREE.Sphere( new THREE.Vector3(), radius );
+	this.boundingSphere = new THREE.Sphere( new THREE.Vector3(), radius );
 
 };
 

+ 63 - 64
src/extras/geometries/RingGeometry.js

@@ -1,72 +1,71 @@
-/*
- *
- * Author: Kaleb Murphy
- *
+/**
+ * @author Kaleb Murphy
  */
 
+THREE.RingGeometry = function ( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {
 
+	THREE.Geometry.call( this );
 
-THREE.RingGeometry = function ( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {
+	innerRadius = innerRadius || 0;
+	outerRadius = outerRadius || 50;
+
+	thetaStart = thetaStart !== undefined ? thetaStart : 0;
+	thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;
+
+	thetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;
+	phiSegments = phiSegments !== undefined ? Math.max( 3, phiSegments ) : 8;
+
+	var i, o, uvs = [], radius = innerRadius, radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );
+
+	for ( i = 0; i <= phiSegments; i ++ ) { // concentric circles inside ring
+
+		for ( o = 0; o <= thetaSegments; o ++ ) { // number of segments per circle
+
+			var vertex = new THREE.Vector3();
+			var segment = thetaStart + o / thetaSegments * thetaLength;
+
+			vertex.x = radius * Math.cos( segment );
+			vertex.y = radius * Math.sin( segment );
+
+			this.vertices.push( vertex );
+			uvs.push( new THREE.Vector2( ( vertex.x / radius + 1 ) / 2, - ( vertex.y / radius + 1 ) / 2 + 1 ) );
+		}
+
+		radius += radiusStep;
+
+	}
+
+	var n = new THREE.Vector3( 0, 0, 1 );
+
+	for ( i = 0; i < phiSegments; i ++ ) { // concentric circles inside ring
+
+		var thetaSegment = i * thetaSegments;
+
+		for ( o = 0; o <= thetaSegments; o ++ ) { // number of segments per circle
+
+			var segment = o + thetaSegment;
+
+			var v1 = segment + i;
+			var v2 = segment + thetaSegments + i;
+			var v3 = segment + thetaSegments + 1 + i;
+
+			this.faces.push( new THREE.Face3( v1, v2, v3, [ n, n, n ] ) );
+			this.faceVertexUvs[ 0 ].push( [ uvs[ v1 ], uvs[ v2 ], uvs[ v3 ] ]);
+
+			v1 = segment + i;
+			v2 = segment + thetaSegments + 1 + i;
+			v3 = segment + 1 + i;
+
+			this.faces.push( new THREE.Face3( v1, v2, v3, [ n, n, n ] ) );
+			this.faceVertexUvs[ 0 ].push( [ uvs[ v1 ], uvs[ v2 ], uvs[ v3 ] ]);
+
+		}
+	}
+
+	this.computeCentroids();
+	this.computeFaceNormals();
 
-    THREE.Geometry.call( this );
-
-    innerRadius = innerRadius || 0;
-    outerRadius = outerRadius || 50;
-
-    thetaStart = thetaStart !== undefined ? thetaStart : 0;
-    thetaLength = thetaLength !== undefined ? thetaLength : Math.PI * 2;
-
-    thetaSegments = thetaSegments !== undefined ? Math.max( 3, thetaSegments ) : 8;
-    phiSegments = phiSegments !== undefined ? Math.max( 3, phiSegments ) : 8;
-    
-    var i, o, uvs = [], radius = innerRadius, radiusStep = ( ( outerRadius - innerRadius ) / phiSegments);
-   
-    for( i = 0; i <= phiSegments; i++) {//concentric circles inside ring
-
-        for( o = 0; o <= thetaSegments; o++) {//number of segments per circle
-
-            var vertex = new THREE.Vector3();
-            
-            vertex.x = radius * Math.cos( thetaStart + o / thetaSegments * thetaLength );
-            vertex.y = radius * Math.sin( thetaStart + o / thetaSegments * thetaLength );
-            
-            this.vertices.push( vertex );
-            uvs.push( new THREE.Vector2( ( vertex.x / radius + 1 ) / 2, - ( vertex.y / radius + 1 ) / 2 + 1 ) );
-        }
-        
-        radius += radiusStep;
-
-    }
-
-    var n = new THREE.Vector3( 0, 0, 1 );
-    
-    for( i = 0; i < phiSegments; i++) {//concentric circles inside ring
-
-        for( o = 0; o <= thetaSegments; o++) {//number of segments per circle
-            
-            var v1, v2, v3;
-
-            v1 = o + (thetaSegments * i) + i;
-            v2 = o + (thetaSegments * i) + thetaSegments + i;
-            v3 = o + (thetaSegments * i) + thetaSegments + 1 + i;
-            
-            this.faces.push( new THREE.Face3( v1, v2, v3, [ n, n, n ] ) );
-            this.faceVertexUvs[ 0 ].push( [ uvs[ v1 ], uvs[ v2 ], uvs[ v3 ] ]);
-            
-            v1 = o + (thetaSegments * i) + i;
-            v2 = o + (thetaSegments * i) + thetaSegments + 1 + i;
-            v3 = o + (thetaSegments * i) + 1 + i;
-            
-            this.faces.push( new THREE.Face3( v1, v2, v3, [ n, n, n ] ) );
-            this.faceVertexUvs[ 0 ].push( [ uvs[ v1 ], uvs[ v2 ], uvs[ v3 ] ]);
-
-        }
-    }
-    
-    this.computeCentroids();
-    this.computeFaceNormals();
-
-    this.boundingSphere = new THREE.Sphere( new THREE.Vector3(), radius ); 
+	this.boundingSphere = new THREE.Sphere( new THREE.Vector3(), radius );
 
 };