private void UpdateLiveValues()
        {
            if (target != null)
            {
                if (target.Type == ImageSetType.Planet || target.Type == ImageSetType.Earth)
                {
                    UpdateLiveValuesPlanet();
                    return;
                }

                raText.Text  = Coordinates.FormatHMS(target.RA);
                decText.Text = Coordinates.FormatDMSWide(target.Dec);
                Coordinates altAz = Coordinates.EquitorialToHorizon(Coordinates.FromRaDec(target.RA, target.Dec), SpaceTimeController.Location, SpaceTimeController.Now);
                altText.Text = Coordinates.FormatDMSWide(altAz.Alt);
                azText.Text  = Coordinates.FormatDMSWide(altAz.Az);

                AstroCalc.RiseSetDetails details;
                // try
                {
                    if (target.Classification == Classification.SolarSystem)
                    {
                        double jNow             = ((int)((int)SpaceTimeController.JNow) + .5);
                        AstroCalc.AstroRaDec p1 = Planets.GetPlanetLocation(target.Name, jNow - 1);
                        AstroCalc.AstroRaDec p2 = Planets.GetPlanetLocation(target.Name, jNow);
                        AstroCalc.AstroRaDec p3 = Planets.GetPlanetLocation(target.Name, jNow + 1);

                        int type = 0;
                        switch (target.Name)
                        {
                        case "Sun":
                            type = 1;
                            break;

                        case "Moon":
                            type = 2;
                            break;

                        default:
                            type = 0;
                            break;
                        }
                        details = AstroCalc.AstroCalc.GetRiseTrinsitSet(jNow, SpaceTimeController.Location.Lat, -SpaceTimeController.Location.Lng, p1.RA, p1.Dec, p2.RA, p2.Dec, p3.RA, p3.Dec, type);
                    }
                    else
                    {
                        details = AstroCalc.AstroCalc.GetRiseTrinsitSet(((int)SpaceTimeController.JNow) + .5, SpaceTimeController.Location.Lat, -SpaceTimeController.Location.Lng, target.RA, Target.Dec, target.RA, Target.Dec, target.RA, Target.Dec, 0);
                    }


                    if (details.bValid)
                    {
                        riseText.Text    = UiTools.FormatDecimalHours(details.Rise);
                        transitText.Text = UiTools.FormatDecimalHours(details.Transit);
                        setText.Text     = UiTools.FormatDecimalHours(details.Set);
                    }
                    else
                    {
                        if (details.bNeverRises)
                        {
                            riseText.Text = transitText.Text = setText.Text = Language.GetLocalizedText(934, "Never Rises");
                        }
                        else
                        {
                            riseText.Text = transitText.Text = setText.Text = Language.GetLocalizedText(935, "Never Sets");
                        }
                    }
                    if (target.Distance != 0)
                    {
                        this.distanceValue.Text = UiTools.FormatDistance(target.Distance);
                    }
                    else
                    {
                        this.distanceValue.Text = Language.GetLocalizedText(281, "n/a");
                    }
                }
                //catch
                {
                }
            }
        }
Esempio n. 2
0
        private void GoToRADec_Click(object sender, EventArgs e)
        {
            int index = coordinateType.SelectedIndex;


            double ra       = 0;
            double dec      = 0;
            bool   raValid  = false;
            bool   decValid = false;

            switch (index)
            {
            case 0:     // Equitorial
            {
                ra       = Coordinates.ParseRA(raText.Text, false);
                dec      = Coordinates.ParseDec(decText.Text);
                raValid  = Coordinates.ValidateRA(raText.Text);
                decValid = Coordinates.ValidateDec(decText.Text);
            }
            break;

            case 2:     // Galactic
            {
                double l = Coordinates.Parse(raText.Text);
                double b = Coordinates.ParseDec(decText.Text);
                raValid  = Coordinates.Validate(raText.Text);
                decValid = Coordinates.ValidateDec(decText.Text);
                if (raValid && decValid)
                {
                    double[] result = Earth3d.GalactictoJ2000(l, b);
                    ra  = result[0] / 15;
                    dec = result[1];
                }
            }
            break;

            case 3:     // Ecliptic
            {
                double l = Coordinates.Parse(raText.Text);
                double b = Coordinates.ParseDec(decText.Text);
                raValid  = Coordinates.Validate(raText.Text);
                decValid = Coordinates.ValidateDec(decText.Text);
                if (raValid && decValid)
                {
                    AstroCalc.AstroRaDec radec = AstroCalc.AstroCalc.EclipticToJ2000(l, b, SpaceTimeController.JNow);
                    ra  = radec.RA;
                    dec = radec.Dec;
                }
            }
            break;

            case 4:     // Geo
            {
                ra       = -Coordinates.Parse(raText.Text) / 15;
                dec      = Coordinates.ParseDec(decText.Text);
                raValid  = Coordinates.Validate(raText.Text);
                decValid = Coordinates.ValidateDec(decText.Text);
            }
            break;

            case 1:     // alt/az
            {
                double az  = Coordinates.Parse(raText.Text);
                double alt = Coordinates.ParseDec(decText.Text);
                raValid  = Coordinates.Validate(raText.Text);
                decValid = Coordinates.ValidateDec(decText.Text);
                Coordinates radec = Coordinates.HorizonToEquitorial(Coordinates.FromLatLng(alt, az), SpaceTimeController.Location, SpaceTimeController.Now);
                ra  = radec.RA;
                dec = radec.Dec;
            }
            break;
            }
            if (raValid && decValid)
            {
                if (Earth3d.MainWindow.SolarSystemMode)
                {
                    Vector3d pnt = Coordinates.GeoTo3dDouble(dec, Coordinates.Parse(raText.Text));


                    pnt = Vector3d.TransformCoordinate(pnt, Planets.EarthMatrix);
                    pnt.Normalize();
                    Vector2d radec = Coordinates.CartesianToLatLng(pnt);

                    Earth3d.MainWindow.TargetLat  = radec.Y;
                    Earth3d.MainWindow.TargetLong = radec.X - 90;
                }
                else
                {
                    Earth3d.MainWindow.GotoTargetRADec(ra, dec, true, false);
                }
            }
        }