float angleX,angleY,bangleX,bangleY,tempo,rayon,epais,cote,cost,sint; Triangle letriangle; boolean arret; // ++++++++++++++++++++++++++++++++++++++++ // ++++++++++++++++++++++++++++++++++++++++ void setup(){ size(750,500); epais=200; tempo=0; arret=false; rayon=800; cote=2*rayon*cos(PI/6); letriangle=new Triangle(new Vecteur(0,0,rayon), new Vecteur(rayon*cos(-5*PI/6),0,rayon*sin(-5*PI/6)), new Vecteur(rayon*cos(-PI/6),0,rayon*sin(-PI/6)) ); } // ++++++++++++++++++++++++++++++++++++++++ // ++++++++++++++++++++++++++++++++++++++++ void loop(){ if(!arret){ if(abs((tempo-PI)%PI)<0.1) {tempo+=0.005f;}else{tempo+=0.05f;}} cost=cos(tempo); sint=sin(tempo); clear(); background(50+30*cost,25,85+sint*40); modifierparam(); for(int i=0;i<4;i++){ push(); rotateY(i*PI/2); translate(0,0,cote/2+rayon/3+150); letriangle.evoluer(tempo); pop(); } } void mousePressed(){arret=!arret;} // ++++++++++++++++++++++++++++++++++++++++ // ++++++++++++++++++++++++++++++++++++++++ void modifierparam(){ bangleX=-0.4f+(-mouseY+100)/50.0f; bangleY=(mouseX-width/2.0f)/50.0f;// angleX+=(bangleX-angleX)/10.0f; angleY+=(bangleY-angleY)/10.0f; translate(200,200,-1700); rotateX(angleX); rotateY(angleY); } // ++++++++++++++++++++++++++++++++++++++++ // ++++++++++++++++++++++++++++++++++++++++ class Triangle{ Figure[] pieces; Vecteur aa,bb,cc,gg,ii,jj,kk,nn,mm,rr,ss; public Triangle(Vecteur a,Vecteur b,Vecteur c){ aa=a; bb=b; cc=c; gg=Vecteur.centregravite(aa,bb,cc); ii=Vecteur.comb(0.5f,aa,0.5f,cc); jj=Vecteur.comb(0.5f,aa,0.5f,bb); kk=Vecteur.comb(0.5f,bb,0.5f,cc); nn=Vecteur.comb(0.5f,ii,0.5f,cc); mm=Vecteur.comb(0.5f,bb,0.5f,jj); ss=Vecteur.centregravite(kk,cc,ii); rr=Vecteur.centregravite(kk,bb,jj); pieces=new Figure[5]; //piece 0 Vecteur a0,j0,r0,g0,s0,i0; a0=new Vecteur(0,0,rayon*3/4); j0=new Vecteur(cote/4,0,0); r0=new Vecteur(cote/4,0,-rayon/2); g0=new Vecteur(0,0,-rayon/4); s0=new Vecteur(-cote/4,0,-rayon/2); i0=new Vecteur(-cote/4,0,0); Vecteur[] v0={a0,j0,r0,g0,s0,i0}; Repere rep=new Repere( Vecteur.comb(0.5f,ii,0.5f,jj), jj.ajouter(ii,-1), aa.ajouter(kk,-1) ); pieces[0]=new Figure(v0,rep); //piece 1 Vecteur j1,m1,r1; j1=new Vecteur(0,0,0); m1=new Vecteur(cote/4,0,0); r1=new Vecteur(cote/4,0,-rayon/4); Vecteur[] v1={j1,m1,r1}; Repere rep1=new Repere(jj, bb.ajouter(aa,-1), jj.ajouter(cc,-1) ); pieces[1]=new Figure(v1,rep1); //piece 2 Vecteur i2,n2,s2; i2=new Vecteur(0,0,0); n2=new Vecteur(cote/4,0,0); s2=new Vecteur(cote/4,0,-rayon/4); Vecteur[] v2={i2,n2,s2}; Repere rep2=new Repere(ii, cc.ajouter(aa,-1), ii.ajouter(bb,-1) ); pieces[2]=new Figure(v2,rep2); //piece 3 Vecteur k3,g3,r3,m3,b3; k3=new Vecteur(0,0,0); g3=new Vecteur(rayon/4,0,-cote/4); r3=new Vecteur(rayon/2,0,0); m3=new Vecteur(rayon*3/4,0,0); b3=new Vecteur(rayon*3/4,0,cote/4); Vecteur[] v3={k3,g3,r3,m3,b3}; Repere rep3=new Repere(kk, jj.ajouter(cc,-1), bb.ajouter(aa,-1) ); pieces[3]=new Figure(v3,rep3); //piece 4 Vecteur k4,g4,s4,n4,c4; k4=new Vecteur(0,0,0); g4=new Vecteur(rayon/4,0,-cote/4); s4=new Vecteur(rayon/2,0,0); n4=new Vecteur(rayon*3/4,0,0); c4=new Vecteur(rayon*3/4,0,cote/4); Vecteur[] v4={k4,g4,s4,n4,c4}; Repere rep4=new Repere(kk, ii.ajouter(bb,-1), cc.ajouter(aa,-1) ); pieces[4]=new Figure(v4,rep4); } public void evoluer(float t){ for(int i=0;i