import java.util.*; public class Block extends PhysicsElement { private static int id=0; private final float mass; protected Vector2D pos_t; private Vector2D pos_tPlusDelta; private Vector2D speed_t; private Vector2D speed_tPlusDelta; private Vector2D a_t, a_tMinusDelta; private Vector springs; // This Vector is a growable array of objects // it has nothing to do with Vector2D. private Block(){ // nobody can create a block without state super(id++); mass=0; } public Block(float mass, Vector2D position, Vector2D speed){ super(id++); this.mass = mass; pos_t = position; this.speed_t = speed; a_tMinusDelta = new Vector2D(); // it is not quite right, aproximation springs = new Vector(); } public void attachSpring (Spring spring) { springs.add(spring); } public void detachSpring (Spring spring) { springs.remove(spring); } public Vector2D getPosition() { return pos_t; } public void computeNextState(double delta_t) { Vector2D force = new Vector2D(); Spring spring; for (int i=0; i