From 7014ff0c74b2303f56191de5bf32c90acf19a8f4 Mon Sep 17 00:00:00 2001 From: jpb10 <4648556+jpb10@users.noreply.github.com> Date: Thu, 27 Oct 2022 10:54:20 -0400 Subject: [PATCH] Fix issue #6 --- src/SolarCalculator.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/SolarCalculator.cpp b/src/SolarCalculator.cpp index 6050218..264e443 100644 --- a/src/SolarCalculator.cpp +++ b/src/SolarCalculator.cpp @@ -237,7 +237,7 @@ void calcRiseSetTimes(double (&m)[3], JulianDay jd, double latitude, double long double H0 = degrees(acos((sin(radians(h0)) - sin(radians(latitude)) * sin(radians(dec))) / (cos(radians(latitude)) * cos(radians(dec))))); - m[0] = wrapTo360(ra - longitude - GMST + jd.m * 360) / 360; + m[0] = jd.m + wrapTo180(ra - longitude - GMST) / 360; m[1] = m[0] - H0 / 360; m[2] = m[0] + H0 / 360; } @@ -250,20 +250,20 @@ void calcSunriseSunset(JulianDay jd, double latitude, double longitude, m[0] = 0.5 - longitude / 360; for (int i = 0; i <= iterations; i++) - { - for (int j = 0; j < 3; j++) + for (int event = 0; event < 3; event++) { - jd.m = m[j]; + jd.m = m[event]; calcRiseSetTimes(times, jd, latitude, longitude, altitude); - m[j] = times[j]; + m[event] = times[event]; - if (i == 0) // first iteration + // First iteration, approximate rise and set times + if (i == 0) { - m[1] = times[1]; m[2] = times[2]; // approximate rise and set times + m[1] = times[1]; + m[2] = times[2]; break; } } - } transit = m[0] * 24; sunrise = m[1] * 24;