// A representation of a system of bodies with associated forces. Provides methods // for computing current mutual forces, updating the positions of bodies and drawing // the bodies in a CodeDraw object. // public interface CosmicSystem extends Drawable { // Returns a readable representation of this system. String toString(); // Returns the mass center of this system. Vector3 getMassCenter(); // Returns the overall mass of this system. double getMass(); // Returns the overall number of bodies contained in this system. int numberOfBodies(); // Returns the distance between the mass centers of 'this' and the specified system. //Precondition: cs != null double distanceTo(CosmicSystem cs); // Adds the force that the specified body exerts on each of this systems bodies to each of this // systems bodies. // Precondition: b != null void addForceFrom(Body b); // Adds the force that this system exerts on each of the bodies of 'cs' to the bodies in 'cs'. // For exact computations this means that for each body of 'this' its force on each body of // 'cs' is added to this body of 'cs'. // Precondition: cs != null void addForceTo(CosmicSystem cs); // Returns a list with all the bodies of 'this'. The order is not defined. BodyLinkedList getBodies(); // Moves each of the bodies of 'this' according to the previously accumulated forces and // resets all forces to zero. void update(); }