public void UpdateSimulation() { if (orbitDecay != 0) { orbit.periapsis += orbitDecay * Time.deltaTime * orbit.timeScale; if (orbit.periapsis <= 0) { //behaviour beyond this point is undefined, best not upset the Kraken ResetSimulation(); StopSimulation(); orbit.StopSimulation(); } else { orbit.period = Math.Sqrt( (periodOriginal * periodOriginal) * (orbit.periapsis * orbit.periapsis * orbit.periapsis) / (semiMajorAxisOriginal * semiMajorAxisOriginal * semiMajorAxisOriginal) ); } } if (apsidalPrecession != 0) { orbit.argument = Kepler.WrapAngle(orbit.argument - apsidalPrecession * Time.deltaTime * (float)orbit.timeScale, -180, 180); } }
public void UpdateSimulation() { angle = Kepler.WrapAngle(angle + Time.deltaTime * rate * timeScale, 0, 2 * Math.PI); ComputeDynamicProperties(angle); transform.localRotation = rotation; }
public void ResetSimulation() { angle = Kepler.WrapAngle(meanAngle * Deg2Rad + startEpoch * rate, 0, 2 * Math.PI); }