Fix wrong fin location referencing in aggregate tubes
This commit is contained in:
parent
884959a98e
commit
68904b597a
@ -155,6 +155,7 @@ public class BoosterDTO implements BodyTubeDTOAdapter {
|
|||||||
TrapezoidFinSet finSet = getFinSetFromBodyTube(firstTube);
|
TrapezoidFinSet finSet = getFinSetFromBodyTube(firstTube);
|
||||||
|
|
||||||
double tubeLength = firstTube.getLength();
|
double tubeLength = firstTube.getLength();
|
||||||
|
double finLocationOffset = 0;
|
||||||
// Aggregate same-sized body tubes
|
// Aggregate same-sized body tubes
|
||||||
for (int i = stage.getChildPosition(firstTube) + 1; i < stage.getChildCount(); i++) {
|
for (int i = stage.getChildPosition(firstTube) + 1; i < stage.getChildCount(); i++) {
|
||||||
RocketComponent comp = stage.getChild(i);
|
RocketComponent comp = stage.getChild(i);
|
||||||
@ -167,6 +168,11 @@ public class BoosterDTO implements BodyTubeDTOAdapter {
|
|||||||
if (finSet == null) {
|
if (finSet == null) {
|
||||||
finSet = getFinSetFromBodyTube((BodyTube) comp);
|
finSet = getFinSetFromBodyTube((BodyTube) comp);
|
||||||
}
|
}
|
||||||
|
// We need an offset to the fin location, since the fin axial offset is referenced to its parent tube,
|
||||||
|
// which can be different from the bottom of the aggregate tubes
|
||||||
|
else {
|
||||||
|
finLocationOffset += comp.getLength();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// If this booster is the last stage, and the last component is a transition, it could be a boattail
|
// If this booster is the last stage, and the last component is a transition, it could be a boattail
|
||||||
boolean isBoattail = (comp instanceof Transition && !(comp instanceof NoseCone)) && i == stage.getChildCount() - 1;
|
boolean isBoattail = (comp instanceof Transition && !(comp instanceof NoseCone)) && i == stage.getChildCount() - 1;
|
||||||
@ -196,7 +202,10 @@ public class BoosterDTO implements BodyTubeDTOAdapter {
|
|||||||
String.format(trans.get("RASAeroExport.error16"),
|
String.format(trans.get("RASAeroExport.error16"),
|
||||||
firstTube.getName(), stage.getName()));
|
firstTube.getName(), stage.getName()));
|
||||||
}
|
}
|
||||||
setFin(new FinDTO(finSet, warnings, errors));
|
FinDTO finDTO = new FinDTO(finSet, warnings, errors);
|
||||||
|
double finLocation = finDTO.getLocation();
|
||||||
|
finDTO.setLocation(finLocation + finLocationOffset * RASAeroCommonConstants.OPENROCKET_TO_RASAERO_LENGTH);
|
||||||
|
setFin(finDTO);
|
||||||
|
|
||||||
setPartType(RASAeroCommonConstants.BOOSTER);
|
setPartType(RASAeroCommonConstants.BOOSTER);
|
||||||
setLength(tubeLength * RASAeroCommonConstants.OPENROCKET_TO_RASAERO_LENGTH);
|
setLength(tubeLength * RASAeroCommonConstants.OPENROCKET_TO_RASAERO_LENGTH);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user