Browse Source

fix broken segments in TubeGeometry

zz85 13 years ago
parent
commit
e1ad0a6481
1 changed files with 31 additions and 31 deletions
  1. 31 31
      src/extras/geometries/TubeGeometry.js

+ 31 - 31
src/extras/geometries/TubeGeometry.js

@@ -42,7 +42,7 @@ THREE.TubeGeometry = function(radius, segments, segmentsRadius, path, debug) {
 
 		this.grid[i] = new Array(this.segmentsRadius);
 
-		u = i / this.segments;
+		u = i / ( this.segments - 1 );
 
 		var pos = this.path.getPointAt(u);
 		tang = this.path.getTangentAt(u);
@@ -69,35 +69,35 @@ THREE.TubeGeometry = function(radius, segments, segmentsRadius, path, debug) {
 			oldB = binormal;
 
 			if (oldB.length()==0) {
-
-			// When binormal is a zero vector, we could brute force another vector ?
-			// oldB.set( 1, 0, 0 );
-			// if (normal.cross(oldB, tang).normalize().length()==0) {
-			// 	oldB.set( 0, 1, 0 );
-			// 	if (normal.cross(oldB, tang).normalize().length()==0) {
-			// 		oldB.set( 0, 0, 1 );
-			// 	}
-			// }
-
-			// Method 4 - Sets binormal direction in the smallest tangent xyz component
-			var smallest = Number.MAX_VALUE;
-			var x, y, z;
-			var tx = Math.abs(tang.x);
-			var ty = Math.abs(tang.y);
-			var tz = Math.abs(tang.z);
-
-			if (tx <= smallest) {
-				smallest = tx;
-				oldB.set(1,0,0);
-			}
- 
-			if (ty <= smallest) {
-				smallest = ty;
-				oldB.set(0,1,0);
-			}
- 
-			if (tz <= smallest) {
-				oldB.set(0,0,1);
+				// When binormal is a zero vector, we could brute force another vector ?
+				// oldB.set( 1, 0, 0 );
+				// if (normal.cross(oldB, tang).normalize().length()==0) {
+				// 	oldB.set( 0, 1, 0 );
+				// 	if (normal.cross(oldB, tang).normalize().length()==0) {
+				// 		oldB.set( 0, 0, 1 );
+				// 	}
+				// }
+
+				// Method 4 - Sets binormal direction in the smallest tangent xyz component
+				var smallest = Number.MAX_VALUE;
+				var x, y, z;
+				var tx = Math.abs(tang.x);
+				var ty = Math.abs(tang.y);
+				var tz = Math.abs(tang.z);
+
+				if (tx <= smallest) {
+					smallest = tx;
+					oldB.set(1,0,0);
+				}
+
+				if (ty <= smallest) {
+					smallest = ty;
+					oldB.set(0,1,0);
+				}
+
+				if (tz <= smallest) {
+					oldB.set(0,0,1);
+				}
 			}
  
 		}
@@ -131,7 +131,7 @@ THREE.TubeGeometry = function(radius, segments, segmentsRadius, path, debug) {
 		}
 	}
 
-	for (var i = 0; i < this.segments; ++i) { // segments -1 for non-closed loops, segment - 0 for closed ?
+	for (var i = 0; i < this.segments -1; ++i) {
 
 		for (var j = 0; j < this.segmentsRadius; ++j) {