getSunLocation function
Calculates the Sun position on a given UTC time.
Implementation
LatLng getSunLocation(DateTime utcNow) {
var gst = _toGreenwichMeanSiderealTime(utcNow);
double num1 = _toJulian(utcNow) * 2.7378507871321E-05;
double num2 = num1 * num1;
double num3 = pi /
180.0 *
((280.466457 + 36000.7698278 * num1 + 0.00030322 * num2) % 360.0);
double num4 = pi /
180.0 *
((282.937348 + 1.7195366 * num1 + 0.00045688 * num2) % 360.0);
double num5 = 0.01670843 - 4.2037E-05 * num1 - 1.267E-07 * num2;
double num6 = num3 - num4;
double d = num6;
double num7;
do {
num7 = d;
d = num7 + (num6 + num5 * sin(num7) - num7) / (1.0 - num5 * cos(num7));
} while ((d - num7).abs() > 1E-09);
double num8 = 2.0 * atan(sqrt((1.0 + num5) / (1.0 - num5)) * tan(0.5 * d));
double num9 = num4 + num8;
var distanceUA = 1.000001018 * (1.0 - num5 * cos(d));
double num10 = distanceUA * 149597870.0;
double num11 = pi /
180.0 *
(84381.448 - 46.815 * num1 - 0.00059 * num2 + 0.001813 * num1 * num2) *
0.000277777777777778;
double num12 = num10 * sin(num9);
var sunX = num10 * cos(num9);
var sunY = num12 * cos(num11);
var sunZ = num12 * sin(num11);
final latlng = _toLatLng(gst, sunX, sunY, sunZ);
return latlng;
}