public class Resolveur { float deltaT=0.07f; float viscosite=2.95f; Systeme s; Ressort[] r; Vecteur pesanteur0=new Vecteur(0,500,0); Vecteur pesanteur; Vecteur forceExterieure; public Resolveur(Systeme s0,PApplet pap){ forceExterieure=new Vecteur(); s=s0; pesanteur=pesanteur0.cloner(); } public void faire1pas(){ RK1(); RK2(); RK2(); RK4(); border(); } void calculerLesForces(int niveau){ Vecteur vecteurChamps=pesanteur.ajouter(forceExterieure, 1); forceExterieure=forceExterieure.mul(0.95f); for( int i=0; i0.01f){ forceL=forceL.mul((forceL.length()-s.lesRessorts[i].longueur0)*s.lesRessorts[i].durete/forceL.length());// s.lesParticules[n0].force=s.lesParticules[n0].force.ajouter(forceL,1.0f/s.lesParticules[n0].masse); s.lesParticules[n1].force=s.lesParticules[n1].force.ajouter(forceL,-1.0f/s.lesParticules[n1].masse); } Vecteur dvit=(s.lesParticules[n1].v[niveau]).ajouter(s.lesParticules[n0].v[niveau],-1); s.lesParticules[n0].force=s.lesParticules[n0].force.ajouter(dvit,viscosite/s.lesParticules[n0].masse); s.lesParticules[n1].force=s.lesParticules[n1].force.ajouter(dvit,-viscosite/s.lesParticules[n1].masse); } } public void RK1(){ calculerLesForces(0); for( int i=0; i5000){ p.z=5000; s.lesParticules[i].v[0].z*=-1f; } if((p.z)<-5000){ p.z=-5000; s.lesParticules[i].v[0].z*=-1f; } if((p.x)<-5000){ p.x=-5000; s.lesParticules[i].v[0].x*=-1f; } if((p.x)>5000){ p.x=5000; s.lesParticules[i].v[0].x*=-1f; } if((p.y)<-5000){ p.y=-5000; s.lesParticules[i].v[0].y*=-1f; } if((p.y)>5000){ p.y=5000; s.lesParticules[i].v[0].y*=-1f; } } } }