dscom function
Implementation
Map<String, dynamic> dscom(Map<String, dynamic> options) {
final epoch = options['epoch'];
final ep = options['ep'];
final argpp = options['argpp'];
final tc = options['tc'];
final inclp = options['inclp'];
final nodep = options['nodep'];
final 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;
// -------------------------- finalants -------------------------
final zes = 0.01675;
final zel = 0.05490;
final c1ss = 2.9864797e-6;
final c1l = 4.7968065e-7;
final zsinis = 0.39785416;
final zcosis = 0.91744867;
final zcosgs = 0.1945905;
final zsings = -0.98088458;
// --------------------- local variables ------------------------
final nm = np;
final em = ep;
final snodm = Math.sin(nodep);
final cnodm = Math.cos(nodep);
final sinomm = Math.sin(argpp);
final cosomm = Math.cos(argpp);
final sinim = Math.sin(inclp);
final cosim = Math.cos(inclp);
final emsq = em * em;
final betasq = 1.0 - emsq;
final rtemsq = Math.sqrt(betasq);
// ----------------- initialize lunar solar terms ---------------
final peo = 0.0;
final pinco = 0.0;
final plo = 0.0;
final pgho = 0.0;
final pho = 0.0;
final day = epoch + 18261.5 + (tc / 1440.0);
final xnodce = (4.5236020 - (9.2422029e-4 * day)) % twoPi;
final stem = Math.sin(xnodce);
final ctem = Math.cos(xnodce);
final zcosil = 0.91375164 - (0.03568096 * ctem);
final zsinil = Math.sqrt(1.0 - (zcosil * zcosil));
final zsinhl = (0.089683511 * stem) / zsinil;
final zcoshl = Math.sqrt(1.0 - (zsinhl * zsinhl));
final gam = 5.8351514 + (0.0019443680 * day);
var zx = (0.39785416 * stem) / zsinil;
final zy = (zcoshl * ctem) + (0.91744867 * zsinhl * stem);
zx = Math.atan2(zx, zy);
zx += gam - xnodce;
final zcosgl = Math.cos(zx);
final zsingl = Math.sin(zx);
// ------------------------- do solar terms ---------------------
zcosg = zcosgs;
zsing = zsings;
zcosi = zcosis;
zsini = zsinis;
zcosh = cnodm;
zsinh = snodm;
cc = c1ss;
final 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;
}
}
final zmol = (4.7199672 + ((0.22997150 * day) - gam)) % twoPi;
final zmos = (6.2565837 + (0.017201977 * day)) % twoPi;
// ------------------------ do solar terms ----------------------
final se2 = 2.0 * ss1 * ss6;
final se3 = 2.0 * ss1 * ss7;
final si2 = 2.0 * ss2 * sz12;
final si3 = 2.0 * ss2 * (sz13 - sz11);
final sl2 = -2.0 * ss3 * sz2;
final sl3 = -2.0 * ss3 * (sz3 - sz1);
final sl4 = -2.0 * ss3 * (-21.0 - (9.0 * emsq)) * zes;
final sgh2 = 2.0 * ss4 * sz32;
final sgh3 = 2.0 * ss4 * (sz33 - sz31);
final sgh4 = -18.0 * ss4 * zes;
final sh2 = -2.0 * ss2 * sz22;
final sh3 = -2.0 * ss2 * (sz23 - sz21);
// ------------------------ do lunar terms ----------------------
final ee2 = 2.0 * s1 * s6;
final e3 = 2.0 * s1 * s7;
final xi2 = 2.0 * s2 * z12;
final xi3 = 2.0 * s2 * (z13 - z11);
final xl2 = -2.0 * s3 * z2;
final xl3 = -2.0 * s3 * (z3 - z1);
final xl4 = -2.0 * s3 * (-21.0 - (9.0 * emsq)) * zel;
final xgh2 = 2.0 * s4 * z32;
final xgh3 = 2.0 * s4 * (z33 - z31);
final xgh4 = -18.0 * s4 * zel;
final xh2 = -2.0 * s2 * z22;
final 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,
};
}