Browse Source

mise en forme du code

Jackbot 3 years ago
parent
commit
b564f3f5d2
1 changed files with 126 additions and 129 deletions
  1. 126 129
      math.scad

+ 126 - 129
math.scad

@@ -92,178 +92,175 @@ largeur désigne la largeur du bras de la spirale
 **********************************************************************************/
 module spirale_coord(x1 = 10, y1 = 0, x2 = 10, y2 = 10, tours = 2, largeur = 1)
 {
-    //calcule des distances par rapport à l'origine
-    d1 = calcule_distance_2d(x1, y1);
-    d2 = calcule_distance_2d(x2, y2);
-    
-    //calcule des angles entre les vecteur OA et Ox
-    theta1 = calcule_angle_2d(x1, y1);
-    theta2 = calcule_angle_2d(x2, y2);
-    
-    //calcule de l'angle à balayer pour effectuer le nombre de tour voulu
-    //pour lier le point de départ et le point d'arrivé
-    angle = tours * 360 + (theta2 - theta1);
-    
-    //la spirale est de type linéaire, cela signifie que le rayon de la courbe va croitre de manière proportionnelle à l'angle
-    coeff_dir = (d2 - d1)/angle;
-    
-    //création des points extérieur de la spirale du point de départ vers le point d'arrivé
-    A = [for(i=[0:1:angle])
-        [(coeff_dir * i + d1 + largeur/2) * cos(i + theta1),
-         (coeff_dir * i + d1 + largeur/2) * sin(i + theta1)]];
-    
-    //création des points interieur de la spirale du point d'arrivé vers le point de départ
-    B = [for(i=[angle:-1:0])
-        [(coeff_dir * i + d1 - largeur/2) * cos(i + theta1),
-         (coeff_dir * i + d1 - largeur/2) * sin(i + theta1)]];
-    
-    //combinaison des 2 séries de points
-    C = concat(A,B);
-    
-    //tracé de la courbe finale
-    polygon(C);
+	//calcule des distances par rapport à l'origine
+	d1 = calcule_distance_2d(x1, y1);
+	d2 = calcule_distance_2d(x2, y2);
+
+	//calcule des angles entre les vecteur OA et Ox
+	theta1 = calcule_angle_2d(x1, y1);
+	theta2 = calcule_angle_2d(x2, y2);
+
+	//calcule de l'angle à balayer pour effectuer le nombre de tour voulu
+	//pour lier le point de départ et le point d'arrivé
+	angle = tours * 360 + (theta2 - theta1);
+
+	//la spirale est de type linéaire, cela signifie que le rayon de la courbe va croitre de manière proportionnelle à l'angle
+	coeff_dir = (d2 - d1)/angle;
+	
+	//création des points extérieur de la spirale du point de départ vers le point d'arrivé
+	A = [for(i=[0:1:angle])
+		[(coeff_dir * i + d1 + largeur/2) * cos(i + theta1),
+		(coeff_dir * i + d1 + largeur/2) * sin(i + theta1)]];
+
+	//création des points interieur de la spirale du point d'arrivé vers le point de départ
+	B = [for(i=[angle:-1:0])
+		[(coeff_dir * i + d1 - largeur/2) * cos(i + theta1),
+		(coeff_dir * i + d1 - largeur/2) * sin(i + theta1)]];
+
+	//combinaison des 2 séries de points
+	C = concat(A,B);
+
+	//tracé de la courbe finale
+	polygon(C);
 }
 
 module spirale_coord2(x1 = 0, y1 = 0, x2 = 0, y2 = 10, tours = 2, largeur = 1)
 {
-    /*pour une spirale linéaire, ou d'Archimède, la relation est la suivante :
-    r = a + b*theta
-    cela signifie que les coordonnées cartésiennes sont :
-    x(theta) = r*cos(theta) = (a + b*theta)*cos(theta)
-    y(theta) = r*sin(theta) = (a + b*theta)*sin(theta)
-    */
-    function delta_x(t = 0) = cos(t) - rad(t)*sin(t);
-    function delta_y(t = 0) = sin(t) + rad(t)*cos(t);
-    
-    //calcule des distances par rapport à l'origine
-    d1 = calcule_distance_2d(x1, y1);
-    d2 = calcule_distance_2d(x2, y2);
-    
-    //calcule des angles entre les vecteur OA et Ox
-    theta1 = calcule_angle_2d(x1, y1);
-    theta2 = calcule_angle_2d(x2, y2);
-    
-    //calcule de l'angle à balayer pour effectuer le nombre de tour voulu
-    //pour lier le point de départ et le point d'arrivé
-    angle = tours * 360 + abs(theta2 - theta1);
-        
-    //la spirale est de type linéaire, cela signifie que le rayon de la courbe va croitre de manière proportionnelle à l'angle
-    coeff_dir = (d2 - d1)/angle;
-    
-    function vecteur(t = 0) = [[0, -1],[1,  0]]*[delta_x(t = t), delta_y(t = t)]/norm([delta_x(t = t), delta_y(t = t)]);
-//    function vecteur(t = 0) = [largeur*cos(t)/2, largeur*sin(t)/2];
-    
-    //création des points extérieur de la spirale du point de départ vers le point d'arrivé
-    A = [for(i=[0:1:angle])
-        (coeff_dir * i + d1) * [cos(i + theta1), sin(i + theta1)] + vecteur(t = i + theta1) ];
-    
-    //création des points interieur de la spirale du point d'arrivé vers le point de départ
-    B = [for(i=[angle:-1:0])
-        (coeff_dir * i + d1) * [cos(i + theta1), sin(i + theta1)] - vecteur(t = i + theta1) ];
-    
-    //combinaison des 2 séries de points
-    C = concat(A,B);
-    
-    //tracé de la courbe finale
-    polygon(C);
+	/*pour une spirale linéaire, ou d'Archimède, la relation est la suivante :
+	r = a + b*theta
+	cela signifie que les coordonnées cartésiennes sont :
+	x(theta) = r*cos(theta) = (a + b*theta)*cos(theta)
+	y(theta) = r*sin(theta) = (a + b*theta)*sin(theta)
+	*/
+	function delta_x(t = 0) = cos(t) - rad(t)*sin(t);
+	function delta_y(t = 0) = sin(t) + rad(t)*cos(t);
+
+	//calcule des distances par rapport à l'origine
+	d1 = calcule_distance_2d(x1, y1);
+	d2 = calcule_distance_2d(x2, y2);
+
+	//calcule des angles entre les vecteur OA et Ox
+	theta1 = calcule_angle_2d(x1, y1);
+	theta2 = calcule_angle_2d(x2, y2);
+
+	//calcule de l'angle à balayer pour effectuer le nombre de tour voulu
+	//pour lier le point de départ et le point d'arrivé
+	angle = tours * 360 + abs(theta2 - theta1);
+
+	//la spirale est de type linéaire, cela signifie que le rayon de la courbe va croitre de manière proportionnelle à l'angle
+	coeff_dir = (d2 - d1)/angle;
+
+	function vecteur(t = 0) = [[0, -1],[1,  0]]*[delta_x(t = t), delta_y(t = t)]/norm([delta_x(t = t), delta_y(t = t)]);
+	//function vecteur(t = 0) = [largeur*cos(t)/2, largeur*sin(t)/2];
+
+	//création des points extérieur de la spirale du point de départ vers le point d'arrivé
+	A = [for(i=[0:1:angle])
+		(coeff_dir * i + d1) * [cos(i + theta1), sin(i + theta1)] + vecteur(t = i + theta1) ];
+
+	//création des points interieur de la spirale du point d'arrivé vers le point de départ
+	B = [for(i=[angle:-1:0])
+		(coeff_dir * i + d1) * [cos(i + theta1), sin(i + theta1)] - vecteur(t = i + theta1) ];
+
+	//combinaison des 2 séries de points
+	C = concat(A,B);
+
+	//tracé de la courbe finale
+	polygon(C);
 }
 
 module spirale_log_coord(x1 = 1, y1 = 0, x2 = 20, y2 = 0, tours = 2, largeur = 1)
 {
-    //calcule des distances par rapport à l'origine
-    d1 = calcule_distance_2d(x1, y1);
-    d2 = calcule_distance_2d(x2, y2);
-    
-    //calcule des angles entre les vecteur OA et Ox
-    theta1 = calcule_angle_2d(x1, y1);
-    theta2 = calcule_angle_2d(x2, y2);
-	
+	//calcule des distances par rapport à l'origine
+	d1 = calcule_distance_2d(x1, y1);
+	d2 = calcule_distance_2d(x2, y2);
+
+	//calcule des angles entre les vecteur OA et Ox
+	theta1 = calcule_angle_2d(x1, y1);
+	theta2 = calcule_angle_2d(x2, y2);
+
 	echo("<font color='#ffa400'>math.scad, module : spirale_log_coord</font>");
 	echo("<font color='#ffa400'>theta1 = ", theta1, "</font>");
 	echo("<font color='#ffa400'>theta2 = ", theta2, "</font>");
-    
-    //calcule de l'angle à balayer pour effectuer le nombre de tour voulu
-    //pour lier le point de départ et le point d'arrivé
-    delta_theta = theta2 - theta1 >= 0 ? theta2 - theta1 : 360 - (theta1 - theta2);
-//    angle = tours * 360 - theta1 + theta2;
-    angle = tours * 360 + delta_theta;
-    theta2_ = angle + theta1;
-    
+
+	//calcule de l'angle à balayer pour effectuer le nombre de tour voulu
+	//pour lier le point de départ et le point d'arrivé
+	delta_theta = theta2 - theta1 >= 0 ? theta2 - theta1 : 360 - (theta1 - theta2);
+	angle = tours * 360 + delta_theta;
+	theta2_ = angle + theta1;
+
 	echo("<font color='#ffa400'>angle = ", angle, "</font>");
 
-    /*une spirale logarithmique est décrite par : r = a*b^theta
-    Si on possède 2 points :
-    r1 = a*b^theta1
-    r2 = a*b^theta2
-    on peut extraire le coefficient a :
-    ln(r1) = ln(a*b^theta1) = ln(a) + ln(b^theta1) = ln(a) + theta1*ln(b)
-    ln(r2) = ln(a*b^theta2) = ln(a) + ln(b^theta2) = ln(a) + theta2*ln(b)
-    
-    ln(r2) - ln(r1) = ln(a) - ln(a) + theta2*ln(b) - theta1*ln(b)
-    ln(r2/r1) = ln(b) * (theta2 - theta1)
-    ln(r2/r1)/(theta2-theta1) = ln(b)
-    <=> b = exp( ln(r2/r1)/(theta2-theta1) )
-    
+	/*une spirale logarithmique est décrite par : r = a*b^theta
+	Si on possède 2 points :
+	r1 = a*b^theta1
+	r2 = a*b^theta2
+	on peut extraire le coefficient a :
+	ln(r1) = ln(a*b^theta1) = ln(a) + ln(b^theta1) = ln(a) + theta1*ln(b)
+	ln(r2) = ln(a*b^theta2) = ln(a) + ln(b^theta2) = ln(a) + theta2*ln(b)
+
+	ln(r2) - ln(r1) = ln(a) - ln(a) + theta2*ln(b) - theta1*ln(b)
+	ln(r2/r1) = ln(b) * (theta2 - theta1)
+	ln(r2/r1)/(theta2-theta1) = ln(b)
+	<=> b = exp( ln(r2/r1)/(theta2-theta1) )
     */
-    b = exp( ln(d2/d1)/(theta2_-theta1) );
-    a = d1/(pow(b,theta1));
-    
-    //création des points extérieur de la spirale du point de départ vers le point d'arrivé
-    A = [for(i=[0:1:angle])
-        [(a*pow(b,(i + theta1)) + largeur/2) * cos(i + theta1),
-         (a*pow(b,(i + theta1)) + largeur/2) * sin(i + theta1)]];
-
-    //création des points interieur de la spirale du point d'arrivé vers le point de départ
-    B = [for(i=[angle:-1:0])
-        [(a*pow(b,(i + theta1)) - largeur/2) * cos(i + theta1),
-         (a*pow(b,(i + theta1)) - largeur/2) * sin(i + theta1)]];
-    
-    //combinaison des 2 séries de points
-    C = concat(A,B);
-    
-    //tracé de la courbe finale
-    polygon(C);
+
+	b = exp( ln(d2/d1)/(theta2_-theta1) );
+	a = d1/(pow(b,theta1));
+
+	//création des points extérieur de la spirale du point de départ vers le point d'arrivé
+	A = [for(i=[0:1:angle])
+		[(a*pow(b,(i + theta1)) + largeur/2) * cos(i + theta1),
+		(a*pow(b,(i + theta1)) + largeur/2) * sin(i + theta1)]];
+
+	//création des points interieur de la spirale du point d'arrivé vers le point de départ
+	B = [for(i=[angle:-1:0])
+		[(a*pow(b,(i + theta1)) - largeur/2) * cos(i + theta1),
+		(a*pow(b,(i + theta1)) - largeur/2) * sin(i + theta1)]];
+
+	//combinaison des 2 séries de points
+	C = concat(A,B);
+
+	//tracé de la courbe finale
+	polygon(C);
 }
 
 //spirale_coord2(x1 = 2.5, y1 = 0, x2 = 20, y2 = 0, tours = 2, largeur = 1);
 
 module spirale_point(A = [0, 0], B = [10, 10], tours = 1, largeur = 1)
 {
-    spirale(A[0], A[1], B[0], B[1], tours, largeur);
+	spirale(A[0], A[1], B[0], B[1], tours, largeur);
 }
 
 module polygone_regulier(cotes = 5, rayon = 10)
 {
-    polygon([for(i=[0: 360/cotes : 360])[rayon * cos(i), rayon * sin(i)]]);
+	polygon([for(i=[0: 360/cotes : 360])[rayon * cos(i), rayon * sin(i)]]);
 }
 
 module portion_disque(rayon = 10, angle = 180)
 {
-    A = [for(i=[0 : 1 : angle])[rayon * cos(i), rayon * sin(i)]];
-    B = concat([[0, 0]], A);
-    polygon(B);
+	A = [for(i=[0 : 1 : angle])[rayon * cos(i), rayon * sin(i)]];
+	B = concat([[0, 0]], A);
+	polygon(B);
 }
 
 module gaussienne(sigma = 0.5, mu = 0, interval = 20)
 {
-    polygon([   for(i=[-interval/2:0.1:interval/2])[i,  exp(-pow( (i - mu),2))/(2*pow(sigma,2))/(sigma * sqrt(2*pi))    ] ]);
+	polygon([   for(i=[-interval/2:0.1:interval/2])[i,  exp(-pow( (i - mu),2))/(2*pow(sigma,2))/(sigma * sqrt(2*pi))    ] ]);
 }
 
-
 module trompette(epaisseur = 2, hauteur = 10, r_min = 20, r_max = 40, precision = 100, facteur = 1)
 {
 	x1 = ln(hauteur/(exp( facteur * (r_max - r_min)) - 1))/facteur;
 	x2 = r_max - r_min + x1;
-	
+
 	function calcule_xb(xa, l) = -sqrt(pow(l, 2)/(1 + facteur * facteur * exp(-2*xa * facteur))) + xa;
 	function calcule_yb(xa, l) = sqrt(pow(l, 2)/(1 + facteur * facteur * exp(2*xa * facteur))) + exp(facteur * xa);
-	
+
 	A = [for(i=[x1:(x2-x1)/precision:x2])	[i ,exp(facteur *i)]]; 
 	B = [for(i=[x2:-(x2-x1)/precision:x1])	[calcule_xb(i, epaisseur), calcule_yb(i, epaisseur)]];
-		
+
 	C = concat(A,B);
-	
-	
+
 	rotate_extrude()
 	{
 		translate([  -x2 - r_min, -exp(facteur * x1), 0])