class Simulation implements Runnable{ private DrawSim plot; private ThreeBody my_3body; private double told,tnew,var[],new_var[]; private double TIMESTEP=0.01; private int M=8; private double GM_S=39.489,v_J=6.284,GM_J=0.0,v_E=10.0; private double x_J=1.0, x_E=0.5; private double RCUT=0.01; Simulation(DrawSim plotting, ThreeBody oneDlocal){ my_3body=oneDlocal; plot=plotting; var = new double[M]; new_var = new double[M]; } public void setGM_J(double z){ GM_J=z; } public void run(){ int j; var[0]=x_J; var[1]=0.0; var[2]=0.0; var[3]=v_J; var[4]=x_E; var[5]=0.0; var[6]=0.0; var[7]=v_E; told=0.0; plot.clearScreen(); my_3body.runner.suspend(); while(true){ // update coords using runge-kutta tnew=told+TIMESTEP; rk4(var,new_var,told,TIMESTEP); // plot new point on trajectory plot.addXToScreen_J(var[0],var[2]); plot.addXToScreen_E(var[4],var[6]); told=tnew; for(j=0;j