// Use this for initialization void Start() { ge = GravityEngine.Instance(); x_axis = new Vector3d(1, 0, 0); // mass scaling will cancel in this ratio soiRadius = OrbitUtils.SoiRadius(planet, moonBody); // TODO: allow moon to be OrbitUniversal as well. OrbitUniversal moonOrbit = moonBody.gameObject.GetComponent <OrbitUniversal>(); if (moonOrbit == null) { Debug.LogError("Moon is required to have OrbitUniversal"); } moonRadius = moonOrbit.GetMajorAxis(); shipOrbit = spaceship.GetComponent <OrbitUniversal>(); if (shipOrbit == null) { Debug.LogError("Require that the ship have an OrbitU"); } if (shipOrbit.evolveMode != OrbitUniversal.EvolveMode.KEPLERS_EQN) { Debug.LogError("Controller requires ship on-rails but spaceship is off-rails"); } // assuming circular orbit for ship shipRadius = shipOrbit.GetApogee(); shipOrbitPredictor = spaceship.GetComponentInChildren <OrbitPredictor>(); }
/// <summary> /// Construct an orbit data routine from an existing orbit universal by copying the orbital elements /// </summary> /// <param name="orbitU"></param> public OrbitData(OrbitUniversal orbitU) { a = (float)orbitU.GetMajorAxis(); omega_lc = (float)orbitU.omega_lc; omega_uc = (float)orbitU.omega_uc; inclination = (float)orbitU.inclination; ecc = (float)orbitU.eccentricity; phase = (float)orbitU.phase; nbody = orbitU.GetNBody(); centralMass = orbitU.centerNbody; mu = GravityEngine.Instance().GetPhysicsMass(centralMass); period = CalcPeriod(); }