From 44b9d26d1df48412b90e7ac5d4306d42ac9fd56b Mon Sep 17 00:00:00 2001 From: Don Cross Date: Mon, 24 Jun 2019 14:48:08 -0400 Subject: [PATCH] Python: CalcMoon work in progress. First pass is finished. Not yet tested. --- generate/template/astronomy.py | 169 ++++++++++++++++++++++++++++++++- source/python/astronomy.py | 169 ++++++++++++++++++++++++++++++++- 2 files changed, 334 insertions(+), 4 deletions(-) diff --git a/generate/template/astronomy.py b/generate/template/astronomy.py index 7cd6f7e3..76e6bae4 100644 --- a/generate/template/astronomy.py +++ b/generate/template/astronomy.py @@ -600,7 +600,7 @@ def _ter2cel(time, vec1): return _spin(-15.0 * gast, vec1) #---------------------------------------------------------------------------- -# CalcMoon +# BEGIN CalcMoon class _Array1: def __init__(xmin, xmax): @@ -624,6 +624,12 @@ class _Array2: def __setitem__(self, key, value): self.array[key - self.min] = value +class _moonpos: + def __init__(self, lon, lat, dist): + self.geo_eclip_lon = lon + self.geo_eclip_lat = lat + self.distance_au = dist + def _CalcMoon(time): T = time.tt / 36525 co = _Array2(-6, 6, 1, 4) @@ -683,7 +689,7 @@ def _CalcMoon(time): J = 2 while J <= MAX: - co[J][I], si[J][I] = AddThe(CO(J-1,I), SI(J-1,I), CO(1,I), SI(1,I)) + co[J][I], si[J][I] = AddThe(co[J-1][I], si[J-1][I], co[1][I], si[1][I]) J += 1 J = 1 @@ -694,3 +700,162 @@ def _CalcMoon(time): I += 1 + def Term(p, q, r, s): + result = (1, 0) + I = [null, p, q, r, s] + k = 1 + while k <= 4: + if I[k] != 0: + result = AddThe(result[0], result[1], co[I[k]][k], si[I[k]][k]) + k += 1 + return result + + def AddSol(coeffl, coeffs, coeffg, coeffp, p, q, r, s): + nonlocal DLAM, DS, GAM1C, SINPI + result = Term(p, q, r, s) + DLAM += coeffl * result[1] + DS += coeffs * result[1] + GAM1C += coeffg * result[0] + SINPI += coeffp * result[0] + + AddSol( 13.902, 14.06,-0.001, 0.2607,0, 0, 0, 4) + AddSol( 0.403, -4.01,+0.394, 0.0023,0, 0, 0, 3) + AddSol( 2369.912, 2373.36,+0.601, 28.2333,0, 0, 0, 2) + AddSol( -125.154, -112.79,-0.725, -0.9781,0, 0, 0, 1) + AddSol( 1.979, 6.98,-0.445, 0.0433,1, 0, 0, 4) + AddSol( 191.953, 192.72,+0.029, 3.0861,1, 0, 0, 2) + AddSol( -8.466, -13.51,+0.455, -0.1093,1, 0, 0, 1) + AddSol( 22639.500,22609.07,+0.079, 186.5398,1, 0, 0, 0) + AddSol( 18.609, 3.59,-0.094, 0.0118,1, 0, 0,-1) + AddSol( -4586.465,-4578.13,-0.077, 34.3117,1, 0, 0,-2) + AddSol( +3.215, 5.44,+0.192, -0.0386,1, 0, 0,-3) + AddSol( -38.428, -38.64,+0.001, 0.6008,1, 0, 0,-4) + AddSol( -0.393, -1.43,-0.092, 0.0086,1, 0, 0,-6) + AddSol( -0.289, -1.59,+0.123, -0.0053,0, 1, 0, 4) + AddSol( -24.420, -25.10,+0.040, -0.3000,0, 1, 0, 2) + AddSol( 18.023, 17.93,+0.007, 0.1494,0, 1, 0, 1) + AddSol( -668.146, -126.98,-1.302, -0.3997,0, 1, 0, 0) + AddSol( 0.560, 0.32,-0.001, -0.0037,0, 1, 0,-1) + AddSol( -165.145, -165.06,+0.054, 1.9178,0, 1, 0,-2) + AddSol( -1.877, -6.46,-0.416, 0.0339,0, 1, 0,-4) + AddSol( 0.213, 1.02,-0.074, 0.0054,2, 0, 0, 4) + AddSol( 14.387, 14.78,-0.017, 0.2833,2, 0, 0, 2) + AddSol( -0.586, -1.20,+0.054, -0.0100,2, 0, 0, 1) + AddSol( 769.016, 767.96,+0.107, 10.1657,2, 0, 0, 0) + AddSol( +1.750, 2.01,-0.018, 0.0155,2, 0, 0,-1) + AddSol( -211.656, -152.53,+5.679, -0.3039,2, 0, 0,-2) + AddSol( +1.225, 0.91,-0.030, -0.0088,2, 0, 0,-3) + AddSol( -30.773, -34.07,-0.308, 0.3722,2, 0, 0,-4) + AddSol( -0.570, -1.40,-0.074, 0.0109,2, 0, 0,-6) + AddSol( -2.921, -11.75,+0.787, -0.0484,1, 1, 0, 2) + AddSol( +1.267, 1.52,-0.022, 0.0164,1, 1, 0, 1) + AddSol( -109.673, -115.18,+0.461, -0.9490,1, 1, 0, 0) + AddSol( -205.962, -182.36,+2.056, +1.4437,1, 1, 0,-2) + AddSol( 0.233, 0.36, 0.012, -0.0025,1, 1, 0,-3) + AddSol( -4.391, -9.66,-0.471, 0.0673,1, 1, 0,-4) + + AddSol( 0.283, 1.53,-0.111, +0.0060,1,-1, 0,+4) + AddSol( 14.577, 31.70,-1.540, +0.2302,1,-1, 0, 2) + AddSol( 147.687, 138.76,+0.679, +1.1528,1,-1, 0, 0) + AddSol( -1.089, 0.55,+0.021, 0.0 ,1,-1, 0,-1) + AddSol( 28.475, 23.59,-0.443, -0.2257,1,-1, 0,-2) + AddSol( -0.276, -0.38,-0.006, -0.0036,1,-1, 0,-3) + AddSol( 0.636, 2.27,+0.146, -0.0102,1,-1, 0,-4) + AddSol( -0.189, -1.68,+0.131, -0.0028,0, 2, 0, 2) + AddSol( -7.486, -0.66,-0.037, -0.0086,0, 2, 0, 0) + AddSol( -8.096, -16.35,-0.740, 0.0918,0, 2, 0,-2) + AddSol( -5.741, -0.04, 0.0 , -0.0009,0, 0, 2, 2) + AddSol( 0.255, 0.0 , 0.0 , 0.0 ,0, 0, 2, 1) + AddSol( -411.608, -0.20, 0.0 , -0.0124,0, 0, 2, 0) + AddSol( 0.584, 0.84, 0.0 , +0.0071,0, 0, 2,-1) + AddSol( -55.173, -52.14, 0.0 , -0.1052,0, 0, 2,-2) + AddSol( 0.254, 0.25, 0.0 , -0.0017,0, 0, 2,-3) + AddSol( +0.025, -1.67, 0.0 , +0.0031,0, 0, 2,-4) + AddSol( 1.060, 2.96,-0.166, 0.0243,3, 0, 0,+2) + AddSol( 36.124, 50.64,-1.300, 0.6215,3, 0, 0, 0) + AddSol( -13.193, -16.40,+0.258, -0.1187,3, 0, 0,-2) + AddSol( -1.187, -0.74,+0.042, 0.0074,3, 0, 0,-4) + AddSol( -0.293, -0.31,-0.002, 0.0046,3, 0, 0,-6) + AddSol( -0.290, -1.45,+0.116, -0.0051,2, 1, 0, 2) + AddSol( -7.649, -10.56,+0.259, -0.1038,2, 1, 0, 0) + AddSol( -8.627, -7.59,+0.078, -0.0192,2, 1, 0,-2) + AddSol( -2.740, -2.54,+0.022, 0.0324,2, 1, 0,-4) + AddSol( 1.181, 3.32,-0.212, 0.0213,2,-1, 0,+2) + AddSol( 9.703, 11.67,-0.151, 0.1268,2,-1, 0, 0) + AddSol( -0.352, -0.37,+0.001, -0.0028,2,-1, 0,-1) + AddSol( -2.494, -1.17,-0.003, -0.0017,2,-1, 0,-2) + AddSol( 0.360, 0.20,-0.012, -0.0043,2,-1, 0,-4) + AddSol( -1.167, -1.25,+0.008, -0.0106,1, 2, 0, 0) + AddSol( -7.412, -6.12,+0.117, 0.0484,1, 2, 0,-2) + AddSol( -0.311, -0.65,-0.032, 0.0044,1, 2, 0,-4) + AddSol( +0.757, 1.82,-0.105, 0.0112,1,-2, 0, 2) + AddSol( +2.580, 2.32,+0.027, 0.0196,1,-2, 0, 0) + AddSol( +2.533, 2.40,-0.014, -0.0212,1,-2, 0,-2) + AddSol( -0.344, -0.57,-0.025, +0.0036,0, 3, 0,-2) + AddSol( -0.992, -0.02, 0.0 , 0.0 ,1, 0, 2, 2) + AddSol( -45.099, -0.02, 0.0 , -0.0010,1, 0, 2, 0) + AddSol( -0.179, -9.52, 0.0 , -0.0833,1, 0, 2,-2) + AddSol( -0.301, -0.33, 0.0 , 0.0014,1, 0, 2,-4) + AddSol( -6.382, -3.37, 0.0 , -0.0481,1, 0,-2, 2) + AddSol( 39.528, 85.13, 0.0 , -0.7136,1, 0,-2, 0) + AddSol( 9.366, 0.71, 0.0 , -0.0112,1, 0,-2,-2) + AddSol( 0.202, 0.02, 0.0 , 0.0 ,1, 0,-2,-4) + + AddSol( 0.415, 0.10, 0.0 , 0.0013,0, 1, 2, 0) + AddSol( -2.152, -2.26, 0.0 , -0.0066,0, 1, 2,-2) + AddSol( -1.440, -1.30, 0.0 , +0.0014,0, 1,-2, 2) + AddSol( 0.384, -0.04, 0.0 , 0.0 ,0, 1,-2,-2) + AddSol( +1.938, +3.60,-0.145, +0.0401,4, 0, 0, 0) + AddSol( -0.952, -1.58,+0.052, -0.0130,4, 0, 0,-2) + AddSol( -0.551, -0.94,+0.032, -0.0097,3, 1, 0, 0) + AddSol( -0.482, -0.57,+0.005, -0.0045,3, 1, 0,-2) + AddSol( 0.681, 0.96,-0.026, 0.0115,3,-1, 0, 0) + AddSol( -0.297, -0.27, 0.002, -0.0009,2, 2, 0,-2) + AddSol( 0.254, +0.21,-0.003, 0.0 ,2,-2, 0,-2) + AddSol( -0.250, -0.22, 0.004, 0.0014,1, 3, 0,-2) + AddSol( -3.996, 0.0 , 0.0 , +0.0004,2, 0, 2, 0) + AddSol( 0.557, -0.75, 0.0 , -0.0090,2, 0, 2,-2) + AddSol( -0.459, -0.38, 0.0 , -0.0053,2, 0,-2, 2) + AddSol( -1.298, 0.74, 0.0 , +0.0004,2, 0,-2, 0) + AddSol( 0.538, 1.14, 0.0 , -0.0141,2, 0,-2,-2) + AddSol( 0.263, 0.02, 0.0 , 0.0 ,1, 1, 2, 0) + AddSol( 0.426, +0.07, 0.0 , -0.0006,1, 1,-2,-2) + AddSol( -0.304, +0.03, 0.0 , +0.0003,1,-1, 2, 0) + AddSol( -0.372, -0.19, 0.0 , -0.0027,1,-1,-2, 2) + AddSol( +0.418, 0.0 , 0.0 , 0.0 ,0, 0, 4, 0) + AddSol( -0.330, -0.04, 0.0 , 0.0 ,3, 0, 2, 0) + + def ADDN(coeffn, p, q, r, s): + return coeffn * Term(p, q, r, s)[1] + + N = 0 + N += ADDN(-526.069, 0, 0,1,-2) + N += ADDN( -3.352, 0, 0,1,-4) + N += ADDN( +44.297,+1, 0,1,-2) + N += ADDN( -6.000,+1, 0,1,-4) + N += ADDN( +20.599,-1, 0,1, 0) + N += ADDN( -30.598,-1, 0,1,-2) + N += ADDN( -24.649,-2, 0,1, 0) + N += ADDN( -2.000,-2, 0,1,-2) + N += ADDN( -22.571, 0,+1,1,-2) + N += ADDN( +10.985, 0,-1,1,-2) + + DLAM += ( + +0.82*Sine(0.7736 -62.5512*T)+0.31*Sine(0.0466 -125.1025*T) + +0.35*Sine(0.5785 -25.1042*T)+0.66*Sine(0.4591+1335.8075*T) + +0.64*Sine(0.3130 -91.5680*T)+1.14*Sine(0.1480+1331.2898*T) + +0.21*Sine(0.5918+1056.5859*T)+0.44*Sine(0.5784+1322.8595*T) + +0.24*Sine(0.2275 -5.7374*T)+0.28*Sine(0.2965 +2.6929*T) + +0.33*Sine(0.3132 +6.3368*T) + ) + S = F + DS/ARC + lat_seconds = (1.000002708 + 139.978*DGAM)*(18518.511+1.189+GAM1C)*math.sin(S) - 6.24*math.sin(3*S) + N + return _moonpos( + _PI2 * Frac((L0+DLAM/ARC) / _PI2), + (math.pi / (180 * 3600)) * lat_seconds, + (ARC * (ERAD / AU)) / (0.999953253 * SINPI) + ) + +# END CalcMoon +#---------------------------------------------------------------------------- + diff --git a/source/python/astronomy.py b/source/python/astronomy.py index 66df166a..03c1a92a 100644 --- a/source/python/astronomy.py +++ b/source/python/astronomy.py @@ -691,7 +691,7 @@ def _ter2cel(time, vec1): return _spin(-15.0 * gast, vec1) #---------------------------------------------------------------------------- -# CalcMoon +# BEGIN CalcMoon class _Array1: def __init__(xmin, xmax): @@ -715,6 +715,12 @@ class _Array2: def __setitem__(self, key, value): self.array[key - self.min] = value +class _moonpos: + def __init__(self, lon, lat, dist): + self.geo_eclip_lon = lon + self.geo_eclip_lat = lat + self.distance_au = dist + def _CalcMoon(time): T = time.tt / 36525 co = _Array2(-6, 6, 1, 4) @@ -774,7 +780,7 @@ def _CalcMoon(time): J = 2 while J <= MAX: - co[J][I], si[J][I] = AddThe(CO(J-1,I), SI(J-1,I), CO(1,I), SI(1,I)) + co[J][I], si[J][I] = AddThe(co[J-1][I], si[J-1][I], co[1][I], si[1][I]) J += 1 J = 1 @@ -785,3 +791,162 @@ def _CalcMoon(time): I += 1 + def Term(p, q, r, s): + result = (1, 0) + I = [null, p, q, r, s] + k = 1 + while k <= 4: + if I[k] != 0: + result = AddThe(result[0], result[1], co[I[k]][k], si[I[k]][k]) + k += 1 + return result + + def AddSol(coeffl, coeffs, coeffg, coeffp, p, q, r, s): + nonlocal DLAM, DS, GAM1C, SINPI + result = Term(p, q, r, s) + DLAM += coeffl * result[1] + DS += coeffs * result[1] + GAM1C += coeffg * result[0] + SINPI += coeffp * result[0] + + AddSol( 13.902, 14.06,-0.001, 0.2607,0, 0, 0, 4) + AddSol( 0.403, -4.01,+0.394, 0.0023,0, 0, 0, 3) + AddSol( 2369.912, 2373.36,+0.601, 28.2333,0, 0, 0, 2) + AddSol( -125.154, -112.79,-0.725, -0.9781,0, 0, 0, 1) + AddSol( 1.979, 6.98,-0.445, 0.0433,1, 0, 0, 4) + AddSol( 191.953, 192.72,+0.029, 3.0861,1, 0, 0, 2) + AddSol( -8.466, -13.51,+0.455, -0.1093,1, 0, 0, 1) + AddSol( 22639.500,22609.07,+0.079, 186.5398,1, 0, 0, 0) + AddSol( 18.609, 3.59,-0.094, 0.0118,1, 0, 0,-1) + AddSol( -4586.465,-4578.13,-0.077, 34.3117,1, 0, 0,-2) + AddSol( +3.215, 5.44,+0.192, -0.0386,1, 0, 0,-3) + AddSol( -38.428, -38.64,+0.001, 0.6008,1, 0, 0,-4) + AddSol( -0.393, -1.43,-0.092, 0.0086,1, 0, 0,-6) + AddSol( -0.289, -1.59,+0.123, -0.0053,0, 1, 0, 4) + AddSol( -24.420, -25.10,+0.040, -0.3000,0, 1, 0, 2) + AddSol( 18.023, 17.93,+0.007, 0.1494,0, 1, 0, 1) + AddSol( -668.146, -126.98,-1.302, -0.3997,0, 1, 0, 0) + AddSol( 0.560, 0.32,-0.001, -0.0037,0, 1, 0,-1) + AddSol( -165.145, -165.06,+0.054, 1.9178,0, 1, 0,-2) + AddSol( -1.877, -6.46,-0.416, 0.0339,0, 1, 0,-4) + AddSol( 0.213, 1.02,-0.074, 0.0054,2, 0, 0, 4) + AddSol( 14.387, 14.78,-0.017, 0.2833,2, 0, 0, 2) + AddSol( -0.586, -1.20,+0.054, -0.0100,2, 0, 0, 1) + AddSol( 769.016, 767.96,+0.107, 10.1657,2, 0, 0, 0) + AddSol( +1.750, 2.01,-0.018, 0.0155,2, 0, 0,-1) + AddSol( -211.656, -152.53,+5.679, -0.3039,2, 0, 0,-2) + AddSol( +1.225, 0.91,-0.030, -0.0088,2, 0, 0,-3) + AddSol( -30.773, -34.07,-0.308, 0.3722,2, 0, 0,-4) + AddSol( -0.570, -1.40,-0.074, 0.0109,2, 0, 0,-6) + AddSol( -2.921, -11.75,+0.787, -0.0484,1, 1, 0, 2) + AddSol( +1.267, 1.52,-0.022, 0.0164,1, 1, 0, 1) + AddSol( -109.673, -115.18,+0.461, -0.9490,1, 1, 0, 0) + AddSol( -205.962, -182.36,+2.056, +1.4437,1, 1, 0,-2) + AddSol( 0.233, 0.36, 0.012, -0.0025,1, 1, 0,-3) + AddSol( -4.391, -9.66,-0.471, 0.0673,1, 1, 0,-4) + + AddSol( 0.283, 1.53,-0.111, +0.0060,1,-1, 0,+4) + AddSol( 14.577, 31.70,-1.540, +0.2302,1,-1, 0, 2) + AddSol( 147.687, 138.76,+0.679, +1.1528,1,-1, 0, 0) + AddSol( -1.089, 0.55,+0.021, 0.0 ,1,-1, 0,-1) + AddSol( 28.475, 23.59,-0.443, -0.2257,1,-1, 0,-2) + AddSol( -0.276, -0.38,-0.006, -0.0036,1,-1, 0,-3) + AddSol( 0.636, 2.27,+0.146, -0.0102,1,-1, 0,-4) + AddSol( -0.189, -1.68,+0.131, -0.0028,0, 2, 0, 2) + AddSol( -7.486, -0.66,-0.037, -0.0086,0, 2, 0, 0) + AddSol( -8.096, -16.35,-0.740, 0.0918,0, 2, 0,-2) + AddSol( -5.741, -0.04, 0.0 , -0.0009,0, 0, 2, 2) + AddSol( 0.255, 0.0 , 0.0 , 0.0 ,0, 0, 2, 1) + AddSol( -411.608, -0.20, 0.0 , -0.0124,0, 0, 2, 0) + AddSol( 0.584, 0.84, 0.0 , +0.0071,0, 0, 2,-1) + AddSol( -55.173, -52.14, 0.0 , -0.1052,0, 0, 2,-2) + AddSol( 0.254, 0.25, 0.0 , -0.0017,0, 0, 2,-3) + AddSol( +0.025, -1.67, 0.0 , +0.0031,0, 0, 2,-4) + AddSol( 1.060, 2.96,-0.166, 0.0243,3, 0, 0,+2) + AddSol( 36.124, 50.64,-1.300, 0.6215,3, 0, 0, 0) + AddSol( -13.193, -16.40,+0.258, -0.1187,3, 0, 0,-2) + AddSol( -1.187, -0.74,+0.042, 0.0074,3, 0, 0,-4) + AddSol( -0.293, -0.31,-0.002, 0.0046,3, 0, 0,-6) + AddSol( -0.290, -1.45,+0.116, -0.0051,2, 1, 0, 2) + AddSol( -7.649, -10.56,+0.259, -0.1038,2, 1, 0, 0) + AddSol( -8.627, -7.59,+0.078, -0.0192,2, 1, 0,-2) + AddSol( -2.740, -2.54,+0.022, 0.0324,2, 1, 0,-4) + AddSol( 1.181, 3.32,-0.212, 0.0213,2,-1, 0,+2) + AddSol( 9.703, 11.67,-0.151, 0.1268,2,-1, 0, 0) + AddSol( -0.352, -0.37,+0.001, -0.0028,2,-1, 0,-1) + AddSol( -2.494, -1.17,-0.003, -0.0017,2,-1, 0,-2) + AddSol( 0.360, 0.20,-0.012, -0.0043,2,-1, 0,-4) + AddSol( -1.167, -1.25,+0.008, -0.0106,1, 2, 0, 0) + AddSol( -7.412, -6.12,+0.117, 0.0484,1, 2, 0,-2) + AddSol( -0.311, -0.65,-0.032, 0.0044,1, 2, 0,-4) + AddSol( +0.757, 1.82,-0.105, 0.0112,1,-2, 0, 2) + AddSol( +2.580, 2.32,+0.027, 0.0196,1,-2, 0, 0) + AddSol( +2.533, 2.40,-0.014, -0.0212,1,-2, 0,-2) + AddSol( -0.344, -0.57,-0.025, +0.0036,0, 3, 0,-2) + AddSol( -0.992, -0.02, 0.0 , 0.0 ,1, 0, 2, 2) + AddSol( -45.099, -0.02, 0.0 , -0.0010,1, 0, 2, 0) + AddSol( -0.179, -9.52, 0.0 , -0.0833,1, 0, 2,-2) + AddSol( -0.301, -0.33, 0.0 , 0.0014,1, 0, 2,-4) + AddSol( -6.382, -3.37, 0.0 , -0.0481,1, 0,-2, 2) + AddSol( 39.528, 85.13, 0.0 , -0.7136,1, 0,-2, 0) + AddSol( 9.366, 0.71, 0.0 , -0.0112,1, 0,-2,-2) + AddSol( 0.202, 0.02, 0.0 , 0.0 ,1, 0,-2,-4) + + AddSol( 0.415, 0.10, 0.0 , 0.0013,0, 1, 2, 0) + AddSol( -2.152, -2.26, 0.0 , -0.0066,0, 1, 2,-2) + AddSol( -1.440, -1.30, 0.0 , +0.0014,0, 1,-2, 2) + AddSol( 0.384, -0.04, 0.0 , 0.0 ,0, 1,-2,-2) + AddSol( +1.938, +3.60,-0.145, +0.0401,4, 0, 0, 0) + AddSol( -0.952, -1.58,+0.052, -0.0130,4, 0, 0,-2) + AddSol( -0.551, -0.94,+0.032, -0.0097,3, 1, 0, 0) + AddSol( -0.482, -0.57,+0.005, -0.0045,3, 1, 0,-2) + AddSol( 0.681, 0.96,-0.026, 0.0115,3,-1, 0, 0) + AddSol( -0.297, -0.27, 0.002, -0.0009,2, 2, 0,-2) + AddSol( 0.254, +0.21,-0.003, 0.0 ,2,-2, 0,-2) + AddSol( -0.250, -0.22, 0.004, 0.0014,1, 3, 0,-2) + AddSol( -3.996, 0.0 , 0.0 , +0.0004,2, 0, 2, 0) + AddSol( 0.557, -0.75, 0.0 , -0.0090,2, 0, 2,-2) + AddSol( -0.459, -0.38, 0.0 , -0.0053,2, 0,-2, 2) + AddSol( -1.298, 0.74, 0.0 , +0.0004,2, 0,-2, 0) + AddSol( 0.538, 1.14, 0.0 , -0.0141,2, 0,-2,-2) + AddSol( 0.263, 0.02, 0.0 , 0.0 ,1, 1, 2, 0) + AddSol( 0.426, +0.07, 0.0 , -0.0006,1, 1,-2,-2) + AddSol( -0.304, +0.03, 0.0 , +0.0003,1,-1, 2, 0) + AddSol( -0.372, -0.19, 0.0 , -0.0027,1,-1,-2, 2) + AddSol( +0.418, 0.0 , 0.0 , 0.0 ,0, 0, 4, 0) + AddSol( -0.330, -0.04, 0.0 , 0.0 ,3, 0, 2, 0) + + def ADDN(coeffn, p, q, r, s): + return coeffn * Term(p, q, r, s)[1] + + N = 0 + N += ADDN(-526.069, 0, 0,1,-2) + N += ADDN( -3.352, 0, 0,1,-4) + N += ADDN( +44.297,+1, 0,1,-2) + N += ADDN( -6.000,+1, 0,1,-4) + N += ADDN( +20.599,-1, 0,1, 0) + N += ADDN( -30.598,-1, 0,1,-2) + N += ADDN( -24.649,-2, 0,1, 0) + N += ADDN( -2.000,-2, 0,1,-2) + N += ADDN( -22.571, 0,+1,1,-2) + N += ADDN( +10.985, 0,-1,1,-2) + + DLAM += ( + +0.82*Sine(0.7736 -62.5512*T)+0.31*Sine(0.0466 -125.1025*T) + +0.35*Sine(0.5785 -25.1042*T)+0.66*Sine(0.4591+1335.8075*T) + +0.64*Sine(0.3130 -91.5680*T)+1.14*Sine(0.1480+1331.2898*T) + +0.21*Sine(0.5918+1056.5859*T)+0.44*Sine(0.5784+1322.8595*T) + +0.24*Sine(0.2275 -5.7374*T)+0.28*Sine(0.2965 +2.6929*T) + +0.33*Sine(0.3132 +6.3368*T) + ) + S = F + DS/ARC + lat_seconds = (1.000002708 + 139.978*DGAM)*(18518.511+1.189+GAM1C)*math.sin(S) - 6.24*math.sin(3*S) + N + return _moonpos( + _PI2 * Frac((L0+DLAM/ARC) / _PI2), + (math.pi / (180 * 3600)) * lat_seconds, + (ARC * (ERAD / AU)) / (0.999953253 * SINPI) + ) + +# END CalcMoon +#---------------------------------------------------------------------------- +