Don't let vertical acceleration be negative before liftoff.

This commit is contained in:
JoePfeiffer 2024-11-10 08:44:32 -07:00
parent b2bc838e9a
commit 4bfdb5c0e3

View File

@ -347,10 +347,17 @@ public class RK4SimulationStepper extends AbstractSimulationStepper {
store.coriolisAcceleration = status.getSimulationConditions().getGeodeticComputation() store.coriolisAcceleration = status.getSimulationConditions().getGeodeticComputation()
.getCoriolisAcceleration(status.getRocketWorldPosition(), status.getRocketVelocity()); .getCoriolisAcceleration(status.getRocketWorldPosition(), status.getRocketVelocity());
linearAcceleration = linearAcceleration.add(store.coriolisAcceleration); linearAcceleration = linearAcceleration.add(store.coriolisAcceleration);
// If still on the launch rod, project acceleration onto launch rod direction and // If we haven't taken off yet, don't sink into the ground
// set angular acceleration to zero. if (!status.isLiftoff()) {
if (!status.isLaunchRodCleared()) { angularAcceleration = Coordinate.NUL;
if (linearAcceleration.z < 0) {
linearAcceleration = Coordinate.ZERO;
}
} else if (!status.isLaunchRodCleared()) {
// If still on the launch rod, project acceleration onto launch rod direction and
// set angular acceleration to zero.
linearAcceleration = store.launchRodDirection.multiply(linearAcceleration.dot(store.launchRodDirection)); linearAcceleration = store.launchRodDirection.multiply(linearAcceleration.dot(store.launchRodDirection));
angularAcceleration = Coordinate.NUL; angularAcceleration = Coordinate.NUL;