Skip to content
Snippets Groups Projects
Commit 79ca7154 authored by samuel's avatar samuel
Browse files

Condense orbital computations

parent c31df927
No related branches found
No related tags found
No related merge requests found
...@@ -138,27 +138,20 @@ function moonphasebylunation(lun, phi) ...@@ -138,27 +138,20 @@ function moonphasebylunation(lun, phi)
+ T * T * (0.0020691 + 0.00000215 * T)) + T * T * (0.0020691 + 0.00000215 * T))
// planetary arguments // planetary arguments
var planetaryArguments = var planetaryArgumentsArray = [
0.000325 * Math.sin(radian(299.77 + 0.107408 * k - 0.009173 * T * T)) [0.000325, 0.000165, 0.000164, 0.000126, 0.000110, 0.000062, 0.000060, 0.000056, 0.000047, 0.000042, 0.000040, 0.000037, 0.000035, 0.000023,],
+ 0.000165 * Math.sin(radian(251.88 + 0.016321 * k)) [299.77 + 0.107408 * k - 0.009173 * T * T, 251.88 + 0.016321 * k, 251.83 + 26.651886 * k, 349.42 + 36.412478 * k, 84.66 + 18.206239 * k, 141.74 + 53.303771 * k, 207.14 + 2.453732 * k, 154.84 + 7.306860 * k, 34.52 + 27.261239 * k, 207.19 + 0.121824 * k, 291.34 + 1.844379 * k, 161.72 + 24.198154 * k, 239.56 + 25.513099 * k, 331.55 + 3.592518 * k,]]
+ 0.000164 * Math.sin(radian(251.83 + 26.651886 * k)) var planetaryArgumentsCorrection = 0
+ 0.000126 * Math.sin(radian(349.42 + 36.412478 * k)) for (var i = 0; i < 14; i++) {
+ 0.000110 * Math.sin(radian(84.66 + 18.206239 * k)) planetaryArgumentsCorrection += planetaryArgumentsArray[0][i] * Math.sin(radian(planetaryArgumentsArray[1][i]))
+ 0.000062 * Math.sin(radian(141.74 + 53.303771 * k)) }
+ 0.000060 * Math.sin(radian(207.14 + 2.453732 * k))
+ 0.000056 * Math.sin(radian(154.84 + 7.306860 * k))
+ 0.000047 * Math.sin(radian(34.52 + 27.261239 * k))
+ 0.000042 * Math.sin(radian(207.19 + 0.121824 * k))
+ 0.000040 * Math.sin(radian(291.34 + 1.844379 * k))
+ 0.000037 * Math.sin(radian(161.72 + 24.198154 * k))
+ 0.000035 * Math.sin(radian(239.56 + 25.513099 * k))
+ 0.000023 * Math.sin(radian(331.55 + 3.592518 * k))
// added correction for quarter phases // added correction for quarter phases
var W var W
//group First, Last Quarter //group First, Last Quarter
var orbitalCorrectionIndex = 2-Math.abs(2-phi) var orbitalCorrectionIndex = 2 - Math.abs(2 - phi)
var orbitalCorrectionCoeffArray = [ var orbitalCorrectionCoeffArray = [
// New Moon // New Moon
...@@ -168,36 +161,20 @@ function moonphasebylunation(lun, phi) ...@@ -168,36 +161,20 @@ function moonphasebylunation(lun, phi)
// New Moon // New Moon
[+0.17302, +0.00209, +0.00004, -0.40614, +0.00734, -0.00515, +0.00000, -0.00007, -0.00111, -0.00057, +0.01614, +0.01043, -0.00024, +0.00056, -0.00042, -0.00002, +0.00002, +0.00038, +0.00042, -0.00017, +0.00004, +0.00003, -0.00002, +0.00003, +0.00003, -0.00003,]] [+0.17302, +0.00209, +0.00004, -0.40614, +0.00734, -0.00515, +0.00000, -0.00007, -0.00111, -0.00057, +0.01614, +0.01043, -0.00024, +0.00056, -0.00042, -0.00002, +0.00002, +0.00038, +0.00042, -0.00017, +0.00004, +0.00003, -0.00002, +0.00003, +0.00003, -0.00003,]]
var orbitalCorrectionEccentricityArray = [E, E * E, 1, 1, E, E, 1, 1, 1, 1, 1, 1, E, E, 1, 1, 1, E, E, 1, 1, 1, 1, 1, 1, 1,]
var orbitalCorrectionAngleArray = [M, 2.0 * M, 3.0 * M, M1, M1 - M, M1 + M, M1 - 2.0 * M, M1 + 2.0 * M, M1 - 2.0 * F, M1 + 2.0 * F, 2.0 * M1, 2.0 * F, 2.0 * M1 - M, 2.0 * M1 + M, 3.0 * M1, 3.0 * M1 + M, 4.0 * M1, M - 2.0 * F, M + 2.0 * F, O, 2.0 * M1 - 2.0 * F, 2.0 * M1 + 2.0 * F, M1 - M - 2.0 * F, M1 - M + 2.0 * F, M1 + M - 2.0 * F, M1 + M + 2.0 * F,]
var orbitalCorrectionCoeffs = var orbitalCorrectionCoeffs =
orbitalCorrectionCoeffArray[orbitalCorrectionIndex] orbitalCorrectionCoeffArray[orbitalCorrectionIndex]
var orbitalApproximation = var orbitalApproximation = 0
orbitalCorrectionCoeffs[0] * E * Math.sin(M) for (var i = 0; i < 26; i++) {
+ orbitalCorrectionCoeffs[1] * E * E * Math.sin(2.0 * M) orbitalApproximation +=
+ orbitalCorrectionCoeffs[2] * Math.sin(3.0 * M) orbitalCorrectionCoeffs[i]
+ orbitalCorrectionCoeffs[3] * Math.sin(M1) * orbitalCorrectionEccentricityArray[i]
+ orbitalCorrectionCoeffs[4] * E * Math.sin(M1 - M) * Math.sin(orbitalCorrectionAngleArray[i])
+ orbitalCorrectionCoeffs[5] * E * Math.sin(M1 + M) }
+ orbitalCorrectionCoeffs[6] * Math.sin(M1 - 2.0 * M)
+ orbitalCorrectionCoeffs[7] * Math.sin(M1 + 2.0 * M)
+ orbitalCorrectionCoeffs[8] * Math.sin(M1 - 2.0 * F)
+ orbitalCorrectionCoeffs[9] * Math.sin(M1 + 2.0 * F)
+ orbitalCorrectionCoeffs[10] * Math.sin(2.0 * M1)
+ orbitalCorrectionCoeffs[11] * Math.sin(2.0 * F)
+ orbitalCorrectionCoeffs[12] * E * Math.sin(2.0 * M1 - M)
+ orbitalCorrectionCoeffs[13] * E * Math.sin(2.0 * M1 + M)
+ orbitalCorrectionCoeffs[14] * Math.sin(3.0 * M1)
+ orbitalCorrectionCoeffs[15] * Math.sin(3.0 * M1 + M)
+ orbitalCorrectionCoeffs[16] * Math.sin(4.0 * M1)
+ orbitalCorrectionCoeffs[17] * E * Math.sin(M - 2.0 * F)
+ orbitalCorrectionCoeffs[18] * E * Math.sin(M + 2.0 * F)
+ orbitalCorrectionCoeffs[19] * Math.sin(O)
+ orbitalCorrectionCoeffs[20] * Math.sin(2.0 * M1 - 2.0 * F)
+ orbitalCorrectionCoeffs[21] * Math.sin(2.0 * M1 + 2.0 * F)
+ orbitalCorrectionCoeffs[22] * Math.sin(M1 - M - 2.0 * F)
+ orbitalCorrectionCoeffs[23] * Math.sin(M1 - M + 2.0 * F)
+ orbitalCorrectionCoeffs[24] * Math.sin(M1 + M - 2.0 * F)
+ orbitalCorrectionCoeffs[25] * Math.sin(M1 + M + 2.0 * F)
// this is the first approximation. all else is for style points! (47.1) // this is the first approximation. all else is for style points! (47.1)
...@@ -207,7 +184,7 @@ function moonphasebylunation(lun, phi) ...@@ -207,7 +184,7 @@ function moonphasebylunation(lun, phi)
JDE = JDE JDE = JDE
+ orbitalApproximation + orbitalApproximation
+ planetaryArguments + planetaryArgumentsCorrection
// extra correction for quarter phases // extra correction for quarter phases
if (orbitalCorrectionIndex == 1) { if (orbitalCorrectionIndex == 1) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment