From 049763368111f6ed9fdea49bc1bbca6a8d082ced Mon Sep 17 00:00:00 2001 From: plaa Date: Mon, 5 Sep 2011 17:19:49 +0000 Subject: [PATCH] world coordinate patch git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@170 180e2498-e6e9-4542-8430-84ac67f01cd8 --- ChangeLog | 1 + l10n/messages.properties | 4 +- .../gui/configdialog/BulkheadConfig.java | 7 ++- .../sf/openrocket/gui/main/BasicFrame.java | 25 ++++++++++ .../gui/main/SimulationEditDialog.java | 2 + .../models/gravity/BasicGravityModel.java | 47 ------------------- .../models/gravity/GravityModel.java | 16 ++----- .../models/gravity/WGSGravityModel.java | 19 +++++++- .../openrocket/rocketcomponent/Bulkhead.java | 2 +- .../BasicEventSimulationEngine.java | 2 +- .../simulation/BasicLandingStepper.java | 1 + .../simulation/SimulationOptions.java | 1 - src/net/sf/openrocket/unit/UnitGroup.java | 4 +- .../sf/openrocket/util/WorldCoordinate.java | 2 +- web/html/layout.css | 2 + web/htp/index.htp | 2 +- 16 files changed, 64 insertions(+), 73 deletions(-) delete mode 100644 src/net/sf/openrocket/models/gravity/BasicGravityModel.java diff --git a/ChangeLog b/ChangeLog index 334f0c9a..a6a34dd0 100644 --- 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 diff --git a/l10n/messages.properties b/l10n/messages.properties index 49ff9976..7fbef931 100644 --- a/l10n/messages.properties +++ b/l10n/messages.properties @@ -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 diff --git a/src/net/sf/openrocket/gui/configdialog/BulkheadConfig.java b/src/net/sf/openrocket/gui/configdialog/BulkheadConfig.java index a8b9dec4..bc48b8b1 100644 --- a/src/net/sf/openrocket/gui/configdialog/BulkheadConfig.java +++ b/src/net/sf/openrocket/gui/configdialog/BulkheadConfig.java @@ -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); } diff --git a/src/net/sf/openrocket/gui/main/BasicFrame.java b/src/net/sf/openrocket/gui/main/BasicFrame.java index cd548056..5fb99fb2 100644 --- a/src/net/sf/openrocket/gui/main/BasicFrame.java +++ b/src/net/sf/openrocket/gui/main/BasicFrame.java @@ -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; } diff --git a/src/net/sf/openrocket/gui/main/SimulationEditDialog.java b/src/net/sf/openrocket/gui/main/SimulationEditDialog.java index 92c2dac8..00591c94 100644 --- a/src/net/sf/openrocket/gui/main/SimulationEditDialog.java +++ b/src/net/sf/openrocket/gui/main/SimulationEditDialog.java @@ -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 index 80b65ea2..00000000 --- a/src/net/sf/openrocket/models/gravity/BasicGravityModel.java +++ /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 - */ - -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; - } - -} diff --git a/src/net/sf/openrocket/models/gravity/GravityModel.java b/src/net/sf/openrocket/models/gravity/GravityModel.java index 7feba892..2c60b9b1 100644 --- a/src/net/sf/openrocket/models/gravity/GravityModel.java +++ b/src/net/sf/openrocket/models/gravity/GravityModel.java @@ -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 */ -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); diff --git a/src/net/sf/openrocket/models/gravity/WGSGravityModel.java b/src/net/sf/openrocket/models/gravity/WGSGravityModel.java index 3312df2f..9339c0eb 100644 --- a/src/net/sf/openrocket/models/gravity/WGSGravityModel.java +++ b/src/net/sf/openrocket/models/gravity/WGSGravityModel.java @@ -8,12 +8,16 @@ import net.sf.openrocket.util.WorldCoordinate; * * @author Richard Graham */ - 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())); diff --git a/src/net/sf/openrocket/rocketcomponent/Bulkhead.java b/src/net/sf/openrocket/rocketcomponent/Bulkhead.java index 88e2130f..24a1552f 100644 --- a/src/net/sf/openrocket/rocketcomponent/Bulkhead.java +++ b/src/net/sf/openrocket/rocketcomponent/Bulkhead.java @@ -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); diff --git a/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java b/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java index a37a823e..002fd62c 100644 --- a/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java +++ b/src/net/sf/openrocket/simulation/BasicEventSimulationEngine.java @@ -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(); diff --git a/src/net/sf/openrocket/simulation/BasicLandingStepper.java b/src/net/sf/openrocket/simulation/BasicLandingStepper.java index 80beb071..0af17121 100644 --- a/src/net/sf/openrocket/simulation/BasicLandingStepper.java +++ b/src/net/sf/openrocket/simulation/BasicLandingStepper.java @@ -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 { diff --git a/src/net/sf/openrocket/simulation/SimulationOptions.java b/src/net/sf/openrocket/simulation/SimulationOptions.java index d9398693..0c7f103a 100644 --- a/src/net/sf/openrocket/simulation/SimulationOptions.java +++ b/src/net/sf/openrocket/simulation/SimulationOptions.java @@ -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); diff --git a/src/net/sf/openrocket/unit/UnitGroup.java b/src/net/sf/openrocket/unit/UnitGroup.java index 4f1c5b13..ce380da5 100644 --- a/src/net/sf/openrocket/unit/UnitGroup.java +++ b/src/net/sf/openrocket/unit/UnitGroup.java @@ -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); } diff --git a/src/net/sf/openrocket/util/WorldCoordinate.java b/src/net/sf/openrocket/util/WorldCoordinate.java index 04a88f71..b3a047fd 100644 --- a/src/net/sf/openrocket/util/WorldCoordinate.java +++ b/src/net/sf/openrocket/util/WorldCoordinate.java @@ -79,7 +79,7 @@ public class WorldCoordinate { @Override public int hashCode() { - return ((int) (1000 * lat * lon * alt)); + return ((int) (1000 * (lat + lon + alt))); } } diff --git a/web/html/layout.css b/web/html/layout.css index 356bdecc..e0f5bf57 100644 --- a/web/html/layout.css +++ b/web/html/layout.css @@ -384,6 +384,8 @@ div.downloadbox { rgb(55,156,14) 8%, rgb(102,221,17) 90% ); + + white-space: nowrap; } div.downloadbox a.main { diff --git a/web/htp/index.htp b/web/htp/index.htp index 5b840955..f91ac6b8 100644 --- a/web/htp/index.htp +++ b/web/htp/index.htp @@ -25,7 +25,7 @@ -

OpenRocket is an free, fully featured model +

OpenRocket is a free, fully featured model rocket simulator that allows you to design and simulate your rockets before actually building and flying them.

-- 2.47.2