diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 32858aa..0000000 --- a/.gitignore +++ /dev/null @@ -1,12 +0,0 @@ -*.class - -# Mobile Tools for Java (J2ME) -.mtj.tmp/ - -# Package Files # -*.jar -*.war -*.ear - -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* diff --git a/src/main/java/dal/gravity/AbstractPendulum.java b/AbstractPendulum.java similarity index 67% rename from src/main/java/dal/gravity/AbstractPendulum.java rename to AbstractPendulum.java index 1b59a5a..28b4cbb 100644 --- a/src/main/java/dal/gravity/AbstractPendulum.java +++ b/AbstractPendulum.java @@ -4,32 +4,38 @@ * Represents a pendulum */ public abstract class AbstractPendulum { - - + /* instance variables - string length, point mass, angular displacement * at t=0, constant for local gravitational field in m/s^2 (e.g., 9.81 on Earth) */ + public static double gravity = 9.80665; private double stringLength, pointMass; protected double theta0; - protected double g; + public interface gravityInter { + public static void GravityConstant(double gra) { + gravity = gra; + } + public static double getGravitationalField() { + return gravity; + } + } /** * Creates a new Pendulum instance using * inLength: the string length (>0) * inMass: the point mass (>0) * inTheta0: angular displacement at t=0 (0<=theta0) - * inG: gravitational field value to use + * GRAVITY: Always the gravitational field value to use from now on. Replaces inG. */ - public AbstractPendulum (double inLength, double inMass, double inTheta0, double inG) { + public AbstractPendulum (double inLength, double inMass, double inTheta0) { if (validStringLength (inLength)) stringLength = inLength; else throw new IllegalArgumentException ("invalid string length: " + inLength); if (validPointMass(inMass)) pointMass = inMass; else throw new IllegalArgumentException ("invalid point mass: " + inMass); if (validDisplacement (inTheta0)) theta0 = inTheta0; - else throw new IllegalArgumentException - ("invalid angular displacement: " + inTheta0); - if (validGC (inG)) g = inG; - else throw new IllegalArgumentException ("invalid local gravitational field: " + inG); + else throw new IllegalArgumentException ("invalid angular displacement: " + inTheta0); + if (validGC (gravity)) gravityInter.getGravitationalField(); + else throw new IllegalArgumentException ("invalid local gravitational field: " + gravity); } private boolean validDisplacement (double val) { return (val >= 0); } @@ -42,7 +48,6 @@ public AbstractPendulum (double inLength, double inMass, double inTheta0, double public double getPointMass () { return pointMass; } public double getStringLength () { return stringLength; } - - public double getGravitationalField () { return g; } - + + public double grav = gravityInter.getGravitationalField();//get the grav number in the gravityInter } diff --git a/src/main/java/dal/gravity/PendulumRunner.java b/PendulumRunner.java similarity index 99% rename from src/main/java/dal/gravity/PendulumRunner.java rename to PendulumRunner.java index 2c61033..d549057 100644 --- a/src/main/java/dal/gravity/PendulumRunner.java +++ b/PendulumRunner.java @@ -3,6 +3,7 @@ import java.text.NumberFormat; /** + * * compares the values of a simple pendulum using the harmonic motion equation * versus the Euler algorithm approximation */ diff --git a/src/main/java/dal/gravity/RegularPendulum.java b/RegularPendulum.java similarity index 82% rename from src/main/java/dal/gravity/RegularPendulum.java rename to RegularPendulum.java index 65b9014..6248e55 100644 --- a/src/main/java/dal/gravity/RegularPendulum.java +++ b/RegularPendulum.java @@ -1,6 +1,7 @@ package dal.gravity; /** + * * Represents a pendulum */ public class RegularPendulum extends AbstractEarthPendulum { @@ -18,7 +19,7 @@ public RegularPendulum (double inLength, double inMass, double inTheta0, dissipation = inDiss; lastVel = 0; lastTheta = this.getMaxAngularDisplacement (); - lastAccel = -(this.getGravitationalField () / this.getStringLength ())*Math.sin (lastTheta); + lastAccel = -(grav/ this.getStringLength ())*Math.sin (lastTheta); } public RegularPendulum (double inLength, double inMass, double inTheta0, @@ -30,7 +31,7 @@ public void step () { iterations++; lastTheta = lastTheta + lastVel*delta; lastVel = lastVel + lastAccel*delta; - lastAccel = - dissipation*lastVel - this.getGravitationalField () / this.getStringLength () * Math.sin (lastTheta); + lastAccel = - dissipation*lastVel - grav/ this.getStringLength () * Math.sin (lastTheta); } public double getLastTheta () { return lastTheta; } diff --git a/src/main/java/dal/gravity/SimplePendulum.java b/SimplePendulum.java similarity index 83% rename from src/main/java/dal/gravity/SimplePendulum.java rename to SimplePendulum.java index 5c7bf30..da78500 100644 --- a/src/main/java/dal/gravity/SimplePendulum.java +++ b/SimplePendulum.java @@ -1,6 +1,7 @@ package dal.gravity; /** + * * Represents pendulums exhibiting (approximately) simple harmonic motion */ public class SimplePendulum extends AbstractEarthPendulum { @@ -15,9 +16,9 @@ public class SimplePendulum extends AbstractEarthPendulum { */ public SimplePendulum (double inLength, double inMass, double inTheta0) { super (inLength, inMass, inTheta0); - angularFrequency = Math.sqrt (this.getGravitationalField () / this.getStringLength ()); + angularFrequency = Math.sqrt (grav/ this.getStringLength ()); periodOfMotion = 2 * Math.PI - * Math.sqrt (this.getStringLength () / this.getGravitationalField ()); + * Math.sqrt (this.getStringLength () / grav); } /** diff --git a/src/main/java/dal/gravity/AbstractEarthPendulum.java b/src/main/java/dal/gravity/AbstractEarthPendulum.java deleted file mode 100644 index 87b3460..0000000 --- a/src/main/java/dal/gravity/AbstractEarthPendulum.java +++ /dev/null @@ -1,23 +0,0 @@ -package dal.gravity; - - -/** - * Represents a pendulum on the planet Earth - */ -public abstract class AbstractEarthPendulum extends AbstractPendulum { - - /** gravitational constant */ - public static final double GRAVITY = 9.80665; - - /** - * Creates a new Pendulum instance using - * inLength: the string length (>0) - * inMass: the point mass (>0) - * inTheta0: angular displacement at t=0 (0<=theta0) - */ - public AbstractEarthPendulum (double inLength, double inMass, double inTheta0) { - super (inLength, inMass, inTheta0, GRAVITY); - } - -} -