1 package com.billkuker.rocketry.motorsim;
\r
3 import java.awt.Shape;
\r
4 import java.awt.geom.Area;
\r
5 import java.awt.geom.Rectangle2D;
\r
7 import javax.measure.quantity.Length;
\r
8 import javax.measure.quantity.Pressure;
\r
9 import javax.measure.quantity.Volume;
\r
10 import javax.measure.unit.SI;
\r
12 import org.jscience.physics.amount.Amount;
\r
14 public class CylindricalChamber implements Chamber, ICylindricalChamber {
\r
16 private Amount<Length> length = Amount.valueOf(200, SI.MILLIMETER);
\r
17 private Amount<Length> oD = Amount.valueOf(31, SI.MILLIMETER);
\r
18 private Amount<Length> iD = Amount.valueOf(30, SI.MILLIMETER);
\r
20 public Amount<Pressure> getBurstPressure() {
\r
24 public Amount<Volume> chamberVolume() {
\r
25 return iD.divide(2).pow(2).times(Math.PI).times(length).to(SI.CUBIC_METRE);
\r
28 public Amount<Length> getLength() {
\r
32 public void setLength(Amount<Length> length) {
\r
33 this.length = length;
\r
36 public Amount<Length> getID() {
\r
40 public void setID(Amount<Length> id) {
\r
44 public Amount<Length> getOD() {
\r
48 public void setOD(Amount<Length> oD) {
\r
53 public Shape chamberShape() {
\r
54 double ir = iD.doubleValue(SI.MILLIMETER) / 2;
\r
55 double or = oD.doubleValue(SI.MILLIMETER) / 2;
\r
56 double lenmm = length.doubleValue(SI.MILLIMETER);
\r
57 double thick = or-ir;
\r
59 Rectangle2D.Double l,r,t;
\r
60 l = new Rectangle2D.Double(-or,0,thick,lenmm);
\r
61 r = new Rectangle2D.Double(ir, 0, thick, lenmm);
\r
62 t = new Rectangle2D.Double(-or,0,or*2,thick);
\r
63 Area a = new Area(l);
\r