Implemenated a few todo notes

This commit is contained in:
2020-09-03 13:11:47 +01:00
parent 8d097fefe1
commit f9792b22bc
4 changed files with 22 additions and 97 deletions
+14 -90
View File
@@ -1,5 +1,4 @@
using System;
using ASCOM.Utilities;
namespace ASCOM.Meade.net.AstroMaths
{
@@ -10,7 +9,7 @@ namespace ASCOM.Meade.net.AstroMaths
public double RightAscensionToHourAngle(DateTime utcDateTime, double longitude, double rightAscension)
{
//var ut = DateTimeToDecimalHours( utcDateTime);
var gst = UTtoGst( utcDateTime);
var gst = utcDateTime.UTtoGst();
var lst = GsTtoLst( gst, longitude);
var raHours = rightAscension;
var h1 = lst - raHours;
@@ -24,7 +23,7 @@ namespace ASCOM.Meade.net.AstroMaths
private double HourAngleToRightAscension(DateTime utcDateTime, double longitude, double hourAngle )
{
var gst = UTtoGst(utcDateTime);
var gst = utcDateTime.UTtoGst();
var lst = GsTtoLst( gst, longitude);
var raHours = hourAngle;
var h1 = lst - raHours;
@@ -39,17 +38,17 @@ namespace ASCOM.Meade.net.AstroMaths
public EquatorialCoordinates ConvertHozToEq( DateTime utcDateTime, double latitude, double longitude, HorizonCoordinates altAz)
{
var az = DegreesToRadians(altAz.Azimuth);
var alt = DegreesToRadians(altAz.Altitude);
var lat = DegreesToRadians(latitude);
var az = altAz.Azimuth.DegreesToRadians();
var alt = altAz.Altitude.DegreesToRadians();
var lat = latitude.DegreesToRadians();
var sinDec = Math.Sin(alt) * Math.Sin(lat) + Math.Cos(alt) * Math.Cos(lat) * Math.Cos(az);
var dec = RadiansToDegrees(Math.Asin(sinDec));
var dec = Math.Asin(sinDec).RadiansToDegrees();
var y = -Math.Cos(alt) * Math.Cos(lat) * Math.Sin(az);
var x = Math.Sin(alt) - Math.Sin(lat) * sinDec;
var upperA = Math.Atan2(y,x);
var upperB = RadiansToDegrees(upperA);
var upperB = upperA.RadiansToDegrees();
var ha = upperB;
@@ -72,19 +71,20 @@ namespace ASCOM.Meade.net.AstroMaths
public HorizonCoordinates ConvertEqToHoz(double hourAngle, double latitude, EquatorialCoordinates raDec)
{
var h = hourAngle * 15;
var h1 = DegreesToRadians(h);
var d = DegreesToRadians(raDec.Declination);
var lat = DegreesToRadians(latitude);
var h1 = h.DegreesToRadians();
var d = raDec.Declination.DegreesToRadians();
var lat = latitude.DegreesToRadians();
var sinA = Math.Sin(d) * Math.Sin(lat) + Math.Cos(d) * Math.Cos(lat) * Math.Cos(h1);
var y = -Math.Cos(d) * Math.Cos(lat) * Math.Sin(h1);
var x = Math.Sin(d) - Math.Sin(lat) * sinA;
var upperA = Math.Atan2(y, x);
var upperB = RadiansToDegrees(upperA);
var upperB = upperA.RadiansToDegrees();
var horizonCoordinates = new HorizonCoordinates
{
Altitude = RadiansToDegrees(Math.Asin(sinA)), Azimuth = upperB
Altitude = Math.Asin(sinA).RadiansToDegrees(),
Azimuth = upperB
};
@@ -96,82 +96,6 @@ namespace ASCOM.Meade.net.AstroMaths
return horizonCoordinates;
}
//todo convert to extension method
public double DegreesToRadians(double degrees)
{
return (Math.PI / 180) * degrees;
}
//todo convert to extension method
public double RadiansToDegrees(double radians)
{
double degrees = (180 / Math.PI) * radians;
return degrees;
}
//todo convert to extension method
public double DateTimeToDecimalHours( 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;
}
//todo convert to extension method
public double UTtoGst(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 = DateTimeToDecimalHours(utcDateTime);
var a = ut * 1.002737909;
var t1 = t0 + a;
while (t1 < 0)
{
t1 += 24;
}
while (t1 >= 24)
{
t1 -= 24;
}
return t1;
}
public double GsTtoLst(double gst, double longitude)
{
var l = longitude/ 15;
@@ -189,4 +113,4 @@ namespace ASCOM.Meade.net.AstroMaths
return lst;
}
}
}
}