Yes, I don't put buttons or lugs on my sims. Just detailed fin dimensions, rocket diameter and length. I always mass override and enter my actual weight, and then the measured CG.
That's my approach too.
Yes, I don't put buttons or lugs on my sims. Just detailed fin dimensions, rocket diameter and length. I always mass override and enter my actual weight, and then the measured CG.
For those who might want to know, that ROT is based on limiting the CP shift to 1 caliber. More detail on this topic can be found in the document NAR Safety In Sport Rocketry (Training for RSO and Safety Check 2013), page 25
Some people say CG, others say CP. No one seems to have any science behind why. The only thing I can offer is to consider two points. The higher the top button, the straighter the rocket will be on the pad. However, as stated above, the lower the top button, the longer the rocket stays on the rail during initial thrust. Find the sweet spot. For most, the sweet spot ends up being somewhere around the top CR.
Heres a thought, where the lower rail button is may be more important. Once the top rail button exits the rail the only thing keeping the rocket straight is momentum. If it starts to turn into the wind the fins will push back the other way, but the rocket can only rotate around the lower button. If that button is above the CP it will try and correct the flight. If it is below the CP it will act in the wrong direction.
I don't think so, as I rarely put lugs on my sims but rail length is still effective.
[SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]/*[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]
* Calculate the effective launch rod length taking into account launch [U]lugs[/U].
* If no [U]lugs[/U] are found, assume a tower launcher of full length.
*/
[/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]double[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]length[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]this[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]simulationConditions[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].getLaunchRodLength();
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]double[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = Double.[/SIZE][B][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]NaN[/COLOR][/SIZE][/COLOR][/SIZE][/I][/B][SIZE=2];
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]for[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] (RocketComponent [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] : [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]this[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]configuration[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].getActiveComponents()) {
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]instanceof[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] LaunchLug) {
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] double[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e] pos[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].toAbsolute([/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] Coordinate([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].getLength()))[0].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]x[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] (Double.[I]isNaN[/I]([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) || [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]pos[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] > [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) {
[/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e] lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]pos[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE]
[SIZE=2] }
}
}
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] (!Double.[I]isNaN[/I]([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])) {
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] double[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]maxX[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = 0;
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] for[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] (Coordinate [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] : [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]this[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]configuration[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].getBounds()) {
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]x[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] > [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]maxX[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])
[/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e] maxX[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]x[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE]
[SIZE=2] }
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]maxX[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] >= [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) {
[/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e] length[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = Math.[I]max[/I](0, [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]length[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] - ([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]maxX[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] - [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]));
}
}
[/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]this[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]effectiveLaunchRodLength[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]length[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE]
Good to know OR can take a stab at this , thanks for the heads up. I use flyaways more often than anything else, but it's a useful tip to tuck away.Well if you don't bother putting the data in then it cannot do the calculations for you...
Code:[SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]/*[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f] * Calculate the effective launch rod length taking into account launch [U]lugs[/U]. * If no [U]lugs[/U] are found, assume a tower launcher of full length. */ [/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]double[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]length[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]this[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]simulationConditions[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].getLaunchRodLength(); [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]double[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = Double.[/SIZE][B][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]NaN[/COLOR][/SIZE][/COLOR][/SIZE][/I][/B][SIZE=2]; [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]for[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] (RocketComponent [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] : [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]this[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]configuration[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].getActiveComponents()) { [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]instanceof[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] LaunchLug) { [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] double[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e] pos[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].toAbsolute([/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] Coordinate([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].getLength()))[0].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]x[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]; [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] (Double.[I]isNaN[/I]([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) || [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]pos[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] > [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) { [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e] lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]pos[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE] [SIZE=2] } } } [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] (!Double.[I]isNaN[/I]([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])) { [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] double[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]maxX[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = 0; [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] for[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] (Coordinate [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] : [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]this[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]configuration[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].getBounds()) { [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]x[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] > [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]maxX[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e] maxX[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]x[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE] [SIZE=2] } [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]maxX[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] >= [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) { [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e] length[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = Math.[I]max[/I](0, [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]length[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] - ([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]maxX[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] - [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])); } } [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]this[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]effectiveLaunchRodLength[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]length[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE]
Well if you don't bother putting the data in then it cannot do the calculations for you...
Code:[SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f]/*[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2][COLOR=#3f7f5f][SIZE=2][COLOR=#3f7f5f] * Calculate the effective launch rod length taking into account launch [U]lugs[/U]. * If no [U]lugs[/U] are found, assume a tower launcher of full length. */ [/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]double[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]length[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]this[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]simulationConditions[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].getLaunchRodLength(); [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]double[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = Double.[/SIZE][B][I][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]NaN[/COLOR][/SIZE][/COLOR][/SIZE][/I][/B][SIZE=2]; [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]for[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] (RocketComponent [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] : [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]this[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]configuration[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].getActiveComponents()) { [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]instanceof[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] LaunchLug) { [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] double[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e] pos[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].toAbsolute([/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]new[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] Coordinate([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].getLength()))[0].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]x[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]; [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] (Double.[I]isNaN[/I]([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) || [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]pos[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] > [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) { [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e] lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]pos[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE] [SIZE=2] } } } [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] (!Double.[I]isNaN[/I]([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])) { [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] double[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]maxX[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = 0; [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] for[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] (Coordinate [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] : [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]this[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]configuration[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].getBounds()) { [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]x[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] > [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]maxX[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e] maxX[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]c[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]x[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE] [SIZE=2] } [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055] if[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2] ([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]maxX[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] >= [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2]) { [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e] length[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = Math.[I]max[/I](0, [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]length[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] - ([/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]maxX[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] - [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]lugPosition[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2])); } } [/SIZE][B][SIZE=2][COLOR=#7f0055][SIZE=2][COLOR=#7f0055]this[/COLOR][/SIZE][/COLOR][/SIZE][/B][SIZE=2].[/SIZE][SIZE=2][COLOR=#0000c0][SIZE=2][COLOR=#0000c0]effectiveLaunchRodLength[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2] = [/SIZE][SIZE=2][COLOR=#6a3e3e][SIZE=2][COLOR=#6a3e3e]length[/COLOR][/SIZE][/COLOR][/SIZE][SIZE=2];[/SIZE]
Alternatively, this thread makes me wonder about using three buttons with the bottom two pretty close together. Hmm.
I've been saying this is the proper thing to do for years.
However too many people think it's impossible to drill three holes in a line.....so be careful ;-)
Enter your email address to join: