package com.billkuker.rocketry.motorsim.grain;\r
\r
+import java.awt.BasicStroke;\r
+import java.awt.Color;\r
+import java.awt.Graphics2D;\r
+import java.awt.Rectangle;\r
+import java.awt.Shape;\r
+import java.awt.geom.Ellipse2D;\r
+import java.awt.geom.Rectangle2D;\r
+\r
import javax.measure.quantity.Area;\r
import javax.measure.quantity.Length;\r
import javax.measure.quantity.Volume;\r
import com.billkuker.rocketry.motorsim.validation.Validating;\r
import com.billkuker.rocketry.motorsim.validation.ValidationException;\r
\r
-public class CoredCylindricalGrain implements Grain, Validating {\r
+public class CoredCylindricalGrain implements Grain, Validating, Grain.Graphical {\r
\r
private Amount<Length> length, oD, iD;\r
private boolean oInh = true, iInh = false, eInh = false;\r
return iD;\r
}\r
\r
+ @Override\r
+ public java.awt.geom.Area getCrossSection(Amount<Length> regression){\r
+ double rmm = regression.doubleValue(SI.MILLIMETER);\r
+ double oDmm = oD.doubleValue(SI.MILLIMETER);\r
+ double iDmm = iD.doubleValue(SI.MILLIMETER);\r
+\r
+ if ( !oInh )\r
+ oDmm -= 2.0 * rmm;\r
+ if ( !iInh )\r
+ iDmm += 2.0 * rmm;\r
+ \r
+ Shape oDs = new Ellipse2D.Double(-oDmm/2.0, -oDmm/2.0, oDmm, oDmm);\r
+ Shape iDs = new Ellipse2D.Double(-iDmm/2.0, -iDmm/2.0, iDmm, iDmm);\r
+ \r
+ java.awt.geom.Area a = new java.awt.geom.Area(oDs);\r
+ a.subtract(new java.awt.geom.Area(iDs));\r
+ return a;\r
+ }\r
\r
+ public java.awt.geom.Area getSideView(Amount<Length> regression){\r
+ double rmm = regression.doubleValue(SI.MILLIMETER);\r
+ double oDmm = oD.doubleValue(SI.MILLIMETER);\r
+ double iDmm = iD.doubleValue(SI.MILLIMETER);\r
+ double lmm = length.doubleValue(SI.MILLIMETER);\r
+\r
+ if ( !oInh )\r
+ oDmm -= 2.0 * rmm;\r
+ if ( !iInh )\r
+ iDmm += 2.0 * rmm;\r
+ if ( !eInh )\r
+ lmm -= 2.0 * rmm;\r
+ \r
+ java.awt.geom.Area a = new java.awt.geom.Area();\r
+ a.add( new java.awt.geom.Area(new Rectangle2D.Double(-oDmm/2,-lmm/2,oDmm, lmm)));\r
+ a.subtract( new java.awt.geom.Area(new Rectangle2D.Double(-iDmm/2,-lmm/2,iDmm, lmm)));\r
+ \r
+ return a;\r
+ }\r
\r
\r
}\r