Scratch last, use propertychangelistener to invalidate cached webthickness.
authorBill Kuker <bkuker@billkuker.com>
Thu, 2 Dec 2010 01:23:35 +0000 (01:23 +0000)
committerBill Kuker <bkuker@billkuker.com>
Thu, 2 Dec 2010 01:23:35 +0000 (01:23 +0000)
Fix webthicknes for one-end inhibited fat grains

src/com/billkuker/rocketry/motorsim/grain/util/ExtrudedShapeGrain.java

index 62fc8b9964b703fe042006625b156c2f7514bded..37e948ca59969c00ea29accc41ca09e4efdcf859 100644 (file)
@@ -5,6 +5,8 @@ import java.awt.Shape;
 import java.awt.geom.AffineTransform;\r
 import java.awt.geom.Ellipse2D;\r
 import java.awt.geom.Rectangle2D;\r
+import java.beans.PropertyChangeEvent;\r
+import java.beans.PropertyChangeListener;\r
 \r
 import javax.measure.quantity.Area;\r
 import javax.measure.quantity.Length;\r
@@ -32,6 +34,15 @@ public abstract class ExtrudedShapeGrain extends ExtrudedGrain {
                        }\r
                }\r
        };\r
+       \r
+       public ExtrudedShapeGrain(){\r
+               addPropertyChangeListener(new PropertyChangeListener() {\r
+                       @Override\r
+                       public void propertyChange(PropertyChangeEvent evt) {\r
+                               webThickness = null;\r
+                       }\r
+               });\r
+       }\r
 \r
        protected BurningShape xsection = new BurningShape();\r
 \r
@@ -105,9 +116,9 @@ public abstract class ExtrudedShapeGrain extends ExtrudedGrain {
                }\r
                webThickness = Amount.valueOf(guess, SI.MILLIMETER);\r
                \r
-               //TODO Need to check # of burning ends!\r
-               if (webThickness.isGreaterThan(getLength().divide(2)))\r
-                       webThickness = getLength().divide(2);\r
+               int ends = numberOfBurningEnds(Amount.valueOf(0, SI.MILLIMETER));\r
+               if (ends != 0 && webThickness.isGreaterThan(getLength().divide(ends)))\r
+                       webThickness = getLength().divide(ends);\r
                \r
                return webThickness;\r
        }\r