1 package net.sf.openrocket.rocketcomponent;
3 import net.sf.openrocket.l10n.Translator;
4 import net.sf.openrocket.preset.ComponentPreset;
5 import net.sf.openrocket.preset.ComponentPreset.Type;
6 import net.sf.openrocket.startup.Application;
9 * Rocket nose cones of various types. Implemented as a transition with the
12 * @author Sampo Niskanen <sampo.niskanen@iki.fi>
15 public class NoseCone extends Transition {
16 private static final Translator trans = Application.getTranslator();
19 /********* Constructors **********/
21 this(Transition.Shape.OGIVE, 6 * DEFAULT_RADIUS, DEFAULT_RADIUS);
24 public NoseCone(Transition.Shape type, double length, double radius) {
27 super.setForeRadiusAutomatic(false);
28 super.setForeRadius(0);
29 super.setForeShoulderLength(0);
30 super.setForeShoulderRadius(0.9 * radius);
31 super.setForeShoulderThickness(0);
32 super.setForeShoulderCapped(filled);
33 super.setThickness(0.002);
34 super.setLength(length);
35 super.setClipped(false);
40 /********** Get/set methods for component parameters **********/
43 public double getForeRadius() {
48 public void setForeRadius(double r) {
53 public boolean isForeRadiusAutomatic() {
58 public void setForeRadiusAutomatic(boolean b) {
63 public double getForeShoulderLength() {
68 public double getForeShoulderRadius() {
73 public double getForeShoulderThickness() {
78 public boolean isForeShoulderCapped() {
83 public void setForeShoulderCapped(boolean capped) {
88 public void setForeShoulderLength(double foreShoulderLength) {
93 public void setForeShoulderRadius(double foreShoulderRadius) {
98 public void setForeShoulderThickness(double foreShoulderThickness) {
103 public boolean isClipped() {
108 public void setClipped(boolean b) {
114 /********** RocketComponent methods **********/
117 public Type getPresetType() {
118 return ComponentPreset.Type.NOSE_CONE;
122 protected void loadFromPreset(ComponentPreset preset) {
123 if ( preset.has(ComponentPreset.SHAPE) ) {
124 Shape s = preset.get(ComponentPreset.SHAPE);
127 if ( preset.has(ComponentPreset.OUTER_DIAMETER) ) {
128 double outerDiameter = preset.get(ComponentPreset.OUTER_DIAMETER);
129 this.setAftRadiusAutomatic(false);
130 this.setAftRadius(outerDiameter/2.0);
132 if ( preset.has(ComponentPreset.SHOULDER_LENGTH) ) {
133 double length = preset.get(ComponentPreset.SHOULDER_LENGTH);
134 this.setAftShoulderLength(length);
136 if ( preset.has(ComponentPreset.SHOULDER_DIAMETER) ) {
137 double d = preset.get(ComponentPreset.SHOULDER_DIAMETER);
138 this.setAftShoulderRadius(d/2.0);
141 super.loadFromPreset(preset);
143 fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
147 * Return component name.
150 public String getComponentName() {
152 return trans.get("NoseCone.NoseCone");