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.RocksimLocationMode;
import net.sf.openrocket.rocketcomponent.ExternalComponent;
import net.sf.openrocket.rocketcomponent.FinSet;
import net.sf.openrocket.rocketcomponent.RecoveryDevice;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.rocketcomponent.StructuralComponent;
@ -47,7 +48,7 @@ public abstract class BasePartDTO {
private double radialAngle = 0;
@XmlElement(name = "LocationMode")
private int locationMode = 0;
@XmlElement(name = "Len")
@XmlElement(name = "Len", required = false, nillable = false)
private double len = 0d;
@XmlElement(name = "FinishCode")
private int finishCode = 0;
@ -60,18 +61,29 @@ public abstract class BasePartDTO {
setCalcMass(ec.getComponentMass() * RocksimHandler.ROCKSIM_TO_OPENROCKET_MASS);
setKnownCG(ec.getOverrideCGX() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
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);
setName(ec.getName());
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) {
ExternalComponent comp = (ExternalComponent) ec;
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);
setDensityType(RocksimDensityType.toCode(comp.getMaterial().getType()));
String material = comp.getMaterial().getName();
@ -86,9 +98,6 @@ public abstract class BasePartDTO {
StructuralComponent comp = (StructuralComponent) ec;
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);
setDensityType(RocksimDensityType.toCode(comp.getMaterial().getType()));
String material = comp.getMaterial().getName();
@ -101,9 +110,6 @@ public abstract class BasePartDTO {
RecoveryDevice comp = (RecoveryDevice) ec;
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);
setDensityType(RocksimDensityType.toCode(comp.getMaterial().getType()));
String material = comp.getMaterial().getName();

View File

@ -29,7 +29,9 @@ public class CustomFinSetDTO extends FinSetDTO {
private String convertFreeFormPoints(Coordinate[] points) {
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];
sb.append(point.x * 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.FinSet;
import net.sf.openrocket.rocketcomponent.FreeformFinSet;
import net.sf.openrocket.rocketcomponent.RocketComponent;
import net.sf.openrocket.rocketcomponent.TrapezoidFinSet;
import javax.xml.bind.annotation.XmlAccessType;
@ -52,33 +51,28 @@ public class FinSetDTO extends BasePartDTO {
public FinSetDTO(FinSet ec) {
super(ec);
setCantAngle(ec.getCantAngle());
setFinCount(ec.getFinCount());
setRootChord(ec.getLength() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
setCantAngle(ec.getCantAngle());
setTabDepth(ec.getTabHeight() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
setTabLength(ec.getTabLength() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
setTabOffset(ec.getTabShift() * 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());
setTipShapeCode(TipShapeCode.convertTipShapeCode(ec.getCrossSection()));
if (ec instanceof TrapezoidFinSet) {
TrapezoidFinSet tfs = (TrapezoidFinSet) ec;
setShapeCode(0);
setRootChord(ec.getLength() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
setSemiSpan(tfs.getHeight() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
setTipChord(tfs.getTipChord() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
setSweepDistance(tfs.getSweep() * RocksimHandler.ROCKSIM_TO_OPENROCKET_LENGTH);
setLen(tfs.getLength());
}
else if (ec instanceof EllipticalFinSet) {
EllipticalFinSet efs = (EllipticalFinSet) ec;
setShapeCode(1);
setRootChord(ec.getLength() * 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) {
setShapeCode(2);

View File

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