From 0903ecfb0557f0770479619c7ff05421efd4c1bd Mon Sep 17 00:00:00 2001 From: Daniel_M_Williams Date: Sat, 1 Aug 2020 11:52:15 -0400 Subject: [PATCH 1/4] [fix][log][trace] Fixed log output to actually match intended output --- .../net/sf/openrocket/gui/scalefigure/AbstractScaleFigure.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swing/src/net/sf/openrocket/gui/scalefigure/AbstractScaleFigure.java b/swing/src/net/sf/openrocket/gui/scalefigure/AbstractScaleFigure.java index faba2ee35..e9519cce4 100644 --- a/swing/src/net/sf/openrocket/gui/scalefigure/AbstractScaleFigure.java +++ b/swing/src/net/sf/openrocket/gui/scalefigure/AbstractScaleFigure.java @@ -185,7 +185,7 @@ public abstract class AbstractScaleFigure extends JPanel { * Updates the figure shapes and figure size. */ public void updateFigure() { - log.trace(String.format("____ Updating %s to: %g user scale, %g overall scale", this.getClass().getSimpleName(), this.getAbsoluteScale(), this.scale)); + log.trace(String.format("____ Updating %s to: %g user scale, %g overall scale", this.getClass().getSimpleName(), this.userScale, this.scale)); updateSubjectDimensions(); updateCanvasSize(); From 834f4763f5e8024377bda0bd248f347d32003b7d Mon Sep 17 00:00:00 2001 From: Daniel_M_Williams Date: Sat, 1 Aug 2020 11:56:06 -0400 Subject: [PATCH 2/4] [refactor][cleanup] condensed some code lines (mostly to silence a linter warning) --- core/src/net/sf/openrocket/rocketcomponent/RingComponent.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/src/net/sf/openrocket/rocketcomponent/RingComponent.java b/core/src/net/sf/openrocket/rocketcomponent/RingComponent.java index 5dbf4d5ba..18473586c 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/RingComponent.java +++ b/core/src/net/sf/openrocket/rocketcomponent/RingComponent.java @@ -179,8 +179,7 @@ public abstract class RingComponent extends StructuralComponent implements Coaxi if (1 == instanceCount ) { cg = new Coordinate( length/2, 0, 0, instanceMass ); }else{ - Coordinate offsets[] = getInstanceOffsets(); - for( Coordinate c : offsets) { + for( Coordinate c : getInstanceOffsets() ) { c = c.setWeight( instanceMass ); cg = cg.average(c); } From 4825c7a1eeb1f490b256ea53fb66bce65d5612d6 Mon Sep 17 00:00:00 2001 From: Daniel_M_Williams Date: Sat, 1 Aug 2020 11:56:53 -0400 Subject: [PATCH 3/4] [fix][mass] Added a negative-mass check, which rarely happens during inconstitent component updates -- during scaling --- core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java index 8329569c3..f6ef7fa22 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java +++ b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java @@ -1930,7 +1930,7 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab protected static final double ringMass(double outerRadius, double innerRadius, double length, double density) { - return Math.PI * (MathUtil.pow2(outerRadius) - MathUtil.pow2(innerRadius)) * + return Math.PI * Math.max(MathUtil.pow2(outerRadius) - MathUtil.pow2(innerRadius),0) * length * density; } From fa6cceb4adc0fecb9b390cb1bc44a9087c55947d Mon Sep 17 00:00:00 2001 From: Daniel_M_Williams Date: Sat, 1 Aug 2020 11:58:05 -0400 Subject: [PATCH 4/4] [fix][optimize] Disables events while scaling a rocket. This _greatly_ speeds the scaling --- swing/src/net/sf/openrocket/gui/dialogs/ScaleDialog.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/swing/src/net/sf/openrocket/gui/dialogs/ScaleDialog.java b/swing/src/net/sf/openrocket/gui/dialogs/ScaleDialog.java index 0893ff55e..44d0a2df5 100644 --- a/swing/src/net/sf/openrocket/gui/dialogs/ScaleDialog.java +++ b/swing/src/net/sf/openrocket/gui/dialogs/ScaleDialog.java @@ -392,7 +392,11 @@ public class ScaleDialog extends JDialog { scale.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { + + final Rocket rocket = document.getRocket(); + rocket.enableEvents(false); doScale(); + rocket.enableEvents(true); ScaleDialog.this.document.getRocket().fireComponentChangeEvent( ComponentChangeEvent.AEROMASS_CHANGE);