Class Orbit implements Runnable - Applet, handles user interaction public methods start stop suspend run paint Class Particle - Object, essentially massless particle instance properties double x, y, vx, vy int color private methods Class N2FCsimulator - Object implements Runnable, singleton, simulation system properties particles - ArrayList of Particle[] public methods start stop run integrate arguments: double[] {v0, theta0} double timestep int iterations double scale returns ArrayList of ArrayList of double[] (orbit path) private methods integrator arguments: double[] {rx, ry, vx, vy} double timestep returns double[] {rx, ry, vx, vy} macc acc http://download.oracle.com/javase/1.4.2/docs/api/java/awt/event/InputEvent.html http://download.oracle.com/javase/6/docs/api/java/util/Collections.html http://www.learn-java-tutorial.com/Java-Collections.cfm http://download.oracle.com/javase/tutorial/jdbc/basics/examples/OutputApplet.java http://profs.etsmtl.ca/mmcguffin/learn/java/04-mouseInput/ file:///Users/dakotablair/Documents/TenSen/research/orbit/trunk/java/Orbit.html A user story The user enters the initial conditions. The user clicks plot. The user particle and two perturbed particles are created. Their paths are simulated in a thread. The simulator notifies the applet after the user particle has moved farther than a pixel from the last paint. The applet paints the path, using clipping and double-buffering. The simulator stops at the user-specified iteration. public methods simulate arguments: double timestep int iterations returns ArrayList orbit path