Merge pull request #2184 from SiboVG/issue-2171
[#2171] Compute position based on active components
This commit is contained in:
		
						commit
						a18452c824
					
				| @ -1338,7 +1338,18 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab | |||||||
| 		if( 0 == thisIndex ) { | 		if( 0 == thisIndex ) { | ||||||
| 			this.position = this.position.setX(0.); | 			this.position = this.position.setX(0.); | ||||||
| 		}else if( 0 < thisIndex ) { | 		}else if( 0 < thisIndex ) { | ||||||
| 			RocketComponent referenceComponent = parent.getChild( thisIndex - 1 ); | 			int idx = thisIndex - 1; | ||||||
|  | 			RocketComponent referenceComponent = parent.getChild(idx); | ||||||
|  | 			while (!getRocket().getSelectedConfiguration().isComponentActive(referenceComponent) && idx > 0) { | ||||||
|  | 				idx--; | ||||||
|  | 				referenceComponent = parent.getChild(idx); | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			// If previous components are inactive, set this as the new reference point | ||||||
|  | 			if (!getRocket().getSelectedConfiguration().isComponentActive(referenceComponent)) { | ||||||
|  | 				this.position = this.position.setX(0.); | ||||||
|  | 				return; | ||||||
|  | 			} | ||||||
| 
 | 
 | ||||||
| 			double refLength = referenceComponent.getLength(); | 			double refLength = referenceComponent.getLength(); | ||||||
| 			double refRelX = referenceComponent.getPosition().x; | 			double refRelX = referenceComponent.getPosition().x; | ||||||
|  | |||||||
| @ -998,7 +998,7 @@ public class MassCalculatorTest extends BaseTestCase { | |||||||
| 		double expTotalMass = overrideMass; | 		double expTotalMass = overrideMass; | ||||||
| 		assertEquals(" Booster Launch Mass is incorrect: ", expTotalMass, calcTotalMass, EPSILON); | 		assertEquals(" Booster Launch Mass is incorrect: ", expTotalMass, calcTotalMass, EPSILON); | ||||||
| 
 | 
 | ||||||
| 		double expCMx = 6.484; | 		double expCMx = 5.92; | ||||||
| 		Coordinate expCM = new Coordinate(expCMx, 0, 0, expTotalMass); | 		Coordinate expCM = new Coordinate(expCMx, 0, 0, expTotalMass); | ||||||
| 		assertEquals(" Booster Launch CM.x is incorrect: ", expCM.x, boosterSetCM.x, EPSILON); | 		assertEquals(" Booster Launch CM.x is incorrect: ", expCM.x, boosterSetCM.x, EPSILON); | ||||||
| 		assertEquals(" Booster Launch CM.y is incorrect: ", expCM.y, boosterSetCM.y, EPSILON); | 		assertEquals(" Booster Launch CM.y is incorrect: ", expCM.y, boosterSetCM.y, EPSILON); | ||||||
| @ -1052,7 +1052,7 @@ public class MassCalculatorTest extends BaseTestCase { | |||||||
| 		double expTotalMass = 3.3565872; | 		double expTotalMass = 3.3565872; | ||||||
| 		assertEquals(" Booster Launch Mass is incorrect: ", expTotalMass, boosterData.getMass(), EPSILON); | 		assertEquals(" Booster Launch Mass is incorrect: ", expTotalMass, boosterData.getMass(), EPSILON); | ||||||
| 
 | 
 | ||||||
| 		double expCMx = 0.847508988; | 		double expCMx = 0.2835089882645608; | ||||||
| 		Coordinate expCM = new Coordinate(expCMx, 0, 0, expTotalMass); | 		Coordinate expCM = new Coordinate(expCMx, 0, 0, expTotalMass); | ||||||
| 		assertEquals(" Booster Launch CM.x is incorrect: ", expCM.x, boosterCM.x, EPSILON); | 		assertEquals(" Booster Launch CM.x is incorrect: ", expCM.x, boosterCM.x, EPSILON); | ||||||
| 		assertEquals(" Booster Launch CM.y is incorrect: ", expCM.y, boosterCM.y, EPSILON); | 		assertEquals(" Booster Launch CM.y is incorrect: ", expCM.y, boosterCM.y, EPSILON); | ||||||
| @ -1099,7 +1099,7 @@ public class MassCalculatorTest extends BaseTestCase { | |||||||
| 		double calcTotalMass = structure.getMass(); | 		double calcTotalMass = structure.getMass(); | ||||||
| 		assertEquals(" Booster Launch Mass is incorrect: ", expMass, calcTotalMass, EPSILON); | 		assertEquals(" Booster Launch Mass is incorrect: ", expMass, calcTotalMass, EPSILON); | ||||||
| 
 | 
 | ||||||
| 		final double expCMx = 1.1191303646438673; | 		final double expCMx = 0.5551303646438673; | ||||||
| 		Coordinate expCM = new Coordinate(expCMx, 0, 0, expMass); | 		Coordinate expCM = new Coordinate(expCMx, 0, 0, expMass); | ||||||
| 		assertEquals(" Booster Launch CM.x is incorrect: ", expCM.x, structure.getCM().x, EPSILON); | 		assertEquals(" Booster Launch CM.x is incorrect: ", expCM.x, structure.getCM().x, EPSILON); | ||||||
| 		assertEquals(" Booster Launch CM.y is incorrect: ", expCM.y, structure.getCM().y, EPSILON); | 		assertEquals(" Booster Launch CM.y is incorrect: ", expCM.y, structure.getCM().y, EPSILON); | ||||||
|  | |||||||
| @ -42,7 +42,7 @@ public class DisableStageTest extends BaseTestCase { | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         //// Test re-enableing the stage. |         //// Test re-enabling the stage. | ||||||
|         Rocket rocketOriginal = TestRockets.makeEstesAlphaIII(); |         Rocket rocketOriginal = TestRockets.makeEstesAlphaIII(); | ||||||
| 
 | 
 | ||||||
|         Simulation simOriginal = new Simulation(rocketOriginal); |         Simulation simOriginal = new Simulation(rocketOriginal); | ||||||
| @ -81,7 +81,7 @@ public class DisableStageTest extends BaseTestCase { | |||||||
| 
 | 
 | ||||||
|         compareSims(simRemoved, simDisabled, delta); |         compareSims(simRemoved, simDisabled, delta); | ||||||
| 
 | 
 | ||||||
|         //// Test re-enableing the stage. |         //// Test re-enabling the stage. | ||||||
|         Rocket rocketOriginal = TestRockets.makeBeta(); |         Rocket rocketOriginal = TestRockets.makeBeta(); | ||||||
|         Simulation simOriginal = new Simulation(rocketOriginal); |         Simulation simOriginal = new Simulation(rocketOriginal); | ||||||
|         simOriginal.setFlightConfigurationId(TestRockets.TEST_FCID_1); |         simOriginal.setFlightConfigurationId(TestRockets.TEST_FCID_1); | ||||||
| @ -173,7 +173,7 @@ public class DisableStageTest extends BaseTestCase { | |||||||
| 
 | 
 | ||||||
|         compareSims(simRemoved, simDisabled, delta); |         compareSims(simRemoved, simDisabled, delta); | ||||||
| 
 | 
 | ||||||
|         //// Test re-enableing the stage. |         //// Test re-enabling the stage. | ||||||
|         Rocket rocketOriginal = TestRockets.makeFalcon9Heavy(); |         Rocket rocketOriginal = TestRockets.makeFalcon9Heavy(); | ||||||
| 		TestRockets.addCoreFins(rocketOriginal); | 		TestRockets.addCoreFins(rocketOriginal); | ||||||
| 		 | 		 | ||||||
| @ -232,7 +232,7 @@ public class DisableStageTest extends BaseTestCase { | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         //// Test re-enableing the stage. |         //// Test re-enabling the stage. | ||||||
|         Rocket rocketOriginal = TestRockets.makeFalcon9Heavy(); |         Rocket rocketOriginal = TestRockets.makeFalcon9Heavy(); | ||||||
| 		TestRockets.addCoreFins(rocketOriginal); | 		TestRockets.addCoreFins(rocketOriginal); | ||||||
| 		 | 		 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user