Browse Source

bevel attempt 3b failed

zz85 14 years ago
parent
commit
2134d6b36c
1 changed files with 64 additions and 50 deletions
  1. 64 50
      src/extras/geometries/ExtrudeGeometry.js

+ 64 - 50
src/extras/geometries/ExtrudeGeometry.js

@@ -155,7 +155,8 @@ THREE.ExtrudeGeometry.prototype.addShape = function( shape, options ) {
 	}
 	
 	function scalePt2 (pt, vec, size ) {
-		return vec.clone().multiplyScalar( size ).addSelf( pt );
+		//return vec.clone().multiplyScalar( size ).addSelf( pt );
+		return pt.clone().addSelf(vec.clone().multiplyScalar( size ));
 	}
 	
 
@@ -175,38 +176,74 @@ THREE.ExtrudeGeometry.prototype.addShape = function( shape, options ) {
 	var RAD_TO_DEGREES = 180 / Math.PI;
 
 	
-	function getBevelVec(u, v /*Vector2*/) {
-		console.log(u,v);
-		//u = u.normalize();
-		//v = v.normalize();
-		var scalar = u.dot(v);
-		var product = u.length() * v.length();
-		// scalar = product * cos (theta)
+	function getBevelVec(pt_i, pt_j, pt_k) {
+		var anglea = Math.atan2(pt_j.y - pt_i.y, pt_j.x - pt_i.x);
+		var angleb = Math.atan2(pt_k.y - pt_i.y, pt_k.x - pt_i.x);
+		//var anglea = Math.atan2(pt_i.y - pt_j.y, pt_i.x - pt_j.x);
+		//var angleb = Math.atan2(pt_i.y - pt_k.y, pt_i.x - pt_k.x);
+		//if (anglea < 0 ) anglea += Math.PI * 2;
+		/*
+		if (angleb <= 0 ) {
+			angleb += Math.PI * 2;
+			console.log('ping');
+		}
+		*/
+		
+		
+		x = Math.cos(anglea) + Math.cos(angleb);
+		y = Math.sin(anglea) + Math.sin(angleb);
+		anglec = Math.atan2(y,x);
+		
+		
+		console.log('angle1', anglea * RAD_TO_DEGREES,'angle2', angleb * RAD_TO_DEGREES, 'anglec', anglec *RAD_TO_DEGREES);
 		
-		var theta = Math.acos( scalar / product );
+		/*
+		x = bevelSize * Math.cos(anglec);
+		y = bevelSize * Math.sin(anglec);
 		
-		console.log('theta', theta * RAD_TO_DEGREES);
+		var vec = new THREE.Vector2(x,y).divideScalar(bevelSize);
+		*/
 		
-		var angle = Math.PI *2 - theta / 2;
-		angle /= 2;
+		var x = Math.cos(anglec);
+		var y = Math.sin(anglec);
 		
-		var uw = u.length() * bevelSize * Math.cos(angle);
-		var wv = bevelSize * v.length() * Math.cos(angle);
-		// ax + by = c
-		// dx + ey = d
+		// Check quadrants?
+		console.log(x,y,'x,y');
 		
-			console.log('uw', uw, 'wv', wv);
+		/*
+		var quad1 = Math.PI/2;
+		var quad2 = Math.PI;
+		var quad3 = Math.PI * 3/2
+		var quad4 = Math.PI * 2
 		
-		var a = u.x, b = u.y, c = uw,
-			d = v.x, e = v.y, f = wv;
+		anglec %= quad4;
+		if (anglec < 0 ) anglec += quad4;
+		console.log('>0', anglec * RAD_TO_DEGREES);
+	
+		if (anglec < quad1) {
+
+			
+		} else
+		if (anglec < quad2) {
+			x = -x;
+			
+		} else if (anglec < quad3) {
+			y = -y;
+			x = -x;
+		} else if (anglec < quad4) {
+			
+			y = -y;
+		} else {
+			console.log("die");
 			
-		var y = (f - c) / (e - b);
-		var x = (f - c) / (d - a);
+			
+		}
+		*/
 		
+		var vec = new THREE.Vector2(x,y);
 		
-		var vec3 = new THREE.Vector2(x, y).normalize();
-		console.log('xy', x, y, vec3);
-		return vec3;
+		console.log('xy', x, y, vec, pt_i.x +x , pt_i.y + y);
+		return vec;
 	}
 	
 	var contourMovements = [];
@@ -217,33 +254,13 @@ THREE.ExtrudeGeometry.prototype.addShape = function( shape, options ) {
 		
 		//  (j)---(i)---(k)
 		console.log('i,j,k', i, j , k)
-		var v1 = contour[ j ].clone().subSelf(contour[ i ]); //.normalize();
-		var v2 = contour[ k ].clone().subSelf(contour[ i ]); //.normalize();
-		
-		//var v1 = contour[ i ].clone().subSelf(contour[ j ]);
-		//var v2 = contour[ k ].clone().subSelf(contour[ i ]);
+
 		
 		var pt_i = contour[ i ];
 		var pt_j = contour[ j ];
 		var pt_k = contour[ k ];
 		
-		console.log(pt_i, pt_j, pt_k);
-		
-		var anglea = Math.atan2(pt_i.y - pt_j.y, pt_i.x - pt_j.x);
-		//var angleb = Math.atan2(pt_k.y - pt_i.y, pt_k.x - pt_i.x);
-		var angleb = Math.atan2(pt_i.y - pt_k.y, pt_i.x - pt_k.x);
-		
-		var anglec = (angleb - anglea ) / 2 + anglea;
-		
-		console.log('angle1', anglea * RAD_TO_DEGREES,'angle2', angleb * RAD_TO_DEGREES, 'anglec', anglec *RAD_TO_DEGREES);
-		
-		x = -bevelSize * Math.cos(anglec);
-		y = -bevelSize * Math.sin(anglec);
-		
-		contourMovements[i]= new THREE.Vector2(x,y).normalize();
-		console.log('xy', x, y, contourMovements[i], pt_i.x +x , pt_i.y + y);
-		
-		//contourMovements[i]= getBevelVec(v1, v2);
+		contourMovements[i]= getBevelVec(contour[ i ], contour[ j ], contour[ k ] );
 		
 		
 	}
@@ -262,10 +279,7 @@ THREE.ExtrudeGeometry.prototype.addShape = function( shape, options ) {
 
 			//  (j)---(i)---(k)
 
-			var v1 = ahole[ i ].clone().subSelf(ahole[ j ]);
-			var v2 = ahole[ k ].clone().subSelf(ahole[ i ]);
-
-			oneHoleMovements[i]= getBevelVec(v1, v2);
+			oneHoleMovements[i]= getBevelVec(ahole[ i ], ahole[ j ], ahole[ k ] );
 
 
 		}