1 package com.billkuker.rocketry.motorsim.grain;
3 import java.awt.geom.Rectangle2D;
4 import java.beans.PropertyChangeEvent;
5 import java.beans.PropertyChangeListener;
7 import javax.measure.quantity.Length;
8 import javax.measure.unit.SI;
10 import org.jscience.physics.amount.Amount;
12 import com.billkuker.rocketry.motorsim.Validating;
13 import com.billkuker.rocketry.motorsim.grain.util.BurningShape;
14 import com.billkuker.rocketry.motorsim.grain.util.RotatedShapeGrain;
16 public class EndBurner extends RotatedShapeGrain implements Validating {
18 private Amount<Length> length = Amount.valueOf(70, SI.MILLIMETER);
19 private Amount<Length> oD = Amount.valueOf(30, SI.MILLIMETER);
20 private Amount<Length> puntDiameter = Amount.valueOf(10, SI.MILLIMETER);
21 private Amount<Length> puntDepth = Amount.valueOf(10, SI.MILLIMETER);
23 private void generateGeometry(){
24 double len = length.doubleValue(SI.MILLIMETER);
25 double od = oD.doubleValue(SI.MILLIMETER);
26 double pdi = puntDiameter.doubleValue(SI.MILLIMETER);
27 double plen = puntDepth.doubleValue(SI.MILLIMETER);
29 Rectangle2D.Double grain, punt, end;
30 grain = new Rectangle2D.Double(0,0,od/2.0,len);
31 punt = new Rectangle2D.Double(0,len-plen, pdi/2.0, plen);
32 end = new Rectangle2D.Double(0,len,od,0);
34 shape = new BurningShape();
44 this.addPropertyChangeListener(new PropertyChangeListener(){
46 public void propertyChange(PropertyChangeEvent evt) {
53 public void validate() throws ValidationException {
54 // TODO Auto-generated method stub
58 public Amount<Length> getLength() {
62 public void setLength(Amount<Length> length) {
66 public Amount<Length> getoD() {
70 public void setoD(Amount<Length> oD) {
74 public Amount<Length> getPuntDiameter() {
78 public void setPuntDiameter(Amount<Length> puntDiameter) {
79 this.puntDiameter = puntDiameter;
82 public Amount<Length> getPuntDepth() {
86 public void setPuntDepth(Amount<Length> puntDepth) {
87 this.puntDepth = puntDepth;