world coordinate patch
authorplaa <plaa@180e2498-e6e9-4542-8430-84ac67f01cd8>
Mon, 5 Sep 2011 17:19:49 +0000 (17:19 +0000)
committerplaa <plaa@180e2498-e6e9-4542-8430-84ac67f01cd8>
Mon, 5 Sep 2011 17:19:49 +0000 (17:19 +0000)
git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@170 180e2498-e6e9-4542-8430-84ac67f01cd8

16 files changed:
ChangeLog
l10n/messages.properties
src/net/sf/openrocket/gui/configdialog/BulkheadConfig.java
src/net/sf/openrocket/gui/main/BasicFrame.java
src/net/sf/openrocket/gui/main/SimulationEditDialog.java
src/net/sf/openrocket/models/gravity/BasicGravityModel.java [deleted file]
src/net/sf/openrocket/models/gravity/GravityModel.java
src/net/sf/openrocket/models/gravity/WGSGravityModel.java
src/net/sf/openrocket/rocketcomponent/Bulkhead.java
src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java
src/net/sf/openrocket/simulation/BasicLandingStepper.java
src/net/sf/openrocket/simulation/SimulationOptions.java
src/net/sf/openrocket/unit/UnitGroup.java
src/net/sf/openrocket/util/WorldCoordinate.java
web/html/layout.css
web/htp/index.htp

index 334f0c9a1e1fd9d821f6c146235d94d8d2fdd9aa..a6a34dd0190abe8dc15ee2a1284e96af8dbb3a43 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,7 @@
 2011-08-28  Richard Graham
 
        * Patch for geodetic computations + coriolis effect
+       * Patch for enhanced gravity model
 
 2011-08-25  Sampo Niskanen
 
index 49ff997684a2e11ecaccaf1d39c9f12165f89f23..7fbef9311487685a99a4b71ed515c3adff242dcd 100644 (file)
@@ -646,7 +646,7 @@ RocketCompCfg.border.Foreshoulder = Fore shoulder
 !RocketCompCfg.lbl.Length = Length:
 
 ! BulkheadConfig
-BulkheadCfg.tab.Radius = Radius:
+BulkheadCfg.tab.Diameter = Diameter:
 BulkheadCfg.tab.Thickness = Thickness:
 BulkheadCfg.tab.General = General
 BulkheadCfg.tab.Generalproperties = General properties
@@ -802,7 +802,7 @@ ParachuteCfg.but.Reset = Reset
 ParachuteCfg.lbl.plusdelay = plus
 
 ! ShockCordConfig 
-ShockCordCfg.lbl.Shockcordlength = Shock cord length
+ShockCordCfg.lbl.Shockcordlength = Shock cord length:
 ShockCordCfg.lbl.Shockcordmaterial = Shock cord material:
 ShockCordCfg.lbl.Posrelativeto = Position relative to:
 ShockCordCfg.lbl.plus = plus
index a8b9dec488b93e325476c5fe9a446c2abf107e43..bc48b8b1d76f37562d79abc4c87c500bebf6bf4f 100644 (file)
@@ -11,17 +11,16 @@ import net.sf.openrocket.startup.Application;
 
 public class BulkheadConfig extends RingComponentConfig {
        private static final Translator trans = Application.getTranslator();
-
+       
        public BulkheadConfig(RocketComponent c) {
                super(c);
                
                JPanel tab;
                
-               //// Radius: and "Thickness:
-               tab = generalTab(trans.get("BulkheadCfg.tab.Radius"), null, null, 
+               tab = generalTab(trans.get("BulkheadCfg.tab.Diameter"), null, null,
                                trans.get("BulkheadCfg.tab.Thickness"));
                //// General and General properties
-               tabbedPane.insertTab(trans.get("BulkheadCfg.tab.General"), null, tab, 
+               tabbedPane.insertTab(trans.get("BulkheadCfg.tab.General"), null, tab,
                                trans.get("BulkheadCfg.tab.Generalproperties"), 0);
                tabbedPane.setSelectedIndex(0);
        }
index cd548056f5ba089dd5a3a8384a44c103493ae233..5fb99fb231f91016cbdda72023bb8c4be2dd5919 100644 (file)
@@ -41,7 +41,9 @@ import javax.swing.JMenuBar;
 import javax.swing.JMenuItem;
 import javax.swing.JOptionPane;
 import javax.swing.JPanel;
+import javax.swing.JPopupMenu;
 import javax.swing.JScrollPane;
+import javax.swing.JSpinner;
 import javax.swing.JSplitPane;
 import javax.swing.JTabbedPane;
 import javax.swing.JTextField;
@@ -49,6 +51,7 @@ import javax.swing.KeyStroke;
 import javax.swing.ListSelectionModel;
 import javax.swing.ScrollPaneConstants;
 import javax.swing.SwingUtilities;
+import javax.swing.border.BevelBorder;
 import javax.swing.border.TitledBorder;
 import javax.swing.event.TreeSelectionEvent;
 import javax.swing.event.TreeSelectionListener;
@@ -961,6 +964,28 @@ public class BasicFrame extends JFrame {
                menu.add(item);
                
 
+               menu.addSeparator();
+               
+
+               item = new JMenuItem("Test popup");
+               item.addActionListener(new ActionListener() {
+                       @Override
+                       public void actionPerformed(ActionEvent e) {
+                               log.user("Test popup selected");
+                               JPanel panel = new JPanel();
+                               panel.add(new JTextField(40));
+                               panel.add(new JSpinner());
+                               JPopupMenu popup = new JPopupMenu();
+                               popup.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
+                               popup.add(panel);
+                               popup.show(BasicFrame.this, -50, 100);
+                       }
+               });
+               menu.add(item);
+               
+
+
+
                return menu;
        }
        
index 92c2dac81aebc5a6d9c0a33b2c0c084338417346..00591c9462ac14d29fecfa2c0897a2ee022a56c2 100644 (file)
@@ -88,6 +88,8 @@ public class SimulationEditDialog extends JDialog {
        private static final Translator trans = Application.getTranslator();
        
        
+       // FIXME: NPE if FlightDataType has disappeared
+       
        public SimulationEditDialog(Window parent, Simulation s) {
                this(parent, s, 0);
        }
diff --git a/src/net/sf/openrocket/models/gravity/BasicGravityModel.java b/src/net/sf/openrocket/models/gravity/BasicGravityModel.java
deleted file mode 100644 (file)
index 80b65ea..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-package net.sf.openrocket.models.gravity;
-
-import net.sf.openrocket.util.WorldCoordinate;
-
-@Deprecated
-
-/**
- * A gravity model based on the International Gravity Formula of 1967.  The gravity
- * value is computed when the object is constructed and later returned as a static
- * value.
- * 
- * @author Sampo Niskanen <sampo.niskanen@iki.fi>
- */
-
-public class BasicGravityModel implements GravityModel {
-       
-       private final double g;
-       
-       /**
-        * Construct the static gravity model at the specific latitude (in degrees).
-        * @param latitude      the latitude in degrees (-90 ... 90)
-        */
-       public BasicGravityModel(double latitude) {
-               // TODO: HIGH: This model is wrong!!  Increases monotonically from -90 to 90
-               double sin = Math.sin(latitude * Math.PI / 180);
-               double sin2 = Math.sin(2 * latitude * Math.PI / 180);
-               g = 9.780327 * (1 + 0.0053024 * sin - 0.0000058 * sin2);
-       }
-       
-       //@Override
-       public double getGravity(double altitude) {
-               return g;
-       }
-       
-       //@Override
-       public int getModID() {
-               // Return constant mod ID
-               return (int) (g * 1000000);
-       }
-
-       @Override
-       public double getGravity(WorldCoordinate wc) {
-               // TODO Auto-generated method stub
-               return 0;
-       }
-       
-}
index 7feba89246ac3a78d4b75620ebb171a5806ff9ad..2c60b9b1543f8adbac741ca91e79fd2d0a8b9a76 100644 (file)
@@ -1,6 +1,7 @@
 package net.sf.openrocket.models.gravity;
 
 //import net.sf.openrocket.util.Monitorable;
+import net.sf.openrocket.util.Monitorable;
 import net.sf.openrocket.util.WorldCoordinate;
 
 /**
@@ -8,21 +9,12 @@ import net.sf.openrocket.util.WorldCoordinate;
  * 
  * @author Sampo Niskanen <sampo.niskanen@iki.fi>
  */
-public interface GravityModel { //extends Monitorable {
-
-       /**
-        * Compute the gravity at a specific altitude above equator.
-        * 
-        * @param altitude      the altitude at which to compute the gravity
-        * @return                      the gravitational acceleration
-        */
-       //public double getGravity(double altitude);
-       
+public interface GravityModel extends Monitorable {
        
        /**
         * Compute the gravity at a given world coordinate
-        * @param wc
-        * @return gravitational acceleration in m/s/s
+        * @param wc    the world coordinate location
+        * @return              gravitational acceleration in m/s/s
         */
        public double getGravity(WorldCoordinate wc);
        
index 3312df2f192b26a73a3d4c2ca4281ef699329678..9339c0eb7e5cd2380a0d56a333c57c7da4e45dd5 100644 (file)
@@ -8,12 +8,16 @@ import net.sf.openrocket.util.WorldCoordinate;
  * 
  * @author Richard Graham <richard@rdg.cc>
  */
-
 public class WGSGravityModel implements GravityModel {
        
        private WorldCoordinate lastWorldCoordinate;
        private double lastg;
        
+
+       private static int hit = 0;
+       private static int miss = 0;
+       
+       
        @Override
        public double getGravity(WorldCoordinate wc) {
                
@@ -21,12 +25,25 @@ public class WGSGravityModel implements GravityModel {
                if (wc != this.lastWorldCoordinate) {
                        this.lastg = calcGravity(wc);
                        this.lastWorldCoordinate = wc;
+                       
+                       miss++;
+               } else {
+                       hit++;
                }
+               System.out.println("GRAVITY MODEL:  hit=" + hit + " miss=" + miss);
                
                return this.lastg;
                
        }
        
+       
+       @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()));
index 88e2130fc9dd4820a19b28a133184b5bf3a481f6..24a1552ffd24460a36b2f54441d7a0828a9fded7 100644 (file)
@@ -6,7 +6,7 @@ import net.sf.openrocket.startup.Application;
 
 public class Bulkhead extends RadiusRingComponent {
        private static final Translator trans = Application.getTranslator();
-
+       
        public Bulkhead() {
                setOuterRadiusAutomatic(true);
                setLength(0.002);
index a37a823eb23b77328cbf25b3cfb7d8659c2e1466..002fd62c7bd4ec6ba8e8b099c40c01d26d473ce2 100644 (file)
@@ -32,7 +32,7 @@ public class BasicEventSimulationEngine implements SimulationEngine {
        
        private static final LogHelper log = Application.getLogger();
        
-       // TODO: HIGH: Allow selecting steppers
+       // TODO: MEDIUM: Allow selecting steppers
        private SimulationStepper flightStepper = new RK4SimulationStepper();
        private SimulationStepper landingStepper = new BasicLandingStepper();
        
index 80beb071e721e5d81b09a4e89debc0fe929b0aa5..0af17121516c476316eb3598816bb352558ce079 100644 (file)
@@ -10,6 +10,7 @@ public class BasicLandingStepper extends AbstractSimulationStepper {
        
        private static final double RECOVERY_TIME_STEP = 0.5;
        
+       // FIXME:  Add lat/lon code here as well
        
        @Override
        public SimulationStatus initialize(SimulationStatus status) throws SimulationException {
index d939869364b9f768da7fce7b53b1c41041f387e4..0c7f103a627dafcc388496c35ccc12f53c7044ba 100644 (file)
@@ -516,7 +516,6 @@ public class SimulationOptions implements ChangeSource, Cloneable {
                
                conditions.setAtmosphericModel(getAtmosphericModel());
                
-               //BasicGravityModel gravityModel = new BasicGravityModel(getLaunchLatitude());
                GravityModel gravityModel = new WGSGravityModel();
                
                conditions.setGravityModel(gravityModel);
index 4f1c5b13bde8934e72e05168ea9b9d21937a3941..ce380da58f74bb5789bde8c074ee28d0625612ec 100644 (file)
@@ -149,7 +149,7 @@ public class UnitGroup {
                UNITS_ANGLE = new UnitGroup();
                UNITS_ANGLE.addUnit(new DegreeUnit());
                UNITS_ANGLE.addUnit(new FixedPrecisionUnit("rad", 0.01));
-               UNITS_ANGLE.addUnit(new GeneralUnit(1.0/3437.74677078, "arcmin"));
+               UNITS_ANGLE.addUnit(new GeneralUnit(1.0 / 3437.74677078, "arcmin"));
                
                UNITS_DENSITY_BULK = new UnitGroup();
                UNITS_DENSITY_BULK.addUnit(new GeneralUnit(1000, "g/cm" + CUBED));
@@ -427,7 +427,7 @@ public class UnitGroup {
                return units.indexOf(u);
        }
        
-       private void addUnit(Unit u) {
+       public void addUnit(Unit u) {
                units.add(u);
        }
        
index 04a88f71b254f1902441e40e1ede1c4d088172b6..b3a047fdeee92e74ac34d06c96cc86c87eead9cc 100644 (file)
@@ -79,7 +79,7 @@ public class WorldCoordinate {
        
        @Override
        public int hashCode() {
-               return ((int) (1000 * lat * lon * alt));
+               return ((int) (1000 * (lat + lon + alt)));
        }
        
 }
index 356bdecc835d1213061ce1564d2ce6c58df15bdd..e0f5bf57faf4d73c697ce772a72b9d6f79e57096 100644 (file)
@@ -384,6 +384,8 @@ div.downloadbox {
        rgb(55,156,14) 8%,
        rgb(102,221,17) 90%
     );
+
+    white-space: nowrap;
 }
 
 div.downloadbox a.main {
index 5b840955115d57819291e8576647dd8e7d0cdc39..f91ac6b874625a1a591362beed53345ec7cace04 100644 (file)
@@ -25,7 +25,7 @@
 
    </div>
 
-    <p><strong>OpenRocket</strong> is an free, fully featured model
+    <p><strong>OpenRocket</strong> is a free, fully featured model
       rocket simulator that allows you to design and simulate your
       rockets before actually building and flying them.</p>