1 package com.billkuker.rocketry.motorsim.grain;
\r
3 import java.beans.PropertyVetoException;
\r
5 import javax.measure.quantity.Length;
\r
6 import javax.measure.unit.SI;
\r
8 import org.jscience.physics.amount.Amount;
\r
10 import com.billkuker.rocketry.motorsim.Grain;
\r
11 import com.billkuker.rocketry.motorsim.MotorPart;
\r
13 public abstract class ExtrudedGrain extends MotorPart implements Grain {
\r
14 private boolean foreEndInhibited = false;
\r
15 private boolean aftEndInhibited = false;
\r
16 private Amount<Length> length = Amount.valueOf(100, SI.MILLIMETER);
\r
17 private Amount<Length> endLight = Amount.valueOf(0, SI.MILLIMETER);
\r
19 protected int numberOfBurningEnds(Amount<Length> regression){
\r
20 if ( regression.isLessThan(endLight) )
\r
22 return (foreEndInhibited?0:1) + (aftEndInhibited?0:1);
\r
25 protected Amount<Length> regressedLength(Amount<Length> regression){
\r
26 if ( regression.isLessThan(endLight) )
\r
28 return length.minus(regression.minus(endLight).times(numberOfBurningEnds(regression)));
\r
31 public boolean isForeEndInhibited() {
\r
32 return foreEndInhibited;
\r
35 public void setForeEndInhibited(boolean foreEndInhibited)throws PropertyVetoException {
\r
36 fireVetoableChange("foreEndInhibited", this.foreEndInhibited, foreEndInhibited);
\r
37 boolean old = this.foreEndInhibited;
\r
38 this.foreEndInhibited = foreEndInhibited;
\r
39 firePropertyChange("foreEndInhibited", old, foreEndInhibited);
\r
42 public boolean isAftEndInhibited() {
\r
43 return aftEndInhibited;
\r
46 public void setAftEndInhibited(boolean aftEndInhibited) throws PropertyVetoException {
\r
47 fireVetoableChange("aftEndInhibited", this.aftEndInhibited, aftEndInhibited);
\r
48 boolean old = this.aftEndInhibited;
\r
49 this.aftEndInhibited = aftEndInhibited;
\r
50 firePropertyChange("aftEndInhibited", old, aftEndInhibited);
\r
53 public Amount<Length> getLength() {
\r
57 public void setLength(Amount<Length> length) throws PropertyVetoException {
\r
58 fireVetoableChange("length", this.length, length);
\r
59 Amount<Length> old = this.length;
\r
60 this.length = length;
\r
61 firePropertyChange("length", old, length);
\r