Volume levolume; Vecteur origine1; float angleX,angleY,bangleX,bangleY,tempo; //=================================================== void setup(){ size(750,400); levolume=new Volume(800); origine1=new Vecteur(-40000,-12200,-18000); } //=================================================== void loop(){ tempo+=0.05f; float si=abs(sin(0.1f*tempo));//background(0); background(85+150*si*si*si,140*si,150*si*si); modifierparam(); levolume.dessiner(); } //=================================================== void mousePressed(){ levolume.ligne.creerControles(); } // ================================================== void modifierparam(){ translate(origine1.x,origine1.y,origine1.z); bangleX=(mouseY)/100.0f; bangleY=(mouseX)/100.0f;// angleX+=(bangleX-angleX)/10.0f; angleY+=(bangleY-angleY)/10.0f; //rotateX(angleX); //rotateY(angleY); } void afficherRepere(float lon){ stroke(255,0,0); line(0,0,0,lon,0,0); stroke(0,255,0); line(0,0,0,0,lon,0); stroke(0,0,255); line(0,0,0,0,0,lon); } //=================================================== class Volume{ float diag; PBezier ligne; public Volume(float diag){ this.diag=diag; ligne=new PBezier(); } //==================================================== void dessiner(){ ligne.calculerTout(); for(float i=0;i<400;i++){ push(); translate(i*200,0,0); scale(diag); stroke(220+35*abs(sin(0.05f*i)),200+55*sin(0.04f*i),200+55*cos(0.1f*i)); ligne.dessiner(); scale(1); pop();} } } //=================================================== //=================================================== class PBezier{ int ordre; Vecteur[][] table; Vecteur[] courbe,controles; public PBezier(){ ordre=14 ; courbe=new Vecteur[101]; controles=new Vecteur[ordre]; creerControles(); table=new Vecteur[ordre+1][ordre+1]; calculerTout(); } void creerControles(){ for(int i=0;i