Closed TODO to shift grain based on ends inhibited
authorBill Kuker <bkuker@billkuker.com>
Mon, 8 Nov 2010 15:17:07 +0000 (15:17 +0000)
committerBill Kuker <bkuker@billkuker.com>
Mon, 8 Nov 2010 15:17:07 +0000 (15:17 +0000)
src/com/billkuker/rocketry/motorsim/grain/util/ExtrudedShapeGrain.java

index 513f5cad5f632f697145e6169a359b329d433ba8..d734334500fc384dcf0ca79987f8b4e692e40035 100644 (file)
@@ -2,6 +2,7 @@ package com.billkuker.rocketry.motorsim.grain.util;
 \r
 import java.awt.Rectangle;\r
 import java.awt.Shape;\r
+import java.awt.geom.AffineTransform;\r
 import java.awt.geom.Ellipse2D;\r
 import java.awt.geom.Rectangle2D;\r
 \r
@@ -124,12 +125,19 @@ public abstract class ExtrudedShapeGrain extends ExtrudedGrain {
                \r
                double rLenmm = rLen.doubleValue(SI.MILLIMETER);\r
                \r
-               //TODO Shift up or down based on burning ends\r
                for( java.awt.geom.Area a : ShapeUtil.separate(getCrossSection(regression))){\r
                        Rectangle2D bounds = a.getBounds2D();\r
                        Rectangle2D side = new Rectangle2D.Double(bounds.getMinX(), -rLenmm/2.0, bounds.getWidth(), rLenmm);\r
                        res.add(new java.awt.geom.Area(side));\r
                }\r
+               \r
+               //Shift up or down based on burning ends\r
+               if ( isForeEndInhibited() ){\r
+                       res.transform(AffineTransform.getTranslateInstance(0, +rLenmm/2.0));\r
+               }\r
+               if ( isAftEndInhibited() ){\r
+                       res.transform(AffineTransform.getTranslateInstance(0, -rLenmm/2.0));\r
+               }\r
                return res;\r
        }\r
        \r