public SunData Get(DateTime utcDateTime, Degree latitude, Degree longitude) { _calculator.SetTime(utcDateTime); var data = new SunData(); data.JulianDate = _calculator.JulianDate; data.UtcTime = utcDateTime; data.LocalTime = utcDateTime.ToLocalTime(); data.SunEarthDistAU = _calculator.SunEarthDistance; data.SunEarthDistKm = _calculator.SunEarthDistanceKm; data.AxialTilt = _calculator.AxialTilt; Radian rightAscension = _calculator.RightAscension; data.RightAscension = rightAscension.ToDegree().ToTimeSpan(); Radian declination = _calculator.Declination; data.Declination = declination.ToDegree(); data.AngularDiameter = _calculator.AngularDiameter.ToDegree(); data.HourAngle = _calculator.HourAngle(longitude.ToRadian()).ToDegree().ToTimeSpan(); var equatorialCoordinates = new EquatorialCoordinates(rightAscension, declination); var horizontalCoordinates = equatorialCoordinates.ToHorizontalCoordinates(latitude.ToRadian(), longitude.ToRadian(), utcDateTime); data.Azimuth = horizontalCoordinates.Azimuth.ToDegree(); data.Altitude = horizontalCoordinates.Altitude.ToDegree(); data.ShadowRatio = Utils.GetShadowRatio(data.Altitude); data.Sunrise = _calculator.Sunrise(longitude, latitude); data.Transit = _calculator.SolarTransit(longitude); data.Sunset = _calculator.Sunset(longitude, latitude); return data; }
private void FillUiItems(SunData sunData) { textBlockJD.Text = sunData.JulianDate.ToString("0.00000"); textBlockUTC.Text = sunData.UtcTime.ToString(CultureInfo.CurrentUICulture); textBlockLocalTime.Text = sunData.LocalTime.ToString(CultureInfo.CurrentUICulture); textBlockSunEarthDistAU.Text = sunData.SunEarthDistAU.ToString("0.00000000"); textBlockSunEarthDistKm.Text = sunData.SunEarthDistKm.ToString("### ### ##0"); textBlockAxialTilt.Text = sunData.AxialTilt.ToString(true); textBlockRA.Text = string.Format("{0}h {1}m {2}s", sunData.RightAscension.Hours, sunData.RightAscension.Minutes, sunData.RightAscension.Seconds); textBlockDec.Text = sunData.Declination.ToString(); textBlockAngularDiameter.Text = sunData.AngularDiameter.ToString(true); textBlockHourAngle.Text = string.Format("{0}h {1}m {2}s", sunData.HourAngle.Hours, sunData.HourAngle.Minutes, sunData.HourAngle.Seconds); textBlockAz.Text = sunData.Azimuth.ToString(); textBlockAlt.Text = sunData.Altitude.ToString(); textBlockShadowRatio.Text = double.IsNaN(sunData.ShadowRatio) ? "-" : sunData.ShadowRatio.ToString("0.000"); DateTime? sunrise = sunData.Sunrise; textBlockSunrise.Text = sunrise == null ? "-" : sunrise.Value.ToLocalTime().ToString("HH:mm"); DateTime? solarTransit = sunData.Transit; textBlockTransit.Text = solarTransit == null ? "-" : solarTransit.Value.ToLocalTime().ToString("HH:mm"); DateTime? sunset = sunData.Sunset; textBlockSunset.Text = sunset == null ? "-" : sunset.Value.ToLocalTime().ToString("HH:mm"); }