//************************************ public class Arc{ Vecteur axe,premscreen,derscreen,miscreen; Quat qua; float angle,rapport; int r,g,b; Vecteur[] points; public Arc( ){ this.points= new Vecteur[51]; } //******************************************************************** public Vecteur arrivee(Vecteur depart, float ang2){ Vecteur res; float ang=ang2/2; Quat q=new Quat(cos(ang),axe.mul(sin(ang))); res=q.tourner(depart); return res; } //************************************************************** void calculerPoints(Vecteur depart){ for(int i=0;i<50;i++){ points[i]=arrivee(depart,angle*i/50); } points[50]=arrivee(depart,angle); } //************************************************************** Quat donneQuat(){ return new Quat((float)Math.cos(angle/2)*rapport,axe.mul((float)Math.sin(angle/2)*rapport)); } //************************************************************** Vecteur initialiser(float Nu,float Mu,float pshi,Vecteur vdepart){ axe= new Vecteur(sin(Nu)*cos(Mu),sin(Nu)*sin(Mu),cos(Nu)); qua=new Quat(cos(pshi/2),axe.mul(sin(pshi/2))); angle=pshi; rapport=1; calculerPoints(vdepart); return points[50]; } void initialiser(Quat p,Quat q,Vecteur vdepart){ qua=Quat.mul(p,q); float[] tab=qua.getValue(); angle=tab[0]; axe=new Vecteur(tab[1],tab[2],tab[3]); axe.normalize(); rapport=1.0f; calculerPoints(vdepart); } //**************************************************************** void afficherArc(int n,int r,int g,int b){ float c=1.3; float rap=rayon/points[0].length()*1.1; noStroke(); beginShape(QUADS); for(int i=0;i