public virtual void UpdateOrbit(double time) { if (Orbiting != null) { var mu = Orbiting.mass * GravitationalConstant; if (orbitalElements == null) { orbitalElements = mechanicalElements.ToOrbitalElements(mu); } orbitalElements.UpdateTrueAnomoly(mu, time); mechanicalElements = orbitalElements.ToMechanicalElements(mu); } OrbitedBy?.ForEach(b => { b.Orbiting = this; b.UpdateOrbit(time); }); UpdateRepresentation(); }
public static Vector3 WorldPosition(MechanicalElements me, GravitationalBody orbiting) { return((orbiting.mechanicalElements.position + me.position).Scaled.Vector); }