Ejemplo n.º 1
0
        private List <DisplayItem> getPhysicalData(CelestialBody body)
        {
            var radius  = DisplayItem.Create("Radius: ", (body.Radius / 1000d).ToString("N0") + "km");
            var mass    = DisplayItem.Create("Mass: ", body.Mass.ToString("0.###E+0") + "kg");
            var gm      = DisplayItem.Create("GM: ", body.gravParameter.ToString("0.###E+0"));
            var gravity = DisplayItem.Create("Surface Gravity: ", body.GeeASL.ToString("0.####") + "g");

            var escape = 2d * body.gravParameter / body.Radius;

            escape = Math.Sqrt(escape);

            var escapeVelocity = DisplayItem.Create("Escape Velocity: ", escape.ToString("0.0") + "m/s");

            double alt           = body.atmosphere ? body.atmosphereDepth + 20000 : 15000;
            var    orbitVelocity = Math.Sqrt(body.gravParameter / (body.Radius + alt));

            var standardOrbitVelocity = DisplayItem.Create("Std Orbit Velocity: ",
                                                           orbitVelocity.ToString("0.0") + "m/s @ " + Converters.Distance(alt));

            var rotationalPeriod = DisplayItem.Create("Rotational Period: ", Converters.Duration(body.rotationPeriod));
            var tidalLocked      = DisplayItem.Create("Tidally Locked: ", body.tidallyLocked ? "Yes" : "No");
            var soiSize          = DisplayItem.Create("SOI Size: ", (body.sphereOfInfluence / 1000d).ToString("N0") + "km");

            return(new List <DisplayItem>
            {
                radius,
                mass,
                gm,
                gravity,
                standardOrbitVelocity,
                escapeVelocity,
                rotationalPeriod,
                tidalLocked,
                soiSize
            });
        }