Merge pull request #2591 from JoePfeiffer/clamp-acceleration

Don't let vertical acceleration be negative before liftoff.
This commit is contained in:
Joe Pfeiffer 2024-11-14 10:01:07 -07:00 committed by GitHub
commit 4b2132cc4b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -348,9 +348,16 @@ public class RK4SimulationStepper extends AbstractSimulationStepper {
.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;