Files
2021-03-02 20:24:13 +00:00

79 lines
1.8 KiB
C#

using System;
using ASCOM.Utilities;
namespace ASCOM.Meade.net.AstroMaths
{
public static class AstroMathExtensions
{
public static double DegreesToRadians(this double degrees)
{
return (Math.PI / 180) * degrees;
}
public static double RadiansToDegrees(this double radians)
{
double degrees = (180 / Math.PI) * radians;
return degrees;
}
public static double DateTimeToDecimalHours(this DateTime utcDateTime)
{
double sec = utcDateTime.Second;
double min = utcDateTime.Minute;
double hour = utcDateTime.Hour;
var a = Math.Abs(sec) / 60;
var b = (Math.Abs(min) + a) / 60;
var c = Math.Abs(hour) + b;
var d = c;
if ((hour < 0) || (min < 0) || (sec < 0))
d = -c;
return d;
}
public static double UTtoGst( this DateTime utcDateTime)
{
Util util = new Util();
var jd = util.DateUTCToJulian(utcDateTime) - 0.5;
if ((jd % 1) <= 0.5)
jd = Math.Floor(jd);
else
jd = Math.Floor(jd) + 0.5;
var s = jd - 2451545.0;
var t = s / 36525.0;
var t0 = 6.697374558 + (2400.051336 * t) + (0.000025862 * (t * t));
while (t0 < 0)
{
t0 += 24;
}
while (t0 >= 24)
{
t0 -= 24;
}
var ut = utcDateTime.DateTimeToDecimalHours();
var a = ut * 1.002737909;
var t1 = t0 + a;
while (t1 < 0)
{
t1 += 24;
}
while (t1 >= 24)
{
t1 -= 24;
}
return t1;
}
}
}