From e9eec0454b57c126cf245865eaed26f017396d4d Mon Sep 17 00:00:00 2001 From: SiboVG Date: Thu, 25 Aug 2022 22:04:29 +0200 Subject: [PATCH 1/3] [#236] Limit timestep setting to 0.01 s --- .../gui/dialogs/preferences/SimulationPreferencesPanel.java | 4 ++-- .../sf/openrocket/gui/simulation/SimulationOptionsPanel.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/dialogs/preferences/SimulationPreferencesPanel.java b/swing/src/net/sf/openrocket/gui/dialogs/preferences/SimulationPreferencesPanel.java index 88835fcdc..10af0a981 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/preferences/SimulationPreferencesPanel.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/preferences/SimulationPreferencesPanel.java @@ -135,7 +135,7 @@ public class SimulationPreferencesPanel extends PreferencesPanel { subsub.add(label, "gapright para"); DoubleModel m_ts = new DoubleModel(preferences, "TimeStep", UnitGroup.UNITS_TIME_STEP, - 0, 1); + 0.01, 1); spin = new JSpinner(m_ts.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); @@ -145,7 +145,7 @@ public class SimulationPreferencesPanel extends PreferencesPanel { unit = new UnitSelector(m_ts); unit.setToolTipText(tip); subsub.add(unit, ""); - slider = new BasicSlider(m_ts.getSliderModel(0, 0.2)); + slider = new BasicSlider(m_ts.getSliderModel(0.01, 0.2)); slider.setToolTipText(tip); subsub.add(slider, "w 100"); diff --git a/swing/src/net/sf/openrocket/gui/simulation/SimulationOptionsPanel.java b/swing/src/net/sf/openrocket/gui/simulation/SimulationOptionsPanel.java index 00cdb5e35..0ee297b2b 100644 --- a/swing/src/net/sf/openrocket/gui/simulation/SimulationOptionsPanel.java +++ b/swing/src/net/sf/openrocket/gui/simulation/SimulationOptionsPanel.java @@ -143,7 +143,7 @@ class SimulationOptionsPanel extends JPanel { subsub.add(label, "gapright para"); m = new DoubleModel(conditions, "TimeStep", UnitGroup.UNITS_TIME_STEP, - 0, 1); + 0.01, 1); spin = new JSpinner(m.getSpinnerModel()); spin.setEditor(new SpinnerEditor(spin)); @@ -153,7 +153,7 @@ class SimulationOptionsPanel extends JPanel { unit = new UnitSelector(m); unit.setToolTipText(tip); subsub.add(unit, ""); - slider = new BasicSlider(m.getSliderModel(0, 0.2)); + slider = new BasicSlider(m.getSliderModel(0.01, 0.2)); slider.setToolTipText(tip); subsub.add(slider, "w 100"); From ea2173b92c59048d41afcbeaf4cc1039c3d03aae Mon Sep 17 00:00:00 2001 From: SiboVG Date: Thu, 25 Aug 2022 22:04:48 +0200 Subject: [PATCH 2/3] Limit double model set value to max and min --- swing/src/net/sf/openrocket/gui/adaptors/DoubleModel.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/swing/src/net/sf/openrocket/gui/adaptors/DoubleModel.java b/swing/src/net/sf/openrocket/gui/adaptors/DoubleModel.java index 4e121af26..f605d0d0c 100644 --- a/swing/src/net/sf/openrocket/gui/adaptors/DoubleModel.java +++ b/swing/src/net/sf/openrocket/gui/adaptors/DoubleModel.java @@ -773,6 +773,14 @@ public class DoubleModel implements StateChangeListener, ChangeSource, Invalidat */ public void setValue(double v) { checkState(true); + + if (v > maxValue) { + log.debug("Clipping value " + v + " to maximum " + maxValue + " for " + this); + v = maxValue; + } else if (v < minValue) { + log.debug("Clipping value " + v + " to minimum " + minValue + " for " + this); + v = minValue; + } log.debug("Setting value " + v + " for " + this); if (setMethod == null) { From 5480b966523da8e2a78c2e7fe02e90f4902265e7 Mon Sep 17 00:00:00 2001 From: SiboVG Date: Sat, 27 Aug 2022 12:48:16 +0200 Subject: [PATCH 3/3] Use MathUtil.clamp for DoubleModel set clamping --- .../net/sf/openrocket/gui/adaptors/DoubleModel.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/swing/src/net/sf/openrocket/gui/adaptors/DoubleModel.java b/swing/src/net/sf/openrocket/gui/adaptors/DoubleModel.java index f605d0d0c..d7c58e352 100644 --- a/swing/src/net/sf/openrocket/gui/adaptors/DoubleModel.java +++ b/swing/src/net/sf/openrocket/gui/adaptors/DoubleModel.java @@ -774,12 +774,10 @@ public class DoubleModel implements StateChangeListener, ChangeSource, Invalidat public void setValue(double v) { checkState(true); - if (v > maxValue) { - log.debug("Clipping value " + v + " to maximum " + maxValue + " for " + this); - v = maxValue; - } else if (v < minValue) { - log.debug("Clipping value " + v + " to minimum " + minValue + " for " + this); - v = minValue; + double clampedValue = MathUtil.clamp(v, minValue, maxValue); + if (clampedValue != v) { + log.debug("Clamped value " + v + " to " + clampedValue + " for " + this); + v = clampedValue; } log.debug("Setting value " + v + " for " + this);