package net.sf.openrocket.rocketcomponent;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.preset.ComponentPreset;
import net.sf.openrocket.preset.ComponentPreset.Type;
import net.sf.openrocket.startup.Application;
/**
* Rocket nose cones of various types. Implemented as a transition with the
* fore radius == 0.
*
* @author Sampo Niskanen <sampo.niskanen@iki.fi>
*/
public class NoseCone extends Transition {
private static final Translator trans = Application.getTranslator();
/********* Constructors **********/
public NoseCone() {
this(Transition.Shape.OGIVE, 6 * DEFAULT_RADIUS, DEFAULT_RADIUS);
}
public NoseCone(Transition.Shape type, double length, double radius) {
super();
super.setType(type);
super.setForeRadiusAutomatic(false);
super.setForeRadius(0);
super.setForeShoulderLength(0);
super.setForeShoulderRadius(0.9 * radius);
super.setForeShoulderThickness(0);
super.setForeShoulderCapped(filled);
super.setThickness(0.002);
super.setLength(length);
super.setClipped(false);
}
/********** Get/set methods for component parameters **********/
@Override
public double getForeRadius() {
return 0;
}
@Override
public void setForeRadius(double r) {
// No-op
}
@Override
public boolean isForeRadiusAutomatic() {
return false;
}
@Override
public void setForeRadiusAutomatic(boolean b) {
// No-op
}
@Override
public double getForeShoulderLength() {
return 0;
}
@Override
public double getForeShoulderRadius() {
return 0;
}
@Override
public double getForeShoulderThickness() {
return 0;
}
@Override
public boolean isForeShoulderCapped() {
return false;
}
@Override
public void setForeShoulderCapped(boolean capped) {
// No-op
}
@Override
public void setForeShoulderLength(double foreShoulderLength) {
// No-op
}
@Override
public void setForeShoulderRadius(double foreShoulderRadius) {
// No-op
}
@Override
public void setForeShoulderThickness(double foreShoulderThickness) {
// No-op
}
@Override
public boolean isClipped() {
return false;
}
@Override
public void setClipped(boolean b) {
// No-op
}
/********** RocketComponent methods **********/
@Override
public Type getPresetType() {
return ComponentPreset.Type.NOSE_CONE;
}
@Override
protected void loadFromPreset(ComponentPreset preset) {
//Many parameters are handled by the super class Transition.loadFromPreset
super.loadFromPreset(preset);
}
/**
* Return component name.
*/
@Override
public String getComponentName() {
//// Nose cone
return trans.get("NoseCone.NoseCone");
}
}