/*! * satellite-js v5.0.0 * (c) 2013 Shashwat Kandadai and UCSC * https://github.com/shashwatak/satellite-js * License: MIT */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = dscom; var _constants = require("../constants"); /*----------------------------------------------------------------------------- * * procedure dscom * * this procedure provides deep space common items used by both the secular * and periodics subroutines. input is provided as shown. this routine * used to be called dpper, but the functions inside weren't well organized. * * author : david vallado 719-573-2600 28 jun 2005 * * inputs : * epoch - * ep - eccentricity * argpp - argument of perigee * tc - * inclp - inclination * nodep - right ascension of ascending node * np - mean motion * * outputs : * sinim , cosim , sinomm , cosomm , snodm , cnodm * day - * e3 - * ee2 - * em - eccentricity * emsq - eccentricity squared * gam - * peo - * pgho - * pho - * pinco - * plo - * rtemsq - * se2, se3 - * sgh2, sgh3, sgh4 - * sh2, sh3, si2, si3, sl2, sl3, sl4 - * s1, s2, s3, s4, s5, s6, s7 - * ss1, ss2, ss3, ss4, ss5, ss6, ss7, sz1, sz2, sz3 - * sz11, sz12, sz13, sz21, sz22, sz23, sz31, sz32, sz33 - * xgh2, xgh3, xgh4, xh2, xh3, xi2, xi3, xl2, xl3, xl4 - * nm - mean motion * z1, z2, z3, z11, z12, z13, z21, z22, z23, z31, z32, z33 - * zmol - * zmos - * * locals : * a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 - * betasq - * cc - * ctem, stem - * x1, x2, x3, x4, x5, x6, x7, x8 - * xnodce - * xnoi - * zcosg , zsing , zcosgl , zsingl , zcosh , zsinh , zcoshl , zsinhl , * zcosi , zsini , zcosil , zsinil , * zx - * zy - * * coupling : * none. * * references : * hoots, roehrich, norad spacetrack report #3 1980 * hoots, norad spacetrack report #6 1986 * hoots, schumacher and glover 2004 * vallado, crawford, hujsak, kelso 2006 ----------------------------------------------------------------------------*/ function dscom(options) { var epoch = options.epoch, ep = options.ep, argpp = options.argpp, tc = options.tc, inclp = options.inclp, nodep = options.nodep, np = options.np; var a1; var a2; var a3; var a4; var a5; var a6; var a7; var a8; var a9; var a10; var cc; var x1; var x2; var x3; var x4; var x5; var x6; var x7; var x8; var zcosg; var zsing; var zcosh; var zsinh; var zcosi; var zsini; var ss1; var ss2; var ss3; var ss4; var ss5; var ss6; var ss7; var sz1; var sz2; var sz3; var sz11; var sz12; var sz13; var sz21; var sz22; var sz23; var sz31; var sz32; var sz33; var s1; var s2; var s3; var s4; var s5; var s6; var s7; var z1; var z2; var z3; var z11; var z12; var z13; var z21; var z22; var z23; var z31; var z32; var z33; // -------------------------- constants ------------------------- var zes = 0.01675; var zel = 0.05490; var c1ss = 2.9864797e-6; var c1l = 4.7968065e-7; var zsinis = 0.39785416; var zcosis = 0.91744867; var zcosgs = 0.1945905; var zsings = -0.98088458; // --------------------- local variables ------------------------ var nm = np; var em = ep; var snodm = Math.sin(nodep); var cnodm = Math.cos(nodep); var sinomm = Math.sin(argpp); var cosomm = Math.cos(argpp); var sinim = Math.sin(inclp); var cosim = Math.cos(inclp); var emsq = em * em; var betasq = 1.0 - emsq; var rtemsq = Math.sqrt(betasq); // ----------------- initialize lunar solar terms --------------- var peo = 0.0; var pinco = 0.0; var plo = 0.0; var pgho = 0.0; var pho = 0.0; var day = epoch + 18261.5 + tc / 1440.0; var xnodce = (4.5236020 - 9.2422029e-4 * day) % _constants.twoPi; var stem = Math.sin(xnodce); var ctem = Math.cos(xnodce); var zcosil = 0.91375164 - 0.03568096 * ctem; var zsinil = Math.sqrt(1.0 - zcosil * zcosil); var zsinhl = 0.089683511 * stem / zsinil; var zcoshl = Math.sqrt(1.0 - zsinhl * zsinhl); var gam = 5.8351514 + 0.0019443680 * day; var zx = 0.39785416 * stem / zsinil; var zy = zcoshl * ctem + 0.91744867 * zsinhl * stem; zx = Math.atan2(zx, zy); zx += gam - xnodce; var zcosgl = Math.cos(zx); var zsingl = Math.sin(zx); // ------------------------- do solar terms --------------------- zcosg = zcosgs; zsing = zsings; zcosi = zcosis; zsini = zsinis; zcosh = cnodm; zsinh = snodm; cc = c1ss; var xnoi = 1.0 / nm; var lsflg = 0; while (lsflg < 2) { lsflg += 1; a1 = zcosg * zcosh + zsing * zcosi * zsinh; a3 = -zsing * zcosh + zcosg * zcosi * zsinh; a7 = -zcosg * zsinh + zsing * zcosi * zcosh; a8 = zsing * zsini; a9 = zsing * zsinh + zcosg * zcosi * zcosh; a10 = zcosg * zsini; a2 = cosim * a7 + sinim * a8; a4 = cosim * a9 + sinim * a10; a5 = -sinim * a7 + cosim * a8; a6 = -sinim * a9 + cosim * a10; x1 = a1 * cosomm + a2 * sinomm; x2 = a3 * cosomm + a4 * sinomm; x3 = -a1 * sinomm + a2 * cosomm; x4 = -a3 * sinomm + a4 * cosomm; x5 = a5 * sinomm; x6 = a6 * sinomm; x7 = a5 * cosomm; x8 = a6 * cosomm; z31 = 12.0 * x1 * x1 - 3.0 * x3 * x3; z32 = 24.0 * x1 * x2 - 6.0 * x3 * x4; z33 = 12.0 * x2 * x2 - 3.0 * x4 * x4; z1 = 3.0 * (a1 * a1 + a2 * a2) + z31 * emsq; z2 = 6.0 * (a1 * a3 + a2 * a4) + z32 * emsq; z3 = 3.0 * (a3 * a3 + a4 * a4) + z33 * emsq; z11 = -6.0 * a1 * a5 + emsq * (-24.0 * x1 * x7 - 6.0 * x3 * x5); z12 = -6.0 * (a1 * a6 + a3 * a5) + emsq * (-24.0 * (x2 * x7 + x1 * x8) + -6.0 * (x3 * x6 + x4 * x5)); z13 = -6.0 * a3 * a6 + emsq * (-24.0 * x2 * x8 - 6.0 * x4 * x6); z21 = 6.0 * a2 * a5 + emsq * (24.0 * x1 * x5 - 6.0 * x3 * x7); z22 = 6.0 * (a4 * a5 + a2 * a6) + emsq * (24.0 * (x2 * x5 + x1 * x6) - 6.0 * (x4 * x7 + x3 * x8)); z23 = 6.0 * a4 * a6 + emsq * (24.0 * x2 * x6 - 6.0 * x4 * x8); z1 = z1 + z1 + betasq * z31; z2 = z2 + z2 + betasq * z32; z3 = z3 + z3 + betasq * z33; s3 = cc * xnoi; s2 = -0.5 * s3 / rtemsq; s4 = s3 * rtemsq; s1 = -15.0 * em * s4; s5 = x1 * x3 + x2 * x4; s6 = x2 * x3 + x1 * x4; s7 = x2 * x4 - x1 * x3; // ----------------------- do lunar terms ------------------- if (lsflg === 1) { ss1 = s1; ss2 = s2; ss3 = s3; ss4 = s4; ss5 = s5; ss6 = s6; ss7 = s7; sz1 = z1; sz2 = z2; sz3 = z3; sz11 = z11; sz12 = z12; sz13 = z13; sz21 = z21; sz22 = z22; sz23 = z23; sz31 = z31; sz32 = z32; sz33 = z33; zcosg = zcosgl; zsing = zsingl; zcosi = zcosil; zsini = zsinil; zcosh = zcoshl * cnodm + zsinhl * snodm; zsinh = snodm * zcoshl - cnodm * zsinhl; cc = c1l; } } var zmol = (4.7199672 + (0.22997150 * day - gam)) % _constants.twoPi; var zmos = (6.2565837 + 0.017201977 * day) % _constants.twoPi; // ------------------------ do solar terms ---------------------- var se2 = 2.0 * ss1 * ss6; var se3 = 2.0 * ss1 * ss7; var si2 = 2.0 * ss2 * sz12; var si3 = 2.0 * ss2 * (sz13 - sz11); var sl2 = -2.0 * ss3 * sz2; var sl3 = -2.0 * ss3 * (sz3 - sz1); var sl4 = -2.0 * ss3 * (-21.0 - 9.0 * emsq) * zes; var sgh2 = 2.0 * ss4 * sz32; var sgh3 = 2.0 * ss4 * (sz33 - sz31); var sgh4 = -18.0 * ss4 * zes; var sh2 = -2.0 * ss2 * sz22; var sh3 = -2.0 * ss2 * (sz23 - sz21); // ------------------------ do lunar terms ---------------------- var ee2 = 2.0 * s1 * s6; var e3 = 2.0 * s1 * s7; var xi2 = 2.0 * s2 * z12; var xi3 = 2.0 * s2 * (z13 - z11); var xl2 = -2.0 * s3 * z2; var xl3 = -2.0 * s3 * (z3 - z1); var xl4 = -2.0 * s3 * (-21.0 - 9.0 * emsq) * zel; var xgh2 = 2.0 * s4 * z32; var xgh3 = 2.0 * s4 * (z33 - z31); var xgh4 = -18.0 * s4 * zel; var xh2 = -2.0 * s2 * z22; var xh3 = -2.0 * s2 * (z23 - z21); return { snodm: snodm, cnodm: cnodm, sinim: sinim, cosim: cosim, sinomm: sinomm, cosomm: cosomm, day: day, e3: e3, ee2: ee2, em: em, emsq: emsq, gam: gam, peo: peo, pgho: pgho, pho: pho, pinco: pinco, plo: plo, rtemsq: rtemsq, se2: se2, se3: se3, sgh2: sgh2, sgh3: sgh3, sgh4: sgh4, sh2: sh2, sh3: sh3, si2: si2, si3: si3, sl2: sl2, sl3: sl3, sl4: sl4, s1: s1, s2: s2, s3: s3, s4: s4, s5: s5, s6: s6, s7: s7, ss1: ss1, ss2: ss2, ss3: ss3, ss4: ss4, ss5: ss5, ss6: ss6, ss7: ss7, sz1: sz1, sz2: sz2, sz3: sz3, sz11: sz11, sz12: sz12, sz13: sz13, sz21: sz21, sz22: sz22, sz23: sz23, sz31: sz31, sz32: sz32, sz33: sz33, xgh2: xgh2, xgh3: xgh3, xgh4: xgh4, xh2: xh2, xh3: xh3, xi2: xi2, xi3: xi3, xl2: xl2, xl3: xl3, xl4: xl4, nm: nm, z1: z1, z2: z2, z3: z3, z11: z11, z12: z12, z13: z13, z21: z21, z22: z22, z23: z23, z31: z31, z32: z32, z33: z33, zmol: zmol, zmos: zmos }; }