public HorizontalCoordinates ToHorizontalCoordinates(Radian latitude, Radian longitude, DateTime utcTime) { var hourAngle = new SunInfoCalculator(utcTime).HourAngle(longitude); double rightSide1 = Math.Sin(latitude.Value) * Math.Sin(Declination.Value) + Math.Cos(latitude.Value) * Math.Cos(Declination.Value) * Math.Cos(hourAngle.Value); double rightSide2 = Math.Cos(latitude.Value) * Math.Sin(Declination.Value) - Math.Sin(latitude.Value) * Math.Cos(Declination.Value) * Math.Cos(hourAngle.Value); double rightSide3 = -Math.Cos(Declination.Value) * Math.Sin(hourAngle.Value); PolarCoordinates polarCoordinates = new CartesianCoordinates(rightSide2, rightSide3).ToPolarCoordinates(); var azimuth = polarCoordinates.Angle; if (azimuth.Value < 0) { azimuth = new Degree(360.0).ToRadian() - (-azimuth); } polarCoordinates = new CartesianCoordinates(polarCoordinates.Radius, rightSide1).ToPolarCoordinates(); var altitude = polarCoordinates.Angle; double mustBe1 = polarCoordinates.Radius; return new HorizontalCoordinates(azimuth, altitude); }
public EquatorialCoordinates ToEquatorialCoordinates(Radian latitude) { throw new NotImplementedException(); }
public HorizontalCoordinates(Radian azimuth, Radian altitude) { _azimuth = azimuth; _altitude = altitude; }
public Radian HourAngle(Radian longitude) { var hourAngle = GreenwichSiderealTime - (-longitude) - RightAscension; if (hourAngle.Value < 0) { hourAngle = new Degree(TimeSpan.FromHours(24.0)).ToRadian() + hourAngle; } return hourAngle; }
public EquatorialCoordinates(Radian rightAscension, Radian declination) { _rightAscension = rightAscension; _declination = declination; }