From e0ebef261c3aaa86965e990a7f9a6cb65214ede8 Mon Sep 17 00:00:00 2001 From: JoePfeiffer Date: Wed, 17 Jul 2024 18:07:14 -0600 Subject: [PATCH] Remove store.rollAcceleration and store.lateralPitchAcceleration. That data is in store.AccelerationData --- .../simulation/AbstractSimulationStepper.java | 3 --- .../core/simulation/RK4SimulationStepper.java | 18 ++++++------------ 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/core/src/main/java/info/openrocket/core/simulation/AbstractSimulationStepper.java b/core/src/main/java/info/openrocket/core/simulation/AbstractSimulationStepper.java index 7ef9de44d..474d6c474 100644 --- a/core/src/main/java/info/openrocket/core/simulation/AbstractSimulationStepper.java +++ b/core/src/main/java/info/openrocket/core/simulation/AbstractSimulationStepper.java @@ -257,9 +257,6 @@ public abstract class AbstractSimulationStepper implements SimulationStepper { public double dragForce = Double.NaN; public double lateralPitchRate = Double.NaN; - public double rollAcceleration = Double.NaN; - public double lateralPitchAcceleration = Double.NaN; - public Rotation2D thetaRotation; void storeData(SimulationStatus status) { diff --git a/core/src/main/java/info/openrocket/core/simulation/RK4SimulationStepper.java b/core/src/main/java/info/openrocket/core/simulation/RK4SimulationStepper.java index ac8496d42..889e74d17 100644 --- a/core/src/main/java/info/openrocket/core/simulation/RK4SimulationStepper.java +++ b/core/src/main/java/info/openrocket/core/simulation/RK4SimulationStepper.java @@ -57,7 +57,7 @@ public class RK4SimulationStepper extends AbstractSimulationStepper { // private static final double MAX_ROLL_STEP_ANGLE = 8.32 * Math.PI/180; private static final double MAX_ROLL_RATE_CHANGE = 2 * Math.PI / 180; - private static final double MAX_PITCH_CHANGE = 4 * Math.PI / 180; + private static final double MAX_PITCH_YAW_CHANGE = 4 * Math.PI / 180; private Random random; DataStore store = new DataStore(); @@ -133,8 +133,10 @@ public class RK4SimulationStepper extends AbstractSimulationStepper { dt[1] = maxTimeStep; dt[2] = status.getSimulationConditions().getMaximumAngleStep() / store.lateralPitchRate; dt[3] = Math.abs(MAX_ROLL_STEP_ANGLE / store.flightConditions.getRollRate()); - dt[4] = Math.abs(MAX_ROLL_RATE_CHANGE / store.rollAcceleration); - dt[5] = Math.abs(MAX_PITCH_CHANGE / store.lateralPitchAcceleration); + dt[4] = Math.abs(MAX_ROLL_RATE_CHANGE / store.accelerationData.getRotationalAccelerationRC().z); + dt[5] = Math.abs(MAX_PITCH_YAW_CHANGE / + MathUtil.max(Math.abs(store.accelerationData.getRotationalAccelerationRC().x), + Math.abs(store.accelerationData.getRotationalAccelerationRC().y))); if (!status.isLaunchRodCleared()) { dt[0] /= 5.0; dt[6] = status.getSimulationConditions().getLaunchRodLength() / k1.v.length() / 10; @@ -354,8 +356,6 @@ public class RK4SimulationStepper extends AbstractSimulationStepper { linearAcceleration = store.launchRodDirection.multiply(linearAcceleration.dot(store.launchRodDirection)); angularAcceleration = Coordinate.NUL; - store.rollAcceleration = 0; - store.lateralPitchAcceleration = 0; } else { @@ -368,21 +368,15 @@ public class RK4SimulationStepper extends AbstractSimulationStepper { double momY = Cm * dynP * refArea * refLength; double momZ = store.forces.getCroll() * dynP * refArea * refLength; - // Compute acceleration in rocket coordinates + // Compute angular acceleration in rocket coordinates angularAcceleration = new Coordinate(momX / store.rocketMass.getLongitudinalInertia(), momY / store.rocketMass.getLongitudinalInertia(), momZ / store.rocketMass.getRotationalInertia()); - store.rollAcceleration = angularAcceleration.z; - // TODO: LOW: This should be hypot, but does it matter? - store.lateralPitchAcceleration = MathUtil.max(Math.abs(angularAcceleration.x), - Math.abs(angularAcceleration.y)); - angularAcceleration = store.thetaRotation.rotateZ(angularAcceleration); // Convert to world coordinates angularAcceleration = status.getRocketOrientationQuaternion().rotate(angularAcceleration); - } return new AccelerationData(null, null, linearAcceleration, angularAcceleration, status.getRocketOrientationQuaternion());