MoonRealOrbit.js 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516
  1. 'use strict';
  2. var ns = require('ns');
  3. var DEG_TO_RAD = ns.DEG_TO_RAD;
  4. var RAD_TO_DEG = ns.RAD_TO_DEG;
  5. module.exports = function(t){
  6. var t2 = t * t;
  7. var t3 = t * t2;
  8. var t4 = t * t3;
  9. var t5 = t * t4;
  10. var t2e4 = t2 * 1e-4;
  11. var t3e6 = t3 * 1e-6;
  12. var t4e8 = t4 * 1e-8;
  13. //% semimajor axis
  14. var sa = 3400.4 * Math.cos(DEG_TO_RAD * (235.7004 + 890534.2230 * t - 32.601 * t2e4
  15. + 3.664 * t3e6 - 1.769 * t4e8))
  16. - 635.6 * Math.cos(DEG_TO_RAD * (100.7370 + 413335.3554 * t - 122.571 * t2e4
  17. - 10.684 * t3e6 + 5.028 * t4e8))
  18. - 235.6 * Math.cos(DEG_TO_RAD * (134.9634 + 477198.8676 * t + 89.970 * t2e4
  19. + 14.348 * t3e6 - 6.797 * t4e8))
  20. + 218.1 * Math.cos(DEG_TO_RAD * (238.1713 + 854535.1727 * t - 31.065 * t2e4
  21. + 3.623 * t3e6 - 1.769 * t4e8))
  22. + 181.0 * Math.cos(DEG_TO_RAD * (10.6638 + 1367733.0907 * t + 57.370 * t2e4
  23. + 18.011 * t3e6 - 8.566 * t4e8))
  24. - 39.9 * Math.cos(DEG_TO_RAD * (103.2079 + 377336.3051 * t - 121.035 * t2e4
  25. - 10.724 * t3e6 + 5.028 * t4e8))
  26. - 38.4 * Math.cos(DEG_TO_RAD * (233.2295 + 926533.2733 * t - 34.136 * t2e4
  27. + 3.705 * t3e6 - 1.769 * t4e8))
  28. + 33.8 * Math.cos(DEG_TO_RAD * (336.4374 + 1303869.5784 * t - 155.171 * t2e4
  29. - 7.020 * t3e6 + 3.259 * t4e8))
  30. + 28.8 * Math.cos(DEG_TO_RAD * (111.4008 + 1781068.4461 * t - 65.201 * t2e4
  31. + 7.328 * t3e6 - 3.538 * t4e8))
  32. + 12.6 * Math.cos(DEG_TO_RAD * (13.1347 + 1331734.0404 * t + 58.906 * t2e4
  33. + 17.971 * t3e6 - 8.566 * t4e8))
  34. + 11.4 * Math.cos(DEG_TO_RAD * (186.5442 + 966404.0351 * t - 68.058 * t2e4
  35. - 0.567 * t3e6 + 0.232 * t4e8))
  36. - 11.1 * Math.cos(DEG_TO_RAD * (222.5657 - 441199.8173 * t - 91.506 * t2e4
  37. - 14.307 * t3e6 + 6.797 * t4e8))
  38. - 10.2 * Math.cos(DEG_TO_RAD * (269.9268 + 954397.7353 * t + 179.941 * t2e4
  39. + 28.695 * t3e6 - 13.594 * t4e8))
  40. + 9.7 * Math.cos(DEG_TO_RAD * (145.6272 + 1844931.9583 * t + 147.340 * t2e4
  41. + 32.359 * t3e6 - 15.363 * t4e8))
  42. + 9.6 * Math.cos(DEG_TO_RAD * (240.6422 + 818536.1225 * t - 29.529 * t2e4
  43. + 3.582 * t3e6 - 1.769 * t4e8))
  44. + 8.0 * Math.cos(DEG_TO_RAD * (297.8502 + 445267.1115 * t - 16.300 * t2e4
  45. + 1.832 * t3e6 - 0.884 * t4e8))
  46. - 6.2 * Math.cos(DEG_TO_RAD * (132.4925 + 513197.9179 * t + 88.434 * t2e4
  47. + 14.388 * t3e6 - 6.797 * t4e8))
  48. + 6.0 * Math.cos(DEG_TO_RAD * (173.5506 + 1335801.3346 * t - 48.901 * t2e4
  49. + 5.496 * t3e6 - 2.653 * t4e8))
  50. + 3.7 * Math.cos(DEG_TO_RAD * (113.8717 + 1745069.3958 * t - 63.665 * t2e4
  51. + 7.287 * t3e6 - 3.538 * t4e8))
  52. + 3.6 * Math.cos(DEG_TO_RAD * (338.9083 + 1267870.5281 * t - 153.636 * t2e4
  53. - 7.061 * t3e6 + 3.259 * t4e8))
  54. + 3.2 * Math.cos(DEG_TO_RAD * (246.3642 + 2258267.3137 * t + 24.769 * t2e4
  55. + 21.675 * t3e6 - 10.335 * t4e8))
  56. - 3.0 * Math.cos(DEG_TO_RAD * (8.1929 + 1403732.1410 * t + 55.834 * t2e4
  57. + 18.052 * t3e6 - 8.566 * t4e8))
  58. + 2.3 * Math.cos(DEG_TO_RAD * (98.2661 + 449334.4057 * t - 124.107 * t2e4
  59. - 10.643 * t3e6 + 5.028 * t4e8))
  60. - 2.2 * Math.cos(DEG_TO_RAD * (357.5291 + 35999.0503 * t - 1.536 * t2e4
  61. + 0.041 * t3e6 + 0.000 * t4e8))
  62. - 2.0 * Math.cos(DEG_TO_RAD * (38.5872 + 858602.4669 * t - 138.871 * t2e4
  63. - 8.852 * t3e6 + 4.144 * t4e8))
  64. - 1.8 * Math.cos(DEG_TO_RAD * (105.6788 + 341337.2548 * t - 119.499 * t2e4
  65. - 10.765 * t3e6 + 5.028 * t4e8))
  66. - 1.7 * Math.cos(DEG_TO_RAD * (201.4740 + 826670.7108 * t - 245.142 * t2e4
  67. - 21.367 * t3e6 + 10.057 * t4e8))
  68. + 1.6 * Math.cos(DEG_TO_RAD * (184.1196 + 401329.0556 * t + 125.428 * t2e4
  69. + 18.579 * t3e6 - 8.798 * t4e8))
  70. - 1.4 * Math.cos(DEG_TO_RAD * (308.4192 - 489205.1674 * t + 158.029 * t2e4
  71. + 14.915 * t3e6 - 7.029 * t4e8))
  72. + 1.3 * Math.cos(DEG_TO_RAD * (325.7736 - 63863.5122 * t - 212.541 * t2e4
  73. - 25.031 * t3e6 + 11.826 * t4e8));
  74. var sapp = - 0.55 * Math.cos(DEG_TO_RAD * (238.2 + 854535.2 * t))
  75. + 0.10 * Math.cos(DEG_TO_RAD * (103.2 + 377336.3 * t))
  76. + 0.10 * Math.cos(DEG_TO_RAD * (233.2 + 926533.3 * t));
  77. var sma = 383397.6 + sa + sapp * t;
  78. //% orbital eccentricity
  79. var se = 0.014217 * Math.cos(DEG_TO_RAD * (100.7370 + 413335.3554 * t - 122.571 * t2e4
  80. - 10.684 * t3e6 + 5.028 * t4e8))
  81. + 0.008551 * Math.cos(DEG_TO_RAD * (325.7736 - 63863.5122 * t - 212.541 * t2e4
  82. - 25.031 * t3e6 + 11.826 * t4e8))
  83. - 0.001383 * Math.cos(DEG_TO_RAD * (134.9634 + 477198.8676 * t + 89.970 * t2e4
  84. + 14.348 * t3e6 - 6.797 * t4e8))
  85. + 0.001353 * Math.cos(DEG_TO_RAD * (10.6638 + 1367733.0907 * t + 57.370 * t2e4
  86. + 18.011 * t3e6 - 8.566 * t4e8))
  87. - 0.001146 * Math.cos(DEG_TO_RAD * (66.5106 + 349471.8432 * t - 335.112 * t2e4
  88. - 35.715 * t3e6 + 16.854 * t4e8))
  89. - 0.000915 * Math.cos(DEG_TO_RAD * (201.4740 + 826670.7108 * t - 245.142 * t2e4
  90. - 21.367 * t3e6 + 10.057 * t4e8))
  91. + 0.000869 * Math.cos(DEG_TO_RAD * (103.2079 + 377336.3051 * t - 121.035 * t2e4
  92. - 10.724 * t3e6 + 5.028 * t4e8))
  93. - 0.000628 * Math.cos(DEG_TO_RAD * (235.7004 + 890534.2230 * t - 32.601 * t2e4
  94. + 3.664 * t3e6 - 1.769 * t4e8))
  95. - 0.000393 * Math.cos(DEG_TO_RAD * (291.5472 - 127727.0245 * t - 425.082 * t2e4
  96. - 50.062 * t3e6 + 23.651 * t4e8))
  97. + 0.000284 * Math.cos(DEG_TO_RAD * (328.2445 - 99862.5625 * t - 211.005 * t2e4
  98. - 25.072 * t3e6 + 11.826 * t4e8))
  99. - 0.000278 * Math.cos(DEG_TO_RAD * (162.8868 - 31931.7561 * t - 106.271 * t2e4
  100. - 12.516 * t3e6 + 5.913 * t4e8))
  101. - 0.000240 * Math.cos(DEG_TO_RAD * (269.9268 + 954397.7353 * t + 179.941 * t2e4
  102. + 28.695 * t3e6 - 13.594 * t4e8))
  103. + 0.000230 * Math.cos(DEG_TO_RAD * (111.4008 + 1781068.4461 * t - 65.201 * t2e4
  104. + 7.328 * t3e6 - 3.538 * t4e8))
  105. + 0.000229 * Math.cos(DEG_TO_RAD * (167.2476 + 762807.1986 * t - 457.683 * t2e4
  106. - 46.398 * t3e6 + 21.882 * t4e8))
  107. - 0.000202 * Math.cos(DEG_TO_RAD * ( 83.3826 - 12006.2998 * t + 247.999 * t2e4
  108. + 29.262 * t3e6 - 13.826 * t4e8))
  109. + 0.000190 * Math.cos(DEG_TO_RAD * (190.8102 - 541062.3799 * t - 302.511 * t2e4
  110. - 39.379 * t3e6 + 18.623 * t4e8))
  111. + 0.000177 * Math.cos(DEG_TO_RAD * (357.5291 + 35999.0503 * t - 1.536 * t2e4
  112. + 0.041 * t3e6 + 0.000 * t4e8))
  113. + 0.000153 * Math.cos(DEG_TO_RAD * (32.2842 + 285608.3309 * t - 547.653 * t2e4
  114. - 60.746 * t3e6 + 28.679 * t4e8))
  115. - 0.000137 * Math.cos(DEG_TO_RAD * (44.8902 + 1431596.6029 * t + 269.911 * t2e4
  116. + 43.043 * t3e6 - 20.392 * t4e8))
  117. + 0.000122 * Math.cos(DEG_TO_RAD * (145.6272 + 1844931.9583 * t + 147.340 * t2e4
  118. + 32.359 * t3e6 - 15.363 * t4e8))
  119. + 0.000116 * Math.cos(DEG_TO_RAD * (302.2110 + 1240006.0662 * t - 367.713 * t2e4
  120. - 32.051 * t3e6 + 15.085 * t4e8))
  121. - 0.000111 * Math.cos(DEG_TO_RAD * (203.9449 + 790671.6605 * t - 243.606 * t2e4
  122. - 21.408 * t3e6 + 10.057 * t4e8))
  123. - 0.000108 * Math.cos(DEG_TO_RAD * (68.9815 + 313472.7929 * t - 333.576 * t2e4
  124. - 35.756 * t3e6 + 16.854 * t4e8))
  125. + 0.000096 * Math.cos(DEG_TO_RAD * (336.4374 + 1303869.5784 * t - 155.171 * t2e4
  126. - 7.020 * t3e6 + 3.259 * t4e8))
  127. - 0.000090 * Math.cos(DEG_TO_RAD * (98.2661 + 449334.4057 * t - 124.107 * t2e4
  128. - 10.643 * t3e6 + 5.028 * t4e8))
  129. + 0.000090 * Math.cos(DEG_TO_RAD * (13.1347 + 1331734.0404 * t + 58.906 * t2e4
  130. + 17.971 * t3e6 - 8.566 * t4e8))
  131. + 0.000056 * Math.cos(DEG_TO_RAD * (55.8468 - 1018261.2475 * t - 392.482 * t2e4
  132. - 53.726 * t3e6 + 25.420 * t4e8))
  133. - 0.000056 * Math.cos(DEG_TO_RAD * (238.1713 + 854535.1727 * t - 31.065 * t2e4
  134. + 3.623 * t3e6 - 1.769 * t4e8))
  135. + 0.000052 * Math.cos(DEG_TO_RAD * (308.4192 - 489205.1674 * t + 158.029 * t2e4
  136. + 14.915 * t3e6 - 7.029 * t4e8))
  137. - 0.000050 * Math.cos(DEG_TO_RAD * (133.0212 + 698943.6863 * t - 670.224 * t2e4
  138. - 71.429 * t3e6 + 33.708 * t4e8))
  139. - 0.000049 * Math.cos(DEG_TO_RAD * (267.9846 + 1176142.5540 * t - 580.254 * t2e4
  140. - 57.082 * t3e6 + 26.911 * t4e8))
  141. - 0.000049 * Math.cos(DEG_TO_RAD * (184.1196 + 401329.0556 * t + 125.428 * t2e4
  142. + 18.579 * t3e6 - 8.798 * t4e8))
  143. - 0.000045 * Math.cos(DEG_TO_RAD * (49.1562 - 75869.8120 * t + 35.458 * t2e4
  144. + 4.231 * t3e6 - 2.001 * t4e8))
  145. + 0.000044 * Math.cos(DEG_TO_RAD * (257.3208 - 191590.5367 * t - 637.623 * t2e4
  146. - 75.093 * t3e6 + 35.477 * t4e8))
  147. + 0.000042 * Math.cos(DEG_TO_RAD * (105.6788 + 341337.2548 * t - 119.499 * t2e4
  148. - 10.765 * t3e6 + 5.028 * t4e8))
  149. + 0.000042 * Math.cos(DEG_TO_RAD * (160.4159 + 4067.2942 * t - 107.806 * t2e4
  150. - 12.475 * t3e6 + 5.913 * t4e8))
  151. + 0.000040 * Math.cos(DEG_TO_RAD * (246.3642 + 2258267.3137 * t + 24.769 * t2e4
  152. + 21.675 * t3e6 - 10.335 * t4e8))
  153. - 0.000040 * Math.cos(DEG_TO_RAD * (156.5838 - 604925.8921 * t - 515.053 * t2e4
  154. - 64.410 * t3e6 + 30.448 * t4e8))
  155. + 0.000036 * Math.cos(DEG_TO_RAD * (169.7185 + 726808.1483 * t - 456.147 * t2e4
  156. - 46.439 * t3e6 + 21.882 * t4e8))
  157. + 0.000029 * Math.cos(DEG_TO_RAD * (113.8717 + 1745069.3958 * t - 63.665 * t2e4
  158. + 7.287 * t3e6 - 3.538 * t4e8))
  159. - 0.000029 * Math.cos(DEG_TO_RAD * (297.8502 + 445267.1115 * t - 16.300 * t2e4
  160. + 1.832 * t3e6 - 0.884 * t4e8))
  161. - 0.000028 * Math.cos(DEG_TO_RAD * (294.0181 - 163726.0747 * t - 423.546 * t2e4
  162. - 50.103 * t3e6 + 23.651 * t4e8))
  163. + 0.000027 * Math.cos(DEG_TO_RAD * (263.6238 + 381403.5993 * t - 228.841 * t2e4
  164. - 23.199 * t3e6 + 10.941 * t4e8))
  165. - 0.000026 * Math.cos(DEG_TO_RAD * (358.0578 + 221744.8187 * t - 760.194 * t2e4
  166. - 85.777 * t3e6 + 40.505 * t4e8))
  167. - 0.000026 * Math.cos(DEG_TO_RAD * (8.1929 + 1403732.1410 * t + 55.834 * t2e4
  168. + 18.052 * t3e6 - 8.566 * t4e8));
  169. var sedp = -0.0022 * Math.cos(DEG_TO_RAD * (103.2 + 377336.3 * t));
  170. var ecc = 0.055544 + se + 1e-3 * t * sedp;
  171. //% sine of half the inclination
  172. var sg = 0.0011776 * Math.cos(DEG_TO_RAD * (49.1562 - 75869.8120 * t + 35.458 * t2e4
  173. + 4.231 * t3e6 - 2.001 * t4e8))
  174. - 0.0000971 * Math.cos(DEG_TO_RAD * (235.7004 + 890534.2230 * t - 32.601 * t2e4
  175. + 3.664 * t3e6 - 1.769 * t4e8))
  176. + 0.0000908 * Math.cos(DEG_TO_RAD * (186.5442 + 966404.0351 * t - 68.058 * t2e4
  177. - 0.567 * t3e6 + 0.232 * t4e8))
  178. + 0.0000623 * Math.cos(DEG_TO_RAD * (83.3826 - 12006.2998 * t + 247.999 * t2e4
  179. + 29.262 * t3e6 - 13.826 * t4e8))
  180. + 0.0000483 * Math.cos(DEG_TO_RAD * (51.6271 - 111868.8623 * t + 36.994 * t2e4
  181. + 4.190 * t3e6 - 2.001 * t4e8))
  182. + 0.0000348 * Math.cos(DEG_TO_RAD * (100.7370 + 413335.3554 * t - 122.571 * t2e4
  183. - 10.684 * t3e6 + 5.028 * t4e8))
  184. - 0.0000316 * Math.cos(DEG_TO_RAD * (308.4192 - 489205.1674 * t + 158.029 * t2e4
  185. + 14.915 * t3e6 - 7.029 * t4e8))
  186. - 0.0000253 * Math.cos(DEG_TO_RAD * (46.6853 - 39870.7617 * t + 33.922 * t2e4
  187. + 4.272 * t3e6 - 2.001 * t4e8))
  188. - 0.0000141 * Math.cos(DEG_TO_RAD * (274.1928 - 553068.6797 * t - 54.513 * t2e4
  189. - 10.116 * t3e6 + 4.797 * t4e8))
  190. + 0.0000127 * Math.cos(DEG_TO_RAD * (325.7736 - 63863.5122 * t - 212.541 * t2e4
  191. - 25.031 * t3e6 + 11.826 * t4e8))
  192. + 0.0000117 * Math.cos(DEG_TO_RAD * (184.1196 + 401329.0556 * t + 125.428 * t2e4
  193. + 18.579 * t3e6 - 8.798 * t4e8))
  194. - 0.0000078 * Math.cos(DEG_TO_RAD * (98.3124 - 151739.6240 * t + 70.916 * t2e4
  195. + 8.462 * t3e6 - 4.001 * t4e8))
  196. - 0.0000063 * Math.cos(DEG_TO_RAD * (238.1713 + 854535.1727 * t - 31.065 * t2e4
  197. + 3.623 * t3e6 - 1.769 * t4e8))
  198. + 0.0000063 * Math.cos(DEG_TO_RAD * (134.9634 + 477198.8676 * t + 89.970 * t2e4
  199. + 14.348 * t3e6 - 6.797 * t4e8))
  200. + 0.0000036 * Math.cos(DEG_TO_RAD * (321.5076 + 1443602.9027 * t + 21.912 * t2e4
  201. + 13.780 * t3e6 - 6.566 * t4e8))
  202. - 0.0000035 * Math.cos(DEG_TO_RAD * (10.6638 + 1367733.0907 * t + 57.370 * t2e4
  203. + 18.011 * t3e6 - 8.566 * t4e8))
  204. + 0.0000024 * Math.cos(DEG_TO_RAD * (149.8932 + 337465.5434 * t - 87.113 * t2e4
  205. - 6.453 * t3e6 + 3.028 * t4e8))
  206. + 0.0000024 * Math.cos(DEG_TO_RAD * (170.9849 - 930404.9848 * t + 66.523 * t2e4
  207. + 0.608 * t3e6 - 0.232 * t4e8));
  208. var sgp = - 0.0203 * Math.cos(DEG_TO_RAD * (125.0 - 1934.1 * t))
  209. + 0.0034 * Math.cos(DEG_TO_RAD * (220.2 - 1935.5 * t));
  210. var gamma = 0.0449858 + sg + 1e-3 * sgp;
  211. //% longitude of perigee
  212. var sp = - 15.448 * Math.sin(DEG_TO_RAD * (100.7370 + 413335.3554 * t - 122.571 * t2e4
  213. - 10.684 * t3e6 + 5.028 * t4e8))
  214. - 9.642 * Math.sin(DEG_TO_RAD * (325.7736 - 63863.5122 * t - 212.541 * t2e4
  215. - 25.031 * t3e6 + 11.826 * t4e8))
  216. - 2.721 * Math.sin(DEG_TO_RAD * (134.9634 + 477198.8676 * t + 89.970 * t2e4
  217. + 14.348 * t3e6 - 6.797 * t4e8))
  218. + 2.607 * Math.sin(DEG_TO_RAD * (66.5106 + 349471.8432 * t - 335.112 * t2e4
  219. - 35.715 * t3e6 + 16.854 * t4e8))
  220. + 2.085 * Math.sin(DEG_TO_RAD * (201.4740 + 826670.7108 * t - 245.142 * t2e4
  221. - 21.367 * t3e6 + 10.057 * t4e8))
  222. + 1.477 * Math.sin(DEG_TO_RAD * (10.6638 + 1367733.0907 * t + 57.370 * t2e4
  223. + 18.011 * t3e6 - 8.566 * t4e8))
  224. + 0.968 * Math.sin(DEG_TO_RAD * (291.5472 - 127727.0245 * t - 425.082 * t2e4
  225. - 50.062 * t3e6 + 23.651 * t4e8))
  226. - 0.949 * Math.sin(DEG_TO_RAD * (103.2079 + 377336.3051 * t - 121.035 * t2e4
  227. - 10.724 * t3e6 + 5.028 * t4e8))
  228. - 0.703 * Math.sin(DEG_TO_RAD * (167.2476 + 762807.1986 * t - 457.683 * t2e4
  229. - 46.398 * t3e6 + 21.882 * t4e8))
  230. - 0.660 * Math.sin(DEG_TO_RAD * (235.7004 + 890534.2230 * t - 32.601 * t2e4
  231. + 3.664 * t3e6 - 1.769 * t4e8))
  232. - 0.577 * Math.sin(DEG_TO_RAD * (190.8102 - 541062.3799 * t - 302.511 * t2e4
  233. - 39.379 * t3e6 + 18.623 * t4e8))
  234. - 0.524 * Math.sin(DEG_TO_RAD * (269.9268 + 954397.7353 * t + 179.941 * t2e4
  235. + 28.695 * t3e6 - 13.594 * t4e8))
  236. - 0.482 * Math.sin(DEG_TO_RAD * (32.2842 + 285608.3309 * t - 547.653 * t2e4
  237. - 60.746 * t3e6 + 28.679 * t4e8))
  238. + 0.452 * Math.sin(DEG_TO_RAD * (357.5291 + 35999.0503 * t - 1.536 * t2e4
  239. + 0.041 * t3e6 + 0.000 * t4e8))
  240. - 0.381 * Math.sin(DEG_TO_RAD * (302.2110 + 1240006.0662 * t - 367.713 * t2e4
  241. - 32.051 * t3e6 + 15.085 * t4e8))
  242. - 0.342 * Math.sin(DEG_TO_RAD * (328.2445 - 99862.5625 * t - 211.005 * t2e4
  243. - 25.072 * t3e6 + 11.826 * t4e8))
  244. - 0.312 * Math.sin(DEG_TO_RAD * (44.8902 + 1431596.6029 * t + 269.911 * t2e4
  245. + 43.043 * t3e6 - 20.392 * t4e8))
  246. + 0.282 * Math.sin(DEG_TO_RAD * (162.8868 - 31931.7561 * t - 106.271 * t2e4
  247. - 12.516 * t3e6 + 5.913 * t4e8))
  248. + 0.255 * Math.sin(DEG_TO_RAD * (203.9449 + 790671.6605 * t - 243.606 * t2e4
  249. - 21.408 * t3e6 + 10.057 * t4e8))
  250. + 0.252 * Math.sin(DEG_TO_RAD * (68.9815 + 313472.7929 * t - 333.576 * t2e4
  251. - 35.756 * t3e6 + 16.854 * t4e8))
  252. - 0.211 * Math.sin(DEG_TO_RAD * (83.3826 - 12006.2998 * t + 247.999 * t2e4
  253. + 29.262 * t3e6 - 13.826 * t4e8))
  254. + 0.193 * Math.sin(DEG_TO_RAD * (267.9846 + 1176142.5540 * t - 580.254 * t2e4
  255. - 57.082 * t3e6 + 26.911 * t4e8))
  256. + 0.191 * Math.sin(DEG_TO_RAD * (133.0212 + 698943.6863 * t - 670.224 * t2e4
  257. - 71.429 * t3e6 + 33.708 * t4e8))
  258. - 0.184 * Math.sin(DEG_TO_RAD * (55.8468 - 1018261.2475 * t - 392.482 * t2e4
  259. - 53.726 * t3e6 + 25.420 * t4e8))
  260. + 0.182 * Math.sin(DEG_TO_RAD * (145.6272 + 1844931.9583 * t + 147.340 * t2e4
  261. + 32.359 * t3e6 - 15.363 * t4e8))
  262. - 0.158 * Math.sin(DEG_TO_RAD * (257.3208 - 191590.5367 * t - 637.623 * t2e4
  263. - 75.093 * t3e6 + 35.477 * t4e8))
  264. + 0.148 * Math.sin(DEG_TO_RAD * (156.5838 - 604925.8921 * t - 515.053 * t2e4
  265. - 64.410 * t3e6 + 30.448 * t4e8))
  266. - 0.111 * Math.sin(DEG_TO_RAD * (169.7185 + 726808.1483 * t - 456.147 * t2e4
  267. - 46.439 * t3e6 + 21.882 * t4e8))
  268. + 0.101 * Math.sin(DEG_TO_RAD * (13.1347 + 1331734.0404 * t + 58.906 * t2e4
  269. + 17.971 * t3e6 - 8.566 * t4e8))
  270. + 0.100 * Math.sin(DEG_TO_RAD * (358.0578 + 221744.8187 * t - 760.194 * t2e4
  271. - 85.777 * t3e6 + 40.505 * t4e8))
  272. + 0.087 * Math.sin(DEG_TO_RAD * (98.2661 + 449334.4057 * t - 124.107 * t2e4
  273. - 10.643 * t3e6 + 5.028 * t4e8))
  274. + 0.080 * Math.sin(DEG_TO_RAD * (42.9480 + 1653341.4216 * t - 490.283 * t2e4
  275. - 42.734 * t3e6 + 20.113 * t4e8))
  276. + 0.080 * Math.sin(DEG_TO_RAD * (222.5657 - 441199.8173 * t - 91.506 * t2e4
  277. - 14.307 * t3e6 + 6.797 * t4e8))
  278. + 0.077 * Math.sin(DEG_TO_RAD * (294.0181 - 163726.0747 * t - 423.546 * t2e4
  279. - 50.103 * t3e6 + 23.651 * t4e8))
  280. - 0.073 * Math.sin(DEG_TO_RAD * (280.8834 - 1495460.1151 * t - 482.452 * t2e4
  281. - 68.074 * t3e6 + 32.217 * t4e8))
  282. - 0.071 * Math.sin(DEG_TO_RAD * (304.6819 + 1204007.0159 * t - 366.177 * t2e4
  283. - 32.092 * t3e6 + 15.085 * t4e8))
  284. - 0.069 * Math.sin(DEG_TO_RAD * (233.7582 + 1112279.0417 * t - 792.795 * t2e4
  285. - 82.113 * t3e6 + 38.736 * t4e8))
  286. - 0.067 * Math.sin(DEG_TO_RAD * (34.7551 + 249609.2807 * t - 546.117 * t2e4
  287. - 60.787 * t3e6 + 28.679 * t4e8))
  288. - 0.067 * Math.sin(DEG_TO_RAD * (263.6238 + 381403.5993 * t - 228.841 * t2e4
  289. - 23.199 * t3e6 + 10.941 * t4e8))
  290. + 0.055 * Math.sin(DEG_TO_RAD * (21.6203 - 1082124.7597 * t - 605.023 * t2e4
  291. - 78.757 * t3e6 + 37.246 * t4e8))
  292. + 0.055 * Math.sin(DEG_TO_RAD * (308.4192 - 489205.1674 * t + 158.029 * t2e4
  293. + 14.915 * t3e6 -7.029 * t4e8))
  294. - 0.054 * Math.sin(DEG_TO_RAD * (8.7216 + 1589477.9094 * t - 702.824 * t2e4
  295. - 67.766 * t3e6 + 31.939 * t4e8))
  296. - 0.052 * Math.sin(DEG_TO_RAD * (179.8536 + 1908795.4705 * t + 359.881 * t2e4
  297. + 57.390 * t3e6 - 27.189 * t4e8))
  298. - 0.050 * Math.sin(DEG_TO_RAD * (98.7948 + 635080.1741 * t - 882.765 * t2e4
  299. - 96.461 * t3e6 + 45.533 * t4e8))
  300. - 0.049 * Math.sin(DEG_TO_RAD * (128.6604 - 95795.2683 * t - 318.812 * t2e4
  301. - 37.547 * t3e6 + 17.738 * t4e8))
  302. - 0.047 * Math.sin(DEG_TO_RAD * (17.3544 + 425341.6552 * t - 370.570 * t2e4
  303. - 39.946 * t3e6 + 18.854 * t4e8))
  304. - 0.044 * Math.sin(DEG_TO_RAD * (160.4159 + 4067.2942 * t - 107.806 * t2e4
  305. - 12.475 * t3e6 + 5.913 * t4e8))
  306. - 0.043 * Math.sin(DEG_TO_RAD * (238.1713 + 854535.1727 * t - 31.065 * t2e4
  307. + 3.623 * t3e6 - 1.769 * t4e8))
  308. + 0.042 * Math.sin(DEG_TO_RAD * (270.4555 + 1140143.5037 * t - 578.718 * t2e4
  309. - 57.123 * t3e6 + 26.911 * t4e8))
  310. - 0.042 * Math.sin(DEG_TO_RAD * (132.4925 + 513197.9179 * t + 88.434 * t2e4
  311. + 14.388 * t3e6 - 6.797 * t4e8))
  312. - 0.041 * Math.sin(DEG_TO_RAD * (122.3573 - 668789.4043 * t - 727.594 * t2e4
  313. - 89.441 * t3e6 + 42.274 * t4e8))
  314. - 0.040 * Math.sin(DEG_TO_RAD * (105.6788 + 341337.2548 * t - 119.499 * t2e4
  315. - 10.765 * t3e6 + 5.028 * t4e8))
  316. + 0.038 * Math.sin(DEG_TO_RAD * (135.4921 + 662944.6361 * t - 668.688 * t2e4
  317. - 71.470 * t3e6 + 33.708 * t4e8))
  318. - 0.037 * Math.sin(DEG_TO_RAD * (242.3910 - 51857.2124 * t - 460.540 * t2e4
  319. - 54.293 * t3e6 + 25.652 * t4e8))
  320. + 0.036 * Math.sin(DEG_TO_RAD * (336.4374 + 1303869.5784 * t - 155.171 * t2e4
  321. - 7.020 * t3e6 + 3.259 * t4e8))
  322. + 0.035 * Math.sin(DEG_TO_RAD * (223.0943 - 255454.0489 * t - 850.164 * t2e4
  323. - 100.124 * t3e6 + 47.302 * t4e8))
  324. - 0.034 * Math.sin(DEG_TO_RAD * (193.2811 - 577061.4302 * t - 300.976 * t2e4
  325. - 39.419 * t3e6 + 18.623 * t4e8))
  326. + 0.031 * Math.sin(DEG_TO_RAD * (87.6023 - 918398.6850 * t - 181.476 * t2e4
  327. - 28.654 * t3e6 + 13.594 * t4e8));
  328. var spp = 2.4 * Math.sin(DEG_TO_RAD * (103.2 + 377336.3 * t));
  329. var lp = 83.353 + 4069.0137 * t - 103.238 * t2e4
  330. - 12.492 * t3e6 + 5.263 * t4e8 + sp + 1e-3 * t * spp;
  331. //% longitude of the ascending node
  332. var sr = - 1.4979 * Math.sin(DEG_TO_RAD * (49.1562 - 75869.8120 * t + 35.458 * t2e4
  333. + 4.231 * t3e6 - 2.001 * t4e8))
  334. - 0.1500 * Math.sin(DEG_TO_RAD * (357.5291 + 35999.0503 * t - 1.536 * t2e4
  335. + 0.041 * t3e6 + 0.000 * t4e8))
  336. - 0.1226 * Math.sin(DEG_TO_RAD * (235.7004 + 890534.2230 * t - 32.601 * t2e4
  337. + 3.664 * t3e6 - 1.769 * t4e8))
  338. + 0.1176 * Math.sin(DEG_TO_RAD * (186.5442 + 966404.0351 * t - 68.058 * t2e4
  339. - 0.567 * t3e6 + 0.232 * t4e8))
  340. - 0.0801 * Math.sin(DEG_TO_RAD * (83.3826 - 12006.2998 * t + 247.999 * t2e4
  341. + 29.262 * t3e6 - 13.826 * t4e8))
  342. - 0.0616 * Math.sin(DEG_TO_RAD * (51.6271 - 111868.8623 * t + 36.994 * t2e4
  343. + 4.190 * t3e6 - 2.001 * t4e8))
  344. + 0.0490 * Math.sin(DEG_TO_RAD * (100.7370 + 413335.3554 * t - 122.571 * t2e4
  345. - 10.684 * t3e6 + 5.028 * t4e8))
  346. + 0.0409 * Math.sin(DEG_TO_RAD * (308.4192 - 489205.1674 * t + 158.029 * t2e4
  347. + 14.915 * t3e6 - 7.029 * t4e8))
  348. + 0.0327 * Math.sin(DEG_TO_RAD * (134.9634 + 477198.8676 * t + 89.970 * t2e4
  349. + 14.348 * t3e6 - 6.797 * t4e8))
  350. + 0.0324 * Math.sin(DEG_TO_RAD * (46.6853 - 39870.7617 * t + 33.922 * t2e4
  351. + 4.272 * t3e6 - 2.001 * t4e8))
  352. + 0.0196 * Math.sin(DEG_TO_RAD * (98.3124 - 151739.6240 * t + 70.916 * t2e4
  353. + 8.462 * t3e6 - 4.001 * t4e8))
  354. + 0.0180 * Math.sin(DEG_TO_RAD * (274.1928 - 553068.6797 * t - 54.513 * t2e4
  355. - 10.116 * t3e6 + 4.797 * t4e8))
  356. + 0.0150 * Math.sin(DEG_TO_RAD * (325.7736 - 63863.5122 * t - 212.541 * t2e4
  357. - 25.031 * t3e6 + 11.826 * t4e8))
  358. - 0.0150 * Math.sin(DEG_TO_RAD * (184.1196 + 401329.0556 * t + 125.428 * t2e4
  359. + 18.579 * t3e6 - 8.798 * t4e8))
  360. - 0.0078 * Math.sin(DEG_TO_RAD * (238.1713 + 854535.1727 * t - 31.065 * t2e4
  361. + 3.623 * t3e6 - 1.769 * t4e8))
  362. - 0.0045 * Math.sin(DEG_TO_RAD * (10.6638 + 1367733.0907 * t + 57.370 * t2e4
  363. + 18.011 * t3e6 - 8.566 * t4e8))
  364. + 0.0044 * Math.sin(DEG_TO_RAD * (321.5076 + 1443602.9027 * t + 21.912 * t2e4
  365. + 13.780 * t3e6 - 6.566 * t4e8))
  366. - 0.0042 * Math.sin(DEG_TO_RAD * (162.8868 - 31931.7561 * t - 106.271 * t2e4
  367. - 12.516 * t3e6 + 5.913 * t4e8))
  368. - 0.0031 * Math.sin(DEG_TO_RAD * (170.9849 - 930404.9848 * t + 66.523 * t2e4
  369. + 0.608 * t3e6 - 0.232 * t4e8))
  370. + 0.0031 * Math.sin(DEG_TO_RAD * (103.2079 + 377336.3051 * t - 121.035 * t2e4
  371. - 10.724 * t3e6 + 5.028 * t4e8))
  372. + 0.0029 * Math.sin(DEG_TO_RAD * (222.6120 - 1042273.8471 * t + 103.516 * t2e4
  373. + 4.798 * t3e6 - 2.232 * t4e8))
  374. + 0.0028 * Math.sin(DEG_TO_RAD * (184.0733 + 1002403.0853 * t - 69.594 * t2e4
  375. - 0.526 * t3e6 + 0.232 * t4e8));
  376. var srp = 25.9 * Math.sin(DEG_TO_RAD * (125.0 - 1934.1 * t))
  377. - 4.3 * Math.sin(DEG_TO_RAD * (220.2 - 1935.5 * t));
  378. var srpp = 0.38 * Math.sin(DEG_TO_RAD * (357.5 + 35999.1 * t));
  379. var raan = 125.0446 - 1934.13618 * t + 20.762 * t2e4
  380. + 2.139 * t3e6 - 1.650 * t4e8 + sr
  381. + 1e-3 * (srp + srpp * t);
  382. //% mean longitude
  383. var sl = - 0.92581 * Math.sin(DEG_TO_RAD * (235.7004 + 890534.2230 * t - 32.601 * t2e4
  384. + 3.664 * t3e6 - 1.769 * t4e8))
  385. + 0.33262 * Math.sin(DEG_TO_RAD * (100.7370 + 413335.3554 * t - 122.571 * t2e4
  386. - 10.684 * t3e6 + 5.028 * t4e8))
  387. - 0.18402 * Math.sin(DEG_TO_RAD * (357.5291 + 35999.0503 * t - 1.536 * t2e4
  388. + 0.041 * t3e6 + 0.000 * t4e8))
  389. + 0.11007 * Math.sin(DEG_TO_RAD * (134.9634 + 477198.8676 * t + 89.970 * t2e4
  390. + 14.348 * t3e6 - 6.797 * t4e8))
  391. - 0.06055 * Math.sin(DEG_TO_RAD * (238.1713 + 854535.1727 * t - 31.065 * t2e4
  392. + 3.623 * t3e6 - 1.769 * t4e8))
  393. + 0.04741 * Math.sin(DEG_TO_RAD * (325.7736 - 63863.5122 * t - 212.541 * t2e4
  394. - 25.031 * t3e6 + 11.826 * t4e8))
  395. - 0.03086 * Math.sin(DEG_TO_RAD * (10.6638 + 1367733.0907 * t + 57.370 * t2e4
  396. + 18.011 * t3e6 - 8.566 * t4e8))
  397. + 0.02184 * Math.sin(DEG_TO_RAD * (103.2079 + 377336.3051 * t - 121.035 * t2e4
  398. - 10.724 * t3e6 + 5.028 * t4e8))
  399. + 0.01645 * Math.sin(DEG_TO_RAD * (49.1562 - 75869.8120 * t + 35.458 * t2e4
  400. + 4.231 * t3e6 - 2.001 * t4e8))
  401. + 0.01022 * Math.sin(DEG_TO_RAD * (233.2295 + 926533.2733 * t - 34.136 * t2e4
  402. + 3.705 * t3e6 - 1.769 * t4e8))
  403. - 0.00756 * Math.sin(DEG_TO_RAD * (336.4374 + 1303869.5784 * t - 155.171 * t2e4
  404. - 7.020 * t3e6 + 3.259 * t4e8))
  405. - 0.00530 * Math.sin(DEG_TO_RAD * (222.5657 - 441199.8173 * t - 91.506 * t2e4
  406. - 14.307 * t3e6 + 6.797 * t4e8))
  407. - 0.00496 * Math.sin(DEG_TO_RAD * (162.8868 - 31931.7561 * t - 106.271 * t2e4
  408. - 12.516 * t3e6 + 5.913 * t4e8))
  409. - 0.00472 * Math.sin(DEG_TO_RAD * (297.8502 + 445267.1115 * t - 16.300 * t2e4
  410. + 1.832 * t3e6 - 0.884 * t4e8))
  411. - 0.00271 * Math.sin(DEG_TO_RAD * (240.6422 + 818536.1225 * t - 29.529 * t2e4
  412. + 3.582 * t3e6 - 1.769 * t4e8))
  413. + 0.00264 * Math.sin(DEG_TO_RAD * (132.4925 + 513197.9179 * t + 88.434 * t2e4
  414. + 14.388 * t3e6 - 6.797 * t4e8))
  415. - 0.00254 * Math.sin(DEG_TO_RAD * (186.5442 + 966404.0351 * t - 68.058 * t2e4
  416. - 0.567 * t3e6 + 0.232 * t4e8))
  417. + 0.00234 * Math.sin(DEG_TO_RAD * (269.9268 + 954397.7353 * t + 179.941 * t2e4
  418. + 28.695 * t3e6 - 13.594 * t4e8))
  419. - 0.00220 * Math.sin(DEG_TO_RAD * (13.1347 + 1331734.0404 * t + 58.906 * t2e4
  420. + 17.971 * t3e6 - 8.566 * t4e8))
  421. - 0.00202 * Math.sin(DEG_TO_RAD * (355.0582 + 71998.1006 * t - 3.072 * t2e4
  422. + 0.082 * t3e6 + 0.000 * t4e8))
  423. + 0.00167 * Math.sin(DEG_TO_RAD * (328.2445 - 99862.5625 * t - 211.005 * t2e4
  424. - 25.072 * t3e6 + 11.826 * t4e8))
  425. - 0.00143 * Math.sin(DEG_TO_RAD * (173.5506 + 1335801.3346 * t - 48.901 * t2e4
  426. + 5.496 * t3e6 - 2.653 * t4e8))
  427. - 0.00121 * Math.sin(DEG_TO_RAD * (98.2661 + 449334.4057 * t - 124.107 * t2e4
  428. - 10.643 * t3e6 + 5.028 * t4e8))
  429. - 0.00116 * Math.sin(DEG_TO_RAD * (145.6272 + 1844931.9583 * t + 147.340 * t2e4
  430. + 32.359 * t3e6 - 15.363 * t4e8))
  431. + 0.00102 * Math.sin(DEG_TO_RAD * (105.6788 + 341337.2548 * t - 119.499 * t2e4
  432. - 10.765 * t3e6 + 5.028 * t4e8))
  433. - 0.00090 * Math.sin(DEG_TO_RAD * (184.1196 + 401329.0556 * t + 125.428 * t2e4
  434. + 18.579 * t3e6 - 8.798 * t4e8))
  435. - 0.00086 * Math.sin(DEG_TO_RAD * (338.9083 + 1267870.5281 * t - 153.636 * t2e4
  436. - 7.061 * t3e6 + 3.259 * t4e8))
  437. - 0.00078 * Math.sin(DEG_TO_RAD * (111.4008 + 1781068.4461 * t - 65.201 * t2e4
  438. + 7.328 * t3e6 - 3.538 * t4e8))
  439. + 0.00069 * Math.sin(DEG_TO_RAD * (323.3027 - 27864.4619 * t - 214.077 * t2e4
  440. - 24.990 * t3e6 + 11.826 * t4e8))
  441. + 0.00066 * Math.sin(DEG_TO_RAD * (51.6271 - 111868.8623 * t + 36.994 * t2e4
  442. + 4.190 * t3e6 - 2.001 * t4e8))
  443. + 0.00065 * Math.sin(DEG_TO_RAD * (38.5872 + 858602.4669 * t - 138.871 * t2e4
  444. - 8.852 * t3e6 + 4.144 * t4e8))
  445. - 0.00060 * Math.sin(DEG_TO_RAD * (83.3826 - 12006.2998 * t + 247.999 * t2e4
  446. + 29.262 * t3e6 - 13.826 * t4e8))
  447. + 0.00054 * Math.sin(DEG_TO_RAD * (201.4740 + 826670.7108 * t - 245.142 * t2e4
  448. - 21.367 * t3e6 + 10.057 * t4e8))
  449. - 0.00052 * Math.sin(DEG_TO_RAD * (308.4192 - 489205.1674 * t + 158.029 * t2e4
  450. + 14.915 * t3e6 - 7.029 * t4e8))
  451. + 0.00048 * Math.sin(DEG_TO_RAD * (8.1929 + 1403732.1410 * t + 55.834 * t2e4
  452. + 18.052 * t3e6 - 8.566 * t4e8))
  453. - 0.00041 * Math.sin(DEG_TO_RAD * (46.6853 - 39870.7617 * t + 33.922 * t2e4
  454. + 4.272 * t3e6 - 2.001 * t4e8))
  455. - 0.00033 * Math.sin(DEG_TO_RAD * (274.1928 - 553068.6797 * t - 54.513 * t2e4
  456. - 10.116 * t3e6 + 4.797 * t4e8))
  457. + 0.00030 * Math.sin(DEG_TO_RAD * (160.4159 + 4067.2942 * t - 107.806 * t2e4
  458. - 12.475 * t3e6 + 5.913 * t4e8));
  459. var slp = 3.96 * Math.sin(DEG_TO_RAD * (119.7 + 131.8 * t))
  460. + 1.96 * Math.sin(DEG_TO_RAD * (125.0 - 1934.1 * t));
  461. var slpp = 0.463 * Math.sin(DEG_TO_RAD * (357.5 + 35999.1 * t))
  462. + 0.152 * Math.sin(DEG_TO_RAD * (238.2 + 854535.2 * t))
  463. - 0.071 * Math.sin(DEG_TO_RAD * (27.8 + 131.8 * t))
  464. - 0.055 * Math.sin(DEG_TO_RAD * (103.2 + 377336.3 * t))
  465. - 0.026 * Math.sin(DEG_TO_RAD * (233.2 + 926533.3 * t));
  466. var slppp = 14 * Math.sin(DEG_TO_RAD * (357.5 + 35999.1 * t))
  467. + 5 * Math.sin(DEG_TO_RAD * (238.2 + 854535.2 * t));
  468. var lambda = 218.31665 + 481267.88134 * t - 13.268 * t2e4
  469. + 1.856 * t3e6 - 1.534 * t4e8 + sl
  470. + 1e-3 * (slp + slpp * t + slppp * t2e4);
  471. var computed = {
  472. a : sma * 1000,
  473. e : ecc,
  474. i : 2.0 * Math.asin(gamma) * RAD_TO_DEG,
  475. w : ( (lp - raan)) % 360,
  476. o : ( raan) % 360,
  477. M : ( (lambda - lp)) % 360
  478. };
  479. return computed;
  480. };