public class Trajectoire{ boolean modif; int limite; Vector trajet; public Trajectoire(){ trajet=new Vector(); limite=2000; } public void addVecteur(Vecteur v){ if(trajet.size()==0) { trajet.addElement(v); modif=true; } else { float dis=(v.ajouter((Vecteur)trajet.elementAt(trajet.size()-1),-1)).length(); if(dis>4){ trajet.addElement(v); modif=true; } if (trajet.size()>limite) trajet.removeElementAt(0); } } public void dessiner(){ stroke(255,0,0); strokeWeight(2); noFill(); beginShape(); for(int i=0;i2 && modif){ Vecteur v1=((Vecteur)trajet.elementAt(siz-2)).normerCopie(1); Vecteur v2=((Vecteur)trajet.elementAt(siz-1)).normerCopie(1); Vecteur vz=v1.cross(v2).normalize(); Vecteur vu=(new Vecteur(-vz.y,vz.x,0)).normalize(); float ang=acos(vz.z); quatangent=new Quat(vu,ang,1); modif=false; } float[] t=quatangent.getValue(); rotate(t[0],t[1],t[2],t[3]); } }