Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
 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");
 }