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 { } } }
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); } } }