version 1.1.9
[debian/openrocket] / src / net / sf / openrocket / models / gravity / WGSGravityModel.java
index 3312df2f192b26a73a3d4c2ca4281ef699329678..41fb5c233863cd2fc43a19c35ea1211c0bba2d4e 100644 (file)
@@ -4,16 +4,17 @@ import net.sf.openrocket.util.MathUtil;
 import net.sf.openrocket.util.WorldCoordinate;
 
 /**
- * A gravity model based on the WGS84 elipsoid.
+ * A gravity model based on the WGS84 ellipsoid.
  * 
  * @author Richard Graham <richard@rdg.cc>
  */
-
 public class WGSGravityModel implements GravityModel {
        
+       // Cache the previously computed value
        private WorldCoordinate lastWorldCoordinate;
        private double lastg;
        
+       
        @Override
        public double getGravity(WorldCoordinate wc) {
                
@@ -27,6 +28,14 @@ public class WGSGravityModel implements GravityModel {
                
        }
        
+       
+       @Override
+       public int getModID() {
+               // The model is immutable, so it can return a constant mod ID
+               return 0;
+       }
+       
+       
        private double calcGravity(WorldCoordinate wc) {
                
                double sin2lat = MathUtil.pow2(Math.sin(wc.getLatitudeRad()));
@@ -35,7 +44,7 @@ public class WGSGravityModel implements GravityModel {
                // Apply correction due to altitude. Note this assumes a spherical earth, but it is a small correction
                // so it probably doesn't really matter. Also does not take into account gravity of the atmosphere, again
                // correction could be done but not really necessary.
-               double g_alt = g_0 * Math.pow(WorldCoordinate.REARTH / (WorldCoordinate.REARTH + wc.getAltitude()), 2);
+               double g_alt = g_0 * MathUtil.pow2(WorldCoordinate.REARTH / (WorldCoordinate.REARTH + wc.getAltitude()));
                
                return g_alt;
        }