private static double GetHourHorizon( this CelestialObjectPositionModel celestialObjectPosition, double latitudeDegrees, double h0) { if (h0.EqualsWithinTolerance(0, 6)) { return(DegreeHelper.RadiansToDegrees( Math.Acos( -MathDegrees.Tan(latitudeDegrees) * MathDegrees.Tan(celestialObjectPosition.Declination)))); } return(DegreeHelper.RadiansToDegrees(Math.Acos( (MathDegrees.Sin(h0) - (MathDegrees.Sin(latitudeDegrees) * MathDegrees.Sin(celestialObjectPosition.Declination))) / (MathDegrees.Cos(latitudeDegrees) * MathDegrees.Cos(celestialObjectPosition.Declination))))); }
internal static SkyPositionModel GetSkyPosition( double declination, double latitude, DateTimeOffset dateTimeOffset, double siderealTime) { var azimuth = DegreeHelper.RadiansToDegrees( Math.Atan2( MathDegrees.Sin(siderealTime), (MathDegrees.Cos(siderealTime) * MathDegrees.Sin(latitude)) - (MathDegrees.Tan(declination) * MathDegrees.Cos(latitude)))); var height = DegreeHelper.RadiansToDegrees( Math.Asin( (MathDegrees.Sin(latitude) * MathDegrees.Sin(declination)) + (MathDegrees.Cos(latitude) * MathDegrees.Cos(declination) * MathDegrees.Cos(siderealTime)))); return(new SkyPositionModel(dateTimeOffset, height, azimuth)); }