コード例 #1
0
ファイル: OrbitData.cs プロジェクト: dfederspiel/Haystack
 public static OrbitData FromOrbit(Orbit orbit)
 {
     return(new OrbitData
     {
         SOI = orbit.referenceBody.bodyName,
         AP = Converters.Distance(Math.Max(0, orbit.ApA)),
         PE = Converters.Distance(Math.Max(0, orbit.PeA)),
         timeToAP = Converters.Duration(Math.Max(0, orbit.timeToAp)),
         timeToPE = Converters.Duration(Math.Max(0, orbit.timeToPe)),
         INC = orbit.inclination.ToString("F3") + "°",
         Period = Converters.Duration(Math.Max(0, orbit.period), 4),
         IsSOIChange = orbit.patchEndTransition == Orbit.PatchTransitionType.ESCAPE || orbit.patchEndTransition == Orbit.PatchTransitionType.ENCOUNTER,
         SOIChangeTime = Converters.Duration(orbit.UTsoi - Planetarium.GetUniversalTime()),
         SOIChangeDate = KSPUtil.PrintDateCompact(orbit.UTsoi, true, true)
     });
 }
コード例 #2
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
            });
        }