Add an interface to allow export of pvc motors
[sw/motorsim] / src / com / billkuker / rocketry / motorsim / CylindricalChamber.java
index cfac36dc42c707f0abd8eba16d43ea513fd5a83e..8405456ac5c04069e5200c86bea2e95b15186cfc 100644 (file)
@@ -1,5 +1,9 @@
 package com.billkuker.rocketry.motorsim;\r
 \r
+import java.awt.Shape;\r
+import java.awt.geom.Area;\r
+import java.awt.geom.Rectangle2D;\r
+\r
 import javax.measure.quantity.Length;\r
 import javax.measure.quantity.Pressure;\r
 import javax.measure.quantity.Volume;\r
@@ -7,18 +11,16 @@ import javax.measure.unit.SI;
 \r
 import org.jscience.physics.amount.Amount;\r
 \r
-public class CylindricalChamber implements Chamber {\r
-       \r
-       private Amount<Length> length;\r
+public class CylindricalChamber implements Chamber, ICylindricalChamber {\r
        \r
-       private Amount<Length> iD;\r
+       private Amount<Length> length = Amount.valueOf(200, SI.MILLIMETER);\r
+       private Amount<Length> oD = Amount.valueOf(31, SI.MILLIMETER);\r
+       private Amount<Length> iD = Amount.valueOf(30, SI.MILLIMETER);\r
 \r
-       @Override\r
-       public Amount<Pressure> burstPressure() {\r
+       public Amount<Pressure> getBurstPressure() {\r
                return null;\r
        }\r
 \r
-       @Override\r
        public Amount<Volume> chamberVolume() {\r
                return iD.divide(2).pow(2).times(Math.PI).times(length).to(SI.CUBIC_METRE);\r
        }\r
@@ -38,5 +40,30 @@ public class CylindricalChamber implements Chamber {
        public void setID(Amount<Length> id) {\r
                iD = id;\r
        }\r
+       \r
+       public Amount<Length> getOD() {\r
+               return oD;\r
+       }\r
+\r
+       public void setOD(Amount<Length> oD) {\r
+               this.oD = oD;\r
+       }\r
+\r
+       @Override\r
+       public Shape chamberShape() {\r
+               double ir = iD.doubleValue(SI.MILLIMETER) / 2;\r
+               double or = oD.doubleValue(SI.MILLIMETER) / 2;\r
+               double lenmm = length.doubleValue(SI.MILLIMETER);\r
+               double thick = or-ir;\r
+\r
+               Rectangle2D.Double l,r,t;\r
+               l = new Rectangle2D.Double(-or,0,thick,lenmm);\r
+               r = new Rectangle2D.Double(ir, 0, thick, lenmm);\r
+               t = new Rectangle2D.Double(-or,0,or*2,thick);\r
+               Area a = new Area(l);\r
+               a.add(new Area(r));\r
+               a.add(new Area(t));\r
+               return a;\r
+       }\r
 \r
 }\r