/** developpé d'un cone de haut parleur **/ import processing.svg.*; PVector centre, event, vtmp; float my_scale=1; int nbr_event=6; int rayon_cone=int(40*my_scale); float rayon_coil=7.6*my_scale; float bordure=5*my_scale; float rayon_spider; float delta1,delta2,delta3,delta4,delta5; float screw_hole = 1.5*my_scale; float radius_for_screw = 26.5 *my_scale; void setup() { size(210, 297); //size(1000, 1000); delta1=5*my_scale; //cercle interieur delta2=3*my_scale; //branche 1 delta3=3*my_scale; // cercle intermediaire delta4=3.5*my_scale; //branche 2 affect aussi la hauteur de l'event delta5=6*my_scale; //dernier cercle //rayon_spider=rayon_coil+delta1+delta2+delta3+delta4+delta5; rayon_spider=30*my_scale; // match magnet enveloppe noLoop(); // Run once and stop centre = new PVector(rayon_spider+20+bordure, rayon_spider+20+bordure); } void cut_beans(int beans_qty, float rayon_int, float delta) { float alpha=2*PI/beans_qty; float theta=2*2*atan(delta/2/(rayon_int+(delta/2))); println("alpha : " + alpha + " theta : " + theta ); for (int i = 0; i < beans_qty; i = i+1) { arc(0,0,2*rayon_int,2*rayon_int,0,alpha-theta,OPEN); arc(0,0,2*(rayon_int+delta),2*(rayon_int+delta),0,alpha-theta,OPEN); translate(rayon_int+(delta/2),0); arc(0,0,delta,delta,PI,2*PI,OPEN); translate(-rayon_int-(delta/2),0); rotate(alpha-theta); translate(rayon_int+(delta/2),0); arc(0,0,delta,delta,0,PI,OPEN); translate(-rayon_int-(delta/2),0); rotate(theta); } } void draw() { //this is for grid display, not in svg file //centre pushMatrix(); translate(centre.x, centre.y); for (int i = 0; i < 600; i = i+100) { line(-600,i,600,i); line(i,-600,i,600); line(-600,-i,600,-i); line(-i,-600,-i,600); } popMatrix(); noFill(); beginRecord(SVG, "my_spider_instructables.svg"); //bordure exterieur circle(centre.x,centre.y,2*(rayon_spider)); println("rayon spider : " + rayon_spider/my_scale); //pour visuel uniquement //circle(centre.x,centre.y,longeur_pavillon*2); //centre pour coil circle(centre.x,centre.y,rayon_coil*2); //cut 4 screw holes pushMatrix(); translate(centre.x, centre.y); //rotate(PI/9); circle(radius_for_screw, 0, 2*screw_hole); rotate(PI/2); circle(radius_for_screw, 0, 2*screw_hole); rotate(PI/2); circle(radius_for_screw, 0, 2*screw_hole); rotate(PI/2); circle(radius_for_screw, 0, 2*screw_hole); popMatrix(); float rayon_int= rayon_coil + delta1; float delta = delta2; pushMatrix(); translate(centre.x, centre.y); cut_beans(3,rayon_int,delta); rotate(PI/3); rayon_int=rayon_coil + delta1 +delta2 +delta3; delta=delta4; cut_beans(3,rayon_int,delta); popMatrix(); endRecord(); }