]> git.gag.com Git - sw/motorsim/commitdiff
Since area calc can do shapes with holes just expose the final area and use it
authorBill Kuker <bkuker@billkuker.com>
Wed, 15 Apr 2009 18:31:09 +0000 (18:31 +0000)
committerBill Kuker <bkuker@billkuker.com>
Wed, 15 Apr 2009 18:31:09 +0000 (18:31 +0000)
src/com/billkuker/rocketry/motorsim/grain/BurningShape.java
src/com/billkuker/rocketry/motorsim/grain/ExtrudedShapeGrain.java

index 31d9b0f50d2392974edc8e905873ea171b02ec61..16a176470a927cf1cc692fee43d86265bbb91ae9 100644 (file)
@@ -35,7 +35,7 @@ public class BurningShape {
        }\r
        \r
        \r
-       public java.awt.geom.Area getPlus(Amount<Length> regression) {\r
+       private java.awt.geom.Area getPlus(Amount<Length> regression) {\r
                java.awt.geom.Area a = new java.awt.geom.Area();\r
                for (Shape s : plus)\r
                        a.add(new java.awt.geom.Area(regress(s, regression\r
@@ -43,7 +43,7 @@ public class BurningShape {
                return a;\r
        }\r
        \r
-       public java.awt.geom.Area getMinus(Amount<Length> regression) {\r
+       private java.awt.geom.Area getMinus(Amount<Length> regression) {\r
                java.awt.geom.Area a = new java.awt.geom.Area();\r
                for (Shape s : minus)\r
                        a.add(new java.awt.geom.Area(regress(s, regression\r
index 97e1f8e6f96dcaa3ef79f6d5cbfacfc199df0b90..ef00d4a4484adb4381cbd51aaa72dc55119ded26 100644 (file)
@@ -41,9 +41,9 @@ public class ExtrudedShapeGrain extends MotorPart implements Grain {
                Shape outside = new Ellipse2D.Double(0, 0, 30, 30);\r
                xsection.add(outside);\r
                xsection.inhibit(outside);\r
-               xsection.subtract(new Rectangle2D.Double(13, 13, 4, 30));\r
-               //minus.add(new Ellipse2D.Double(12, 12, 6, 6));\r
-               length = Amount.valueOf(70, SI.MILLIMETER);\r
+               //xsection.subtract(new Rectangle2D.Double(13, 13, 4, 30));\r
+               xsection.subtract(new Ellipse2D.Double(10,10, 10, 10));\r
+               length = Amount.valueOf(100, SI.MILLIMETER);\r
                /**/\r
 \r
                /*\r
@@ -79,7 +79,7 @@ public class ExtrudedShapeGrain extends MotorPart implements Grain {
                burn.subtract(getCrossSection(regression.plus(Amount.valueOf(.001,\r
                                SI.MILLIMETER))));\r
        \r
-               Amount<Area> xSection = crossSectionArea(regression);\r
+               Amount<Area> xSection = ShapeUtil.area(xsection.getShape(regression));\r
 \r
                return ShapeUtil.perimeter(burn).divide(2).times(rLen).plus(\r
                                xSection.times(2)).to(Area.UNIT);\r
@@ -96,38 +96,13 @@ public class ExtrudedShapeGrain extends MotorPart implements Grain {
                if (rLen.isLessThan(Amount.valueOf(0, SI.MILLIMETER)))\r
                        return zero;\r
                \r
-               Amount<Area> xSection = crossSectionArea(regression);\r
+               Amount<Area> xSection = ShapeUtil.area(xsection.getShape(regression));\r
 \r
                return xSection.times(rLen).to(Volume.UNIT);\r
 \r
        }\r
 \r
 \r
-\r
-       \r
-       private Amount<Area> crossSectionArea(Amount<Length> regression) {\r
-               //Get the PLUS shape and sum its area\r
-               java.awt.geom.Area plus = xsection.getPlus(regression);\r
-               Amount<Area> plusArea = Amount.valueOf(0, SI.SQUARE_METRE);\r
-               for (java.awt.geom.Area a : ShapeUtil.separate(plus)) {\r
-                       plusArea = plusArea.plus(ShapeUtil.area(a));\r
-               }\r
-               \r
-               //Get the MINUS shape, intersect it with PLUS to get just the parts\r
-               //that are removed, sum it's area\r
-               java.awt.geom.Area minus = xsection.getMinus(regression);\r
-               minus.intersect(plus);\r
-               Amount<Area> minusArea = Amount.valueOf(0, SI.SQUARE_METRE);\r
-               for (java.awt.geom.Area a : ShapeUtil.separate(minus)) {\r
-                       minusArea = minusArea.plus(ShapeUtil.area(a));\r
-               }\r
-               \r
-               //Subtract PLUS from MINUS and return\r
-               Amount<Area> area = plusArea.minus(minusArea);\r
-\r
-               return area;\r
-       }\r
-\r
        @Override\r
        public Amount<Length> webThickness() {\r
                return webThickness;\r