From 0a7d33961ea884bfa5bdbf6f048d29b3252729be Mon Sep 17 00:00:00 2001 From: Bill Kuker Date: Thu, 2 Dec 2010 01:23:35 +0000 Subject: [PATCH] Scratch last, use propertychangelistener to invalidate cached webthickness. Fix webthicknes for one-end inhibited fat grains --- .../motorsim/grain/util/ExtrudedShapeGrain.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/com/billkuker/rocketry/motorsim/grain/util/ExtrudedShapeGrain.java b/src/com/billkuker/rocketry/motorsim/grain/util/ExtrudedShapeGrain.java index 62fc8b9..37e948c 100644 --- a/src/com/billkuker/rocketry/motorsim/grain/util/ExtrudedShapeGrain.java +++ b/src/com/billkuker/rocketry/motorsim/grain/util/ExtrudedShapeGrain.java @@ -5,6 +5,8 @@ import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Ellipse2D; import java.awt.geom.Rectangle2D; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; import javax.measure.quantity.Area; import javax.measure.quantity.Length; @@ -32,6 +34,15 @@ public abstract class ExtrudedShapeGrain extends ExtrudedGrain { } } }; + + public ExtrudedShapeGrain(){ + addPropertyChangeListener(new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + webThickness = null; + } + }); + } protected BurningShape xsection = new BurningShape(); @@ -105,9 +116,9 @@ public abstract class ExtrudedShapeGrain extends ExtrudedGrain { } webThickness = Amount.valueOf(guess, SI.MILLIMETER); - //TODO Need to check # of burning ends! - if (webThickness.isGreaterThan(getLength().divide(2))) - webThickness = getLength().divide(2); + int ends = numberOfBurningEnds(Amount.valueOf(0, SI.MILLIMETER)); + if (ends != 0 && webThickness.isGreaterThan(getLength().divide(ends))) + webThickness = getLength().divide(ends); return webThickness; } -- 2.30.2