DGP - changes to relative position; custom fin set points

This commit is contained in:
Doug Pedrick 2012-01-09 03:36:14 +00:00
parent a31ab4e099
commit 293efd20c8
4 changed files with 25 additions and 21 deletions

View File

@ -6,6 +6,7 @@ import net.sf.openrocket.file.rocksim.importt.RocksimFinishCode;
import net.sf.openrocket.file.rocksim.importt.RocksimHandler; import net.sf.openrocket.file.rocksim.importt.RocksimHandler;
import net.sf.openrocket.file.rocksim.importt.RocksimLocationMode; import net.sf.openrocket.file.rocksim.importt.RocksimLocationMode;
import net.sf.openrocket.rocketcomponent.ExternalComponent; import net.sf.openrocket.rocketcomponent.ExternalComponent;
import net.sf.openrocket.rocketcomponent.FinSet;
import net.sf.openrocket.rocketcomponent.RecoveryDevice; import net.sf.openrocket.rocketcomponent.RecoveryDevice;
import net.sf.openrocket.rocketcomponent.RocketComponent; import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.rocketcomponent.StructuralComponent; import net.sf.openrocket.rocketcomponent.StructuralComponent;
@ -47,7 +48,7 @@ public abstract class BasePartDTO {
private double radialAngle = 0; private double radialAngle = 0;
@XmlElement(name = "LocationMode") @XmlElement(name = "LocationMode")
private int locationMode = 0; private int locationMode = 0;
@XmlElement(name = "Len") @XmlElement(name = "Len", required = false, nillable = false)
private double len = 0d; private double len = 0d;
@XmlElement(name = "FinishCode") @XmlElement(name = "FinishCode")
private int finishCode = 0; private int finishCode = 0;
@ -60,18 +61,29 @@ public abstract class BasePartDTO {
setCalcMass(ec.getComponentMass() * RocksimHandler.ROCKSIM_TO_OPENROCKET_MASS); setCalcMass(ec.getComponentMass() * RocksimHandler.ROCKSIM_TO_OPENROCKET_MASS);
setKnownCG(ec.getOverrideCGX() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH); setKnownCG(ec.getOverrideCGX() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
setKnownMass(ec.getOverrideMass() * RocksimHandler.ROCKSIM_TO_OPENROCKET_MASS); setKnownMass(ec.getOverrideMass() * RocksimHandler.ROCKSIM_TO_OPENROCKET_MASS);
setLen(ec.getLength() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH); if (! (ec instanceof FinSet)) {
setLen(ec.getLength() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
}
setUseKnownCG(ec.isCGOverridden() || ec.isMassOverridden() ? 1 : 0); setUseKnownCG(ec.isCGOverridden() || ec.isMassOverridden() ? 1 : 0);
setName(ec.getName()); setName(ec.getName());
setXb(ec.getPositionValue() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH); setXb(ec.getPositionValue() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
//When the relative position is BOTTOM, the position location of the bottom edge of the component is +
//to the right of the bottom of the parent, and - to the left.
//But in Rocksim, it's + to the left and - to the right
if (ec.getRelativePosition().equals(RocketComponent.Position.BOTTOM)) {
setXb((-1 * ec.getPositionValue()) * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
}
else if (ec.getRelativePosition().equals(RocketComponent.Position.MIDDLE)) {
//Mapped to TOP, so adjust accordingly
setXb((ec.getPositionValue() + (ec.getParent().getLength() - ec.getLength()) /2)* RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
}
if (ec instanceof ExternalComponent) { if (ec instanceof ExternalComponent) {
ExternalComponent comp = (ExternalComponent) ec; ExternalComponent comp = (ExternalComponent) ec;
setLocationMode(RocksimLocationMode.toCode(comp.getRelativePosition())); setLocationMode(RocksimLocationMode.toCode(comp.getRelativePosition()));
if (comp.getRelativePosition().equals(RocketComponent.Position.BOTTOM)) {
setXb(-1 * getXb());
}
setDensity(comp.getMaterial().getDensity() * RocksimHandler.ROCKSIM_TO_OPENROCKET_BULK_DENSITY); setDensity(comp.getMaterial().getDensity() * RocksimHandler.ROCKSIM_TO_OPENROCKET_BULK_DENSITY);
setDensityType(RocksimDensityType.toCode(comp.getMaterial().getType())); setDensityType(RocksimDensityType.toCode(comp.getMaterial().getType()));
String material = comp.getMaterial().getName(); String material = comp.getMaterial().getName();
@ -86,9 +98,6 @@ public abstract class BasePartDTO {
StructuralComponent comp = (StructuralComponent) ec; StructuralComponent comp = (StructuralComponent) ec;
setLocationMode(RocksimLocationMode.toCode(comp.getRelativePosition())); setLocationMode(RocksimLocationMode.toCode(comp.getRelativePosition()));
if (comp.getRelativePosition().equals(RocketComponent.Position.BOTTOM)) {
setXb(-1 * getXb());
}
setDensity(comp.getMaterial().getDensity() * RocksimHandler.ROCKSIM_TO_OPENROCKET_BULK_DENSITY); setDensity(comp.getMaterial().getDensity() * RocksimHandler.ROCKSIM_TO_OPENROCKET_BULK_DENSITY);
setDensityType(RocksimDensityType.toCode(comp.getMaterial().getType())); setDensityType(RocksimDensityType.toCode(comp.getMaterial().getType()));
String material = comp.getMaterial().getName(); String material = comp.getMaterial().getName();
@ -101,9 +110,6 @@ public abstract class BasePartDTO {
RecoveryDevice comp = (RecoveryDevice) ec; RecoveryDevice comp = (RecoveryDevice) ec;
setLocationMode(RocksimLocationMode.toCode(comp.getRelativePosition())); setLocationMode(RocksimLocationMode.toCode(comp.getRelativePosition()));
if (comp.getRelativePosition().equals(RocketComponent.Position.BOTTOM)) {
setXb(-1 * getXb());
}
setDensity(comp.getMaterial().getDensity() * RocksimHandler.ROCKSIM_TO_OPENROCKET_SURFACE_DENSITY); setDensity(comp.getMaterial().getDensity() * RocksimHandler.ROCKSIM_TO_OPENROCKET_SURFACE_DENSITY);
setDensityType(RocksimDensityType.toCode(comp.getMaterial().getType())); setDensityType(RocksimDensityType.toCode(comp.getMaterial().getType()));
String material = comp.getMaterial().getName(); String material = comp.getMaterial().getName();

View File

@ -29,7 +29,9 @@ public class CustomFinSetDTO extends FinSetDTO {
private String convertFreeFormPoints(Coordinate[] points) { private String convertFreeFormPoints(Coordinate[] points) {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
for (int i = 0; i < points.length; i++) {
//Reverse the order for Rocksim
for (int i = points.length - 1; i >= 0; i--) {
Coordinate point = points[i]; Coordinate point = points[i];
sb.append(point.x * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH).append(",") sb.append(point.x * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH).append(",")
.append(point.y * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH).append("|"); .append(point.y * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH).append("|");

View File

@ -5,7 +5,6 @@ import net.sf.openrocket.file.rocksim.importt.RocksimHandler;
import net.sf.openrocket.rocketcomponent.EllipticalFinSet; import net.sf.openrocket.rocketcomponent.EllipticalFinSet;
import net.sf.openrocket.rocketcomponent.FinSet; import net.sf.openrocket.rocketcomponent.FinSet;
import net.sf.openrocket.rocketcomponent.FreeformFinSet; import net.sf.openrocket.rocketcomponent.FreeformFinSet;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.rocketcomponent.TrapezoidFinSet; import net.sf.openrocket.rocketcomponent.TrapezoidFinSet;
import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessType;
@ -52,33 +51,28 @@ public class FinSetDTO extends BasePartDTO {
public FinSetDTO(FinSet ec) { public FinSetDTO(FinSet ec) {
super(ec); super(ec);
setCantAngle(ec.getCantAngle());
setFinCount(ec.getFinCount()); setFinCount(ec.getFinCount());
setRootChord(ec.getLength() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH); setCantAngle(ec.getCantAngle());
setTabDepth(ec.getTabHeight() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH); setTabDepth(ec.getTabHeight() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
setTabLength(ec.getTabLength() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH); setTabLength(ec.getTabLength() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
setTabOffset(ec.getTabShift() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH); setTabOffset(ec.getTabShift() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
setThickness(ec.getThickness() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH); setThickness(ec.getThickness() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
if (ec.getRelativePosition().equals(RocketComponent.Position.BOTTOM)) {
setXb(getXb() + getLen());
}
setRadialAngle(ec.getBaseRotation()); setRadialAngle(ec.getBaseRotation());
setTipShapeCode(TipShapeCode.convertTipShapeCode(ec.getCrossSection())); setTipShapeCode(TipShapeCode.convertTipShapeCode(ec.getCrossSection()));
if (ec instanceof TrapezoidFinSet) { if (ec instanceof TrapezoidFinSet) {
TrapezoidFinSet tfs = (TrapezoidFinSet) ec; TrapezoidFinSet tfs = (TrapezoidFinSet) ec;
setShapeCode(0); setShapeCode(0);
setRootChord(ec.getLength() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
setSemiSpan(tfs.getHeight() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH); setSemiSpan(tfs.getHeight() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
setTipChord(tfs.getTipChord() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH); setTipChord(tfs.getTipChord() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
setSweepDistance(tfs.getSweep() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH); setSweepDistance(tfs.getSweep() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
setLen(tfs.getLength());
} }
else if (ec instanceof EllipticalFinSet) { else if (ec instanceof EllipticalFinSet) {
EllipticalFinSet efs = (EllipticalFinSet) ec; EllipticalFinSet efs = (EllipticalFinSet) ec;
setShapeCode(1); setShapeCode(1);
setRootChord(ec.getLength() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
setSemiSpan(efs.getHeight() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH); setSemiSpan(efs.getHeight() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
setLen(efs.getLength() *RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
} }
else if (ec instanceof FreeformFinSet) { else if (ec instanceof FreeformFinSet) {
setShapeCode(2); setShapeCode(2);

View File

@ -13,6 +13,8 @@ public class RocketDesignDTO {
private String name; private String name;
@XmlElement(name = "StageCount") @XmlElement(name = "StageCount")
private int stageCount = 1; private int stageCount = 1;
@XmlElement(name = "DisplayFlags")
private int displayFlags = 7;
@XmlElement(name = "ViewType") @XmlElement(name = "ViewType")
private int viewType = 0; private int viewType = 0;
@XmlElement(name = "ViewStageCount") @XmlElement(name = "ViewStageCount")