/** * La courbe de KOCH en 3D * Alcys_Koch3D du 05/12/2006 * * Le point de départ est le très * interessant pde : Koch Curve , * Created 2 May 2005 by Daniel Shiffman. * pde que l'on peut trouver dans /processing/examples/math/ */ Tirette tireangle,tirediviseur; KochFractal k; PFont arial; float tempo,theta,phi; void setup() { size(700,700,P3D); arial=loadFont("ArialMT-12.vlw"); frameRate(30); k = new KochFractal(); tireangle = new Tirette(width/2, 30, width/2-100, -3.14f, 3.14f,"angle = ",arial); tirediviseur = new Tirette(width/2, 70, width/2-100, 0.02f, 0.33333f,"rapport = ",arial); tempo=0; textFont(arial, 12); } void draw() { background(0); fill(255); tireangle.actualiser(); tirediviseur.actualiser(); tireangle.dessinerbarre(); tirediviseur.dessinerbarre(); //text("angle = "+k.angle+" rapport = "+k.diviseur, 15, 630); tempo+=0.03f; translate(width/2, height/2, -1300); rotateX(theta); rotateY(phi); lights(); repere(); if(tempo<=1.0f){ k.render(); } else{ tempo=1; k.render(); if (k.getCount() < 5) { k.nextLevel(); tempo=0; } } } void mouseDragged(){ if(mouseY>90){ theta+=(mouseY-pmouseY)/100.0f; phi+=(mouseX-pmouseX)/100.0f;} } void mouseReleased(){ if(mouseY<50 &&mouseY>10){ k.angle=tireangle.valeur;k.restart();} if(mouseY<90 &&mouseY>50){ k.diviseur=tirediviseur.valeur;k.restart();} } void repere(){ pushMatrix(); noStroke(); translate(150,10,10); fill(255,0,0); box(300,20,20); translate(-140,140,0); fill(0,250,0); box(20,300,20); translate(0,-140,140); fill(0,0,250); box(20,20,300); popMatrix(); stroke(0); noFill(); }