use crate::datetime::mjd::{DJYEAR, MJD0};
use crate::frame::constant::GK;
use crate::math::angle;
use crate::math::matrix::mat_r::*;
use crate::math::vector::vec_p;
use crate::math::vector::vec_pv;
use crate::pos_eph::equ_orbit;
use crate::BodyId;
const T0: f64 = 2444240.0 - MJD0;
const MSA: f64 = 3498.790;
const TO_ICRS: MatR = MatR {
r00: -0.9833473364922412,
r01: -0.16038715936156517,
r02: 0.08546329577978422,
r10: 0.16673964106606387,
r11: -0.9832784526546603,
r12: 0.07322142201717219,
r20: 0.07229044135136518,
r21: 0.0862522095774047,
r22: 0.9936471448317256,
};
pub fn get_orb_elm(mjd_tt: f64, body: &BodyId) -> equ_orbit::OrbElem {
match body {
BodyId::MIMAS => mimas(mjd_tt),
BodyId::ENCELADUS => enceladus(mjd_tt),
BodyId::TETHYS => tethys(mjd_tt),
BodyId::DIONE => dione(mjd_tt),
BodyId::RHEA => rhea(mjd_tt),
BodyId::TITAN => titan(mjd_tt),
BodyId::HYPERION => hyperion(mjd_tt),
BodyId::IAPETUS => iapetus(mjd_tt),
_ => equ_orbit::OrbElem {
mu: f64::NAN,
mjd0: mjd_tt,
a: f64::NAN,
l: f64::NAN,
k: f64::NAN,
h: f64::NAN,
q: f64::NAN,
p: f64::NAN,
},
}
}
pub fn get_icrs_pv(mjd_tdb: f64, body: &BodyId) -> vec_pv::VecPv {
let orb_el = get_orb_elm(mjd_tdb, body);
let out = orb_el.get_pv();
mul_pv(&TO_ICRS, &out)
}
pub fn get_icrs_p(mjd_tdb: f64, body: &BodyId) -> vec_p::VecP {
let orb_el = get_orb_elm(mjd_tdb, body);
let out = orb_el.get_p();
mul_p(&TO_ICRS, &out)
}
fn mimas(mjd_tt: f64) -> equ_orbit::OrbElem {
let dt = (mjd_tt - T0) / DJYEAR;
let dlam1 = dlam1(dt);
let dlam3 = dlam3(dt);
let epn = -0.5196910356411064e-02;
let el = 0.1822484926062486e+00
+ 0.2435144296437475e+04 * dt
+ dlam1
+ 0.1456357118609923e-03
* (0.2429607332411430e+00 + 0.2428763081719043e+04 * dt + 2.0 * dlam1 - 2.0 * dlam3)
.sin();
let ek = 0.1598170384010833e-01
* (0.6222473066544683e+01 + 0.6381214718431950e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.7314708595483528e-02
* (0.2394534112940702e+01 + 0.6292169341543310e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.7111400179101439e-02
* (0.6256340593792847e+00 + 0.6470260095320591e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.1511549643267883e-02
* (0.4849780466516306e+01 + 0.6203123964654669e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.1462159663847020e-02
* (0.1311980359393475e+01 + 0.6559305472209232e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.3336219324045869e-03
* (0.1021841512912324e+01 + 0.6114078587766029e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.3306740201503266e-03
* (0.1998326659407663e+01 + 0.6648350849097872e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.1607455685492625e-03
* (0.4012828055947553e+01 + -0.3816438325120998e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.2602700419616530e-02
* (0.1822484926062486e+00 + 0.2435144296437475e+04 * dt + dlam1).cos();
let eh = 0.1598170384010833e-01
* (0.6222473066544683e+01 + 0.6381214718431950e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.7314708595483528e-02
* (0.2394534112940702e+01 + 0.6292169341543310e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.7111400179101439e-02
* (0.6256340593792847e+00 + 0.6470260095320591e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.1511549643267883e-02
* (0.4849780466516306e+01 + 0.6203123964654669e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.1462159663847020e-02
* (0.1311980359393475e+01 + 0.6559305472209232e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.3336219324045869e-03
* (0.1021841512912324e+01 + 0.6114078587766029e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.3306740201503266e-03
* (0.1998326659407663e+01 + 0.6648350849097872e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.1607455685492625e-03
* (0.4012828055947553e+01 + -0.3816438325120998e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.2602700419616530e-02
* (0.1822484926062486e+00 + 0.2435144296437475e+04 * dt + dlam1).sin();
let eq = 0.1188963618162444e-01
* (0.4087787867376310e+01 + -0.6371881689831457e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.5317666807877856e-02
* (0.2598489137723283e+00 + -0.6460927066720098e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.5301694964646620e-02
* (0.4774134167390498e+01 + -0.6282836312942816e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.1092196251660480e-02
* (0.2715095267347932e+01 + -0.6549972443608739e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.1074089419341231e-02
* (0.5460480467404687e+01 + -0.6193790936054175e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.2328430197381575e-03
* (0.6146826767418875e+01 + -0.6104745559165536e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.2224213393203463e-03
* (0.5170341620923537e+01 + -0.6639017820497378e+01 * dt - dlam1 + 2.0 * dlam3).cos();
let ep = 0.1188963618162444e-01
* (0.4087787867376310e+01 + -0.6371881689831457e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.5317666807877856e-02
* (0.2598489137723283e+00 + -0.6460927066720098e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.5301694964646620e-02
* (0.4774134167390498e+01 + -0.6282836312942816e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.1092196251660480e-02
* (0.2715095267347932e+01 + -0.6549972443608739e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.1074089419341231e-02
* (0.5460480467404687e+01 + -0.6193790936054175e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.2328430197381575e-03
* (0.6146826767418875e+01 + -0.6104745559165536e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.2224213393203463e-03
* (0.5170341620923537e+01 + -0.6639017820497378e+01 * dt - dlam1 + 2.0 * dlam3).sin();
let am0 = DJYEAR * 0.6667061728782e+01 * (1.0 + epn);
let rmu = (GK * DJYEAR).powi(2) * (1.0 + 0.0634e-6) / MSA;
let ea = (rmu / (am0 * am0)).powf(1.0 / 3.0);
equ_orbit::OrbElem {
mu: (1.0 + 0.0634e-6) / MSA,
mjd0: mjd_tt,
a: ea,
l: angle::norm_dblpi(el),
k: ek,
h: eh,
q: eq,
p: ep,
}
}
fn enceladus(mjd_tt: f64) -> equ_orbit::OrbElem {
let dt = (mjd_tt - T0) / DJYEAR;
let dlam2 = dlam2(dt);
let dlam4 = dlam4(dt);
let epn = -0.3147075653259473e-02;
let el = 0.7997716657090215e+00 + 0.1674867298497696e+04 * dt + dlam2;
let ek = 0.4803805197845248e-02
* (0.3189423405738944e+01 + 0.2154442221398995e+01 * dt - dlam2 + 2.0 * dlam4).cos()
+ 0.1097719996101334e-03
* (0.5532383110312554e+01 + 0.2720351737016674e+01 * dt - dlam2 + 2.0 * dlam4).cos()
+ 0.1576763094428542e-02
* (0.7997716879783442e+00 + 0.1674867298497696e+04 * dt + dlam2).cos();
let eh = 0.4803805197845248e-02
* (0.3189423405738944e+01 + 0.2154442221398995e+01 * dt - dlam2 + 2.0 * dlam4).sin()
+ 0.1097719996101334e-03
* (0.5532383110312554e+01 + 0.2720351737016674e+01 * dt - dlam2 + 2.0 * dlam4).sin()
+ 0.1576763094428542e-02
* (0.7997716879783442e+00 + 0.1674867298497696e+04 * dt + dlam2).sin();
let eq = 0.1280938903343441e-03
* (0.1983149608096680e+01 + -0.2659196588419094e+01 * dt - dlam2 + 2.0 * dlam4).cos();
let ep = 0.1280938903343441e-03
* (0.1983149608096680e+01 + -0.2659196588419094e+01 * dt - dlam2 + 2.0 * dlam4).sin();
let am0 = DJYEAR * 0.4585536751534e+01 * (1.0 + epn);
let rmu = (GK * DJYEAR).powi(2) * (1.0 + 0.069e-6) / MSA;
let ea = (rmu / (am0 * am0)).powf(1.0 / 3.0);
equ_orbit::OrbElem {
mu: (1.0 + 0.069e-6) / MSA,
mjd0: mjd_tt,
a: ea,
l: angle::norm_dblpi(el),
k: ek,
h: eh,
q: eq,
p: ep,
}
}
fn tethys(mjd_tt: f64) -> equ_orbit::OrbElem {
let dt = (mjd_tt - T0) / DJYEAR;
let dlam1 = dlam1(dt);
let dlam3 = dlam3(dt);
let epn = -0.2047958691903563e-02;
let el = 0.5239109365414447e+01 + 0.1215663929056177e+04 * dt + dlam3;
let ek = 0.1564767415994558e-03
* (0.4568461127222154e+01 + 0.1263056409088354e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.8681007704489939e-04
* (0.7405221736181721e+00 + 0.1174011032199713e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.8168879255357250e-04
* (0.5941153727250531e+01 + 0.1441147162865635e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.8101165266469901e-04
* (0.3195768527193775e+01 + 0.1084965655311073e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.7081435508752854e-04
* (0.5254807427236342e+01 + 0.1352101785976995e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.1026432488829525e-02
* (0.5239109003991030e+01 + 0.1215663929056177e+04 * dt + dlam3).cos();
let eh = 0.1564767415994558e-03
* (0.4568461127222154e+01 + 0.1263056409088354e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.8681007704489939e-04
* (0.7405221736181721e+00 + 0.1174011032199713e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.8168879255357250e-04
* (0.5941153727250531e+01 + 0.1441147162865635e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.8101165266469901e-04
* (0.3195768527193775e+01 + 0.1084965655311073e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.7081435508752854e-04
* (0.5254807427236342e+01 + 0.1352101785976995e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.1026432488829525e-02
* (0.5239109003991030e+01 + 0.1215663929056177e+04 * dt + dlam3).sin();
let eq = 0.7978986672131195e-02
* (0.3937780549016139e+01 + -0.1260994960410540e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.3586811056529552e-02
* (0.1098415954121576e+00 + -0.1350040337299180e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.3578626570900766e-02
* (0.4624126849030327e+01 + -0.1171949583521899e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.7456079964789274e-03
* (0.2565087948987761e+01 + -0.1439085714187821e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.7269088792971872e-03
* (0.5310473149044516e+01 + -0.1082904206633259e+01 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.1634061837956512e-03
* (0.5996819449058704e+01 + -0.9938588297446179e+00 * dt - dlam1 + 2.0 * dlam3).cos()
+ 0.1629278673196500e-03
* (0.5020334302563366e+01 + -0.1528131091076462e+01 * dt - dlam1 + 2.0 * dlam3).cos();
let ep = 0.7978986672131195e-02
* (0.3937780549016139e+01 + -0.1260994960410540e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.3586811056529552e-02
* (0.1098415954121576e+00 + -0.1350040337299180e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.3578626570900766e-02
* (0.4624126849030327e+01 + -0.1171949583521899e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.7456079964789274e-03
* (0.2565087948987761e+01 + -0.1439085714187821e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.7269088792971872e-03
* (0.5310473149044516e+01 + -0.1082904206633259e+01 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.1634061837956512e-03
* (0.5996819449058704e+01 + -0.9938588297446179e+00 * dt - dlam1 + 2.0 * dlam3).sin()
+ 0.1629278673196500e-03
* (0.5020334302563366e+01 + -0.1528131091076462e+01 * dt - dlam1 + 2.0 * dlam3).sin();
let am0 = DJYEAR * 0.3328306445055e+01 * (1.0 + epn);
let rmu = (GK * DJYEAR).powi(2) * (1.0 + 1.060e-6) / MSA;
let ea = (rmu / (am0 * am0)).powf(1.0 / 3.0);
equ_orbit::OrbElem {
mu: (1.0 + 1.060e-6) / MSA,
mjd0: mjd_tt,
a: ea,
l: angle::norm_dblpi(el),
k: ek,
h: eh,
q: eq,
p: ep,
}
}
fn dione(mjd_tt: f64) -> equ_orbit::OrbElem {
let dt = (mjd_tt - T0) / DJYEAR;
let dlam2 = dlam2(dt);
let dlam4 = dlam4(dt);
let epn = -0.1245046723085128e-02;
let el = 0.1994592585279060e+01 + 0.8385108703595477e+03 * dt + dlam4;
let ek = 0.2203368656279073e-02
* (0.4874775170004872e+01 + 0.5374256741709729e+00 * dt - dlam2 + 2.0 * dlam4).cos()
+ 0.1172252747692422e-03 * (0.2681979734714067e+01 + 0.8933864296234374e-02 * dt).cos()
+ 0.6245540270289302e-03
* (0.1994597716654372e+01 + 0.8385108703595477e+03 * dt + dlam4).cos();
let eh = 0.2203368656279073e-02
* (0.4874775170004872e+01 + 0.5374256741709729e+00 * dt - dlam2 + 2.0 * dlam4).sin()
+ 0.1172252747692422e-03 * (0.2681979734714067e+01 + 0.8933864296234374e-02 * dt).sin()
+ 0.6245540270289302e-03
* (0.1994597716654372e+01 + 0.8385108703595477e+03 * dt + dlam4).sin();
let eq = 0.5911557823662097e-04 * 0.3221505896904584e+01_f64.cos()
+ 0.1655363859165119e-03
* (0.1556643393089241e+01 + -0.5376315279689470e+00 * dt - dlam2 + 2.0 * dlam4).cos();
let ep = 0.5911557823662097e-04 * 0.3221505896904584e+01_f64.sin()
+ 0.1655363859165119e-03
* (0.1556643393089241e+01 + -0.5376315279689470e+00 * dt - dlam2 + 2.0 * dlam4).sin();
let am0 = DJYEAR * 0.2295717646433e+01 * (1.0 + epn);
let rmu = (GK * DJYEAR).powi(2) * (1.0 + 1.9639e-6) / MSA;
let ea = (rmu / (am0 * am0)).powf(1.0 / 3.0);
equ_orbit::OrbElem {
mu: (1.0 + 1.963e-6) / MSA,
mjd0: mjd_tt,
a: ea,
l: angle::norm_dblpi(el),
k: ek,
h: eh,
q: eq,
p: ep,
}
}
fn rhea(mjd_tt: f64) -> equ_orbit::OrbElem {
let dt = (mjd_tt - T0) / DJYEAR;
let dlam5 = dlam5(dt);
let dlam6 = dlam6(dt);
let epn = -0.6263338154589970e-03
+ 0.6497476875291102e-04
* (0.5710685516146226e+01 + 0.7281705457745186e+03 * dt + 2.0 * dlam5 - 2.0 * dlam6)
.cos();
let el = 0.6221340947932125e+01
+ 0.5080093197533360e+03 * dt
+ dlam5
+ 0.9265555925994737e-04
* (0.5710685516146226e+01 + 0.7281705457745186e+03 * dt + 2.0 * dlam5 - 2.0 * dlam6)
.sin()
+ 0.5229341727885530e-04
* (0.4426139084868009e+01 + 0.3640852728872593e+03 * dt + dlam5 - dlam6).sin();
let ek = 0.9712611923476502e-03 * (0.2687921917028628e+01 + 0.8933864296234374e-02 * dt).cos()
+ 0.1671852669066537e-03 * (0.5358703148577743e-01 + 0.1755492171961483e+00 * dt).cos()
+ 0.3116043009304567e-03
* (0.6221338739275052e+01 + 0.5080093201728285e+03 * dt + dlam5).cos()
+ 0.1108384911297719e-03
* (0.3652245876718619e+01 + -0.2201612256016901e+03 * dt - dlam5 + 2.0 * dlam6).cos();
let eh = 0.9712611923476502e-03 * (0.2687921917028628e+01 + 0.8933864296234374e-02 * dt).sin()
+ 0.1671852669066537e-03 * (0.5358703148577743e-01 + 0.1755492171961483e+00 * dt).sin()
+ 0.3116043009304567e-03
* (0.6221338739275052e+01 + 0.5080093201728285e+03 * dt + dlam5).sin()
+ 0.1108384911297719e-03
* (0.3652245876718619e+01 + -0.2201612256016901e+03 * dt - dlam5 + 2.0 * dlam6).sin();
let eq = 0.4206563248738731e-03 * (0.3221497379548206e+01 + 0.0000000000000000e+00 * dt).cos()
+ 0.2970532433280590e-02 * (0.2626878648804450e+01 + -0.1754676234867099e+00 * dt).cos()
+ 0.1787509410723081e-03 * (0.6204551285275548e+01 + -0.8931239595284827e-02 * dt).cos();
let ep = 0.4206563248738731e-03 * (0.3221497379548206e+01 + 0.0000000000000000e+00 * dt).sin()
+ 0.2970532433280590e-02 * (0.2626878648804450e+01 + -0.1754676234867099e+00 * dt).sin()
+ 0.1787509410723081e-03 * (0.6204551285275548e+01 + -0.8931239595284827e-02 * dt).sin();
let am0 = DJYEAR * 0.1390853715957e+01 * (1.0 + epn);
let rmu = (GK * DJYEAR).powi(2) * (1.0 + 4.32e-6) / MSA;
let ea = (rmu / (am0 * am0)).powf(1.0 / 3.0);
equ_orbit::OrbElem {
mu: (1.0 + 4.32e-6) / MSA,
mjd0: mjd_tt,
a: ea,
l: angle::norm_dblpi(el),
k: ek,
h: eh,
q: eq,
p: ep,
}
}
fn titan(mjd_tt: f64) -> equ_orbit::OrbElem {
let dt = (mjd_tt - T0) / DJYEAR;
let dlam5 = dlam5(dt);
let dlam6 = dlam6(dt);
let epn = -0.1348089930929860e-03
+ 0.2514051816697911e-04
* (0.4426139084868009e+01 + 0.3640852728872593e+03 * dt + dlam5 - dlam6).cos();
let el = 0.4936792168079816e+01 + 0.1439240478491399e+03 * dt + dlam6;
let ek = 0.2892653650392732e-01 * (0.2687601928257754e+01 + 0.8933864296234374e-02 * dt).cos()
+ 0.1921261556124706e-03 * (0.6049785198226078e+00 + -0.8933864296234374e-02 * dt).cos()
+ 0.7446564554937326e-04 * (0.3484557927409254e+01 + 0.4176643758594916e+00 * dt).cos()
+ 0.2429402127836536e-04 * (0.4497027349870592e+01 + 0.7008320703706311e-02 * dt).cos()
+ 0.2391668026442592e-04 * (0.4004671318127588e+01 + 0.1085940788876244e-01 * dt).cos()
+ 0.1720731211496869e-04 * (0.3423177098527374e+01 + 0.1974690825885564e-02 * dt).cos()
+ 0.6687871156591785e-04
* (0.4936792307996836e+01 + 0.1439240472855692e+03 * dt + dlam6).cos();
let eh = 0.2892653650392732e-01 * (0.2687601928257754e+01 + 0.8933864296234374e-02 * dt).sin()
+ 0.1921261556124706e-03 * (0.6049785198226078e+00 + -0.8933864296234374e-02 * dt).sin()
+ 0.7446564554937326e-04 * (0.3484557927409254e+01 + 0.4176643758594916e+00 * dt).sin()
+ 0.2429402127836536e-04 * (0.4497027349870592e+01 + 0.7008320703706311e-02 * dt).sin()
+ 0.2391668026442592e-04 * (0.4004671318127588e+01 + 0.1085940788876244e-01 * dt).sin()
+ 0.1720731211496869e-04 * (0.3423177098527374e+01 + 0.1974690825885564e-02 * dt).sin()
+ 0.6687871156591785e-04
* (0.4936792307996836e+01 + 0.1439240472855692e+03 * dt + dlam6).sin();
let eq = 0.5602364095311453e-02 * 0.3221498291239513e+01_f64.cos()
+ 0.2789942947721349e-02 * (0.6204694901726296e+01 + -0.8931239595284827e-02 * dt).cos()
+ 0.1312363309291625e-03 * (0.5044269214427242e+01 + -0.1925543592528062e-02 * dt).cos()
+ 0.1125670790406430e-03 * (0.6084205141557698e+01 + 0.4265982401557260e+00 * dt).cos()
+ 0.1916668518784865e-04 * (0.5094974746907165e+01 + -0.2132991200778630e+00 * dt).cos();
let ep = 0.5602364095311453e-02 * 0.3221498291239513e+01_f64.sin()
+ 0.2789942947721349e-02 * (0.6204694901726296e+01 + -0.8931239595284827e-02 * dt).sin()
+ 0.1312363309291625e-03 * (0.5044269214427242e+01 + -0.1925543592528062e-02 * dt).sin()
+ 0.1125670790406430e-03 * (0.6084205141557698e+01 + 0.4265982401557260e+00 * dt).sin()
+ 0.1916668518784865e-04 * (0.5094974746907165e+01 + -0.2132991200778630e+00 * dt).sin();
let am0 = DJYEAR * 0.3940425676910e+00 * (1.0 + epn);
let rmu = (GK * DJYEAR).powi(2) * (1.0 + 236.638e-6) / MSA;
let ea = (rmu / (am0 * am0)).powf(1.0 / 3.0);
equ_orbit::OrbElem {
mu: (1.0 + 236.638e-6) / MSA,
mjd0: mjd_tt,
a: ea,
l: angle::norm_dblpi(el),
k: ek,
h: eh,
q: eq,
p: ep,
}
}
fn hyperion(mjd_tt: f64) -> equ_orbit::OrbElem {
let dt = mjd_tt - (2451545.00 - MJD0);
let epn = -0.1574686065780747E-02
+ 0.5269198501828300E-02 * (0.1803677252541800E+01 + 0.9810539955099672E-02 * dt).cos()
+ -0.9447929974549504E-03 * (0.1379026805952163E+01 + 0.9873376502713178E-01 * dt).cos()
+ -0.6016015548174626E-03 * (0.5858534860589942E+01 + 0.8892322507203211E-01 * dt).cos()
+ 0.5148150044366294E-03 * (0.3182704058493963E+01 + 0.1085443049822315E+00 * dt).cos()
+ -0.1309800881858535E-03 * (0.1281528868939203E+01 + 0.1072766731000612E-01 * dt).cos()
+ 0.1186076675279319E-03 * (0.2325825636144398E+01 + 0.8893412600193221E-02 * dt).cos()
+ -0.7587557241443920E-04 * (0.4054857608048142E+01 + 0.7911268511693244E-01 * dt).cos()
+ -0.4394073687298339E-04 * (0.4986381311035763E+01 + 0.1183548449373311E+00 * dt).cos()
+ -0.2986485373026291E-04 * (0.5411031757625401E+01 + 0.2943161986529901E-01 * dt).cos()
+ 0.2422130320267833E-04 * (0.3607354505083601E+01 + 0.1962107991019934E-01 * dt).cos()
+ 0.9845757121969750E-03 * (0.2758053611904325E+01 + 0.1974675300542636E+00 * dt).cos()
+ 0.5722146672387600E-03 * (0.4137080417856488E+01 + 0.2962012950813954E+00 * dt).cos()
+ 0.3064232824160758E-03 * (0.5516107223808650E+01 + 0.3949350601085272E+00 * dt).cos()
+ 0.2328679324996273E-03 * (0.6119487225812321E+00 + 0.4936688251356589E+00 * dt).cos()
+ 0.1830222466848013E-03 * (0.1990975528533395E+01 + 0.5924025901627907E+00 * dt).cos()
+ 0.1428121183641368E-03 * (0.3370002334485558E+01 + 0.6911363551899224E+00 * dt).cos()
+ 0.1030589558021878E-03 * (0.4749029140437719E+01 + 0.7898701202170543E+00 * dt).cos()
+ 0.9162128151198170E-04 * (0.2333403165314687E+01 + 0.2863907551262957E+00 * dt).cos()
+ 0.8420360344777332E-04 * (0.3712429971266850E+01 + 0.3851245201534275E+00 * dt).cos()
+ 0.7477636779983881E-04 * (0.6128055946389881E+01 + 0.8886038852441861E+00 * dt).cos()
+ 0.6245968777723361E-04 * (0.5091456777219012E+01 + 0.4838582851805592E+00 * dt).cos()
+ -0.5925277975412419E-04 * (0.5940757670398288E+01 + 0.3060118350364951E+00 * dt).cos()
+ -0.5866195836719566E-04 * (0.3280201995506922E+01 + 0.1965504026993571E+00 * dt).cos()
+ -0.5838551971068579E-04 * (0.1036599169170870E+01 + 0.4047456000636268E+00 * dt).cos()
+ 0.5517120904542451E-04 * (0.1223897445162464E+01 + 0.9873376502713178E+00 * dt).cos()
+ 0.5291804011662172E-04 * (0.1872982759915942E+00 + 0.5825920502076911E+00 * dt).cos()
+ 0.4785477163890776E-04 * (0.1566325081943758E+01 + 0.6813258152348228E+00 * dt).cos()
+ 0.4648293960962418E-04 * (0.9543763593625246E+00 + 0.1876569900991639E+00 * dt).cos()
+ -0.4509683939781330E-04 * (0.2415625975123033E+01 + 0.5034793650907585E+00 * dt).cos()
+ 0.4393229670558661E-04 * (0.2945351887895920E+01 + 0.7800595802619547E+00 * dt).cos()
+ 0.4272829406941570E-04 * (0.1134097106183830E+01 + 0.4927516977807525E+00 * dt).cos()
+ 0.4154122350033837E-04 * (0.2602924251114628E+01 + 0.1086071415298450E+01 * dt).cos()
+ -0.4056750796467554E-04 * (0.3794652781075196E+01 + 0.6022131301178903E+00 * dt).cos()
+ -0.3857616137051121E-04 * (0.5173679587027357E+01 + 0.7009468951450221E+00 * dt).cos()
+ 0.3815083219130052E-04 * (0.4324378693848082E+01 + 0.8787933452890865E+00 * dt).cos()
+ -0.3615550506243641E-04 * (0.5433884414000304E+01 + 0.1778464501440642E+00 * dt).cos()
+ -0.3619913197295652E-04 * (0.2695210857999389E+00 + 0.7996806601721539E+00 * dt).cos()
+ 0.3211045925583688E-04 * (0.5703405499800243E+01 + 0.9775271103162182E+00 * dt).cos()
+ -0.3191646069822739E-04 * (0.1648547891752100E+01 + 0.8984144251992857E+00 * dt).cos()
+ 0.3106998351274690E-04 * (0.3981951057066789E+01 + 0.1184805180325582E+01 * dt).cos()
+ -0.2797299420355516E-04 * (0.8222280980834551E-01 + 0.2170886099644629E+00 * dt).cos()
+ -0.2722632461441940E-04 * (0.3027574697704266E+01 + 0.9971481902264174E+00 * dt).cos()
+ 0.2670876942507434E-04 * (0.7992469985728281E+00 + 0.1076260875343350E+01 * dt).cos()
+ -0.2297557612018265E-04 * (0.4406601503656427E+01 + 0.1095881955253549E+01 * dt).cos()
+ 0.2299675108056304E-04 * (0.5360977863018951E+01 + 0.1283538945352713E+01 * dt).cos()
+ 0.2232369387111974E-04 * (0.2178273804524990E+01 + 0.1174994640370482E+01 * dt).cos()
+ -0.2676900656082160E-04 * (0.2148463129341690E+01 + 0.1095544904247980E+01 * dt).cos();
let el = 0.4348683610500939E+01
+ 0.2953088138695055E+00 * dt
+ 0.1591300460227652E+00 * (0.1803677252541800E+01 + 0.9810539955099672E-02 * dt).sin()
+ 0.4042489669732959E-02 * (0.2325825636144398E+01 + 0.8893412600193221E-02 * dt).sin()
+ -0.3674456394728999E-02 * (0.1281528868939203E+01 + 0.1072766731000612E-01 * dt).sin()
+ 0.1876329764520020E-02 * (0.1379026805952163E+01 + 0.9873376502713178E-01 * dt).sin()
+ -0.1559041896665946E-02 * (0.5858534860589942E+01 + 0.8892322507203211E-01 * dt).sin()
+ 0.1534084173919484E-02 * (0.5761036923576983E+01 + 0.9171273549064512E-03 * dt).sin()
+ 0.1132234522571428E-02 * (0.3182704058493963E+01 + 0.1085443049822315E+00 * dt).sin()
+ -0.3898971540977004E-03 * (0.2446630393183256E+01 + 0.9696923904671184E-02 * dt).sin()
+ 0.3851351224149008E-03 * (0.1160724111900345E+01 + 0.9924156005528160E-02 * dt).sin()
+ -0.3602762810400590E-03 * (0.5640232166538125E+01 + 0.1136160504284885E-03 * dt).sin()
+ -0.3108861291415183E-03 * (0.4054857608048142E+01 + 0.7911268511693244E-01 * dt).sin()
+ -0.3036800061325884E-03 * (0.5411031757625401E+01 + 0.2943161986529901E-01 * dt).sin()
+ -0.1967051700749114E-03 * (0.3362929749633851E+01 + 0.2463636671824243E-04 * dt).sin()
+ 0.1584700380869004E-03 * (0.3607354505083601E+01 + 0.1962107991019934E-01 * dt).sin()
+ 0.1443751571550919E-03 * (0.8400382205444394E+00 + 0.8252809808927092E-02 * dt).sin()
+ -0.1336552626452528E-03 * (0.4986381311035763E+01 + 0.1183548449373311E+00 * dt).sin()
+ 0.1354323755526581E-03 * (0.5809560142817107E+01 + 0.9721560271389426E-02 * dt).sin()
+ -0.1344254972843197E-03 * (0.4080979669446074E+01 + 0.9899519638809918E-02 * dt).sin()
+ -0.1248289604761352E-03 * (0.2767316284539162E+01 + 0.1136827010127225E-01 * dt).sin()
+ -0.9343384687595748E-04 * (0.9636390319973618E+00 + 0.1557730146172579E-02 * dt).sin()
+ 0.8558910102815169E-04 * (0.2277302416904274E+01 + 0.8897968371024604E-04 * dt).sin()
+ 0.7224202068094286E-04 * (0.7593804853366057E+00 + 0.1164479466491257E-01 * dt).sin()
+ 0.5296941292250232E-04 * (0.5166607002175651E+01 + 0.9835176321817914E-02 * dt).sin()
+ -0.5247540827620734E-04 * (0.4723932810087529E+01 + 0.9785903588381428E-02 * dt).sin()
+ 0.4189085863844754E-04 * (0.8568784223495651E+00 + 0.9965089238203824E-01 * dt).sin()
+ 0.4098739653872672E-04 * (0.9749793701295940E-01 + 0.8800609771712566E-01 * dt).sin()
+ 0.3764144636960646E-04 * (0.5238888539974385E+01 + 0.1834254709812902E-02 * dt).sin()
+ -0.3531748699358457E-04 * (0.2660555674891366E+01 + 0.1094614323371379E+00 * dt).sin()
+ -0.2947898798731622E-04 * (0.1482991361185895E+01 + 0.8139193758498604E-02 * dt).sin()
+ 0.2841090381393687E-04 * (0.3704852442096560E+01 + 0.1076271776273250E+00 * dt).sin()
+ 0.2676761780821079E-04 * (0.2251180355506342E+01 + 0.6930214516183278E-01 * dt).sin()
+ 0.2465038854019734E-04 * (0.2124363143897707E+01 + 0.1148188615170074E-01 * dt).sin()
+ 0.2383157781622512E-04 * (0.3206858913559061E+00 + 0.1671346196601068E-02 * dt).sin()
+ -0.2358765186013457E-04 * (0.5336386476987345E+01 + 0.8984035242693857E-01 * dt).sin()
+ -0.2308684467527070E-04 * (0.5933180141227998E+01 + 0.2851449251039256E-01 * dt).sin()
+ 0.2173788459895790E-04 * (0.4888883374022804E+01 + 0.3034874722020547E-01 * dt).sin()
+ 0.2477704948047725E-02 * (0.2758053611904325E+01 + 0.1974675300542636E+00 * dt).sin()
+ 0.1177430869304958E-02 * (0.4137080417856488E+01 + 0.2962012950813954E+00 * dt).sin()
+ 0.7097516189849207E-03 * (0.5516107223808650E+01 + 0.3949350601085272E+00 * dt).sin()
+ 0.4276809299095375E-03 * (0.6119487225812321E+00 + 0.4936688251356589E+00 * dt).sin()
+ 0.2883086646474427E-03 * (0.1990975528533395E+01 + 0.5924025901627907E+00 * dt).sin()
+ 0.2445211406069563E-03 * (0.9543763593625246E+00 + 0.1876569900991639E+00 * dt).sin()
+ 0.2079619720142985E-03 * (0.2333403165314687E+01 + 0.2863907551262957E+00 * dt).sin()
+ 0.1997665368454137E-03 * (0.3370002334485558E+01 + 0.6911363551899224E+00 * dt).sin()
+ 0.1532039999508838E-03 * (0.3712429971266850E+01 + 0.3851245201534275E+00 * dt).sin()
+ 0.1391797303858132E-03 * (0.4749029140437719E+01 + 0.7898701202170543E+00 * dt).sin()
+ -0.1347079373955693E-03 * (0.5940757670398288E+01 + 0.3060118350364951E+00 * dt).sin()
+ -0.1168617638452060E-03 * (0.4561730864446125E+01 + 0.2072780700093633E+00 * dt).sin()
+ 0.1158407408725238E-03 * (0.5091456777219012E+01 + 0.4838582851805592E+00 * dt).sin()
+ -0.1110204610592649E-03 * (0.1036599169170870E+01 + 0.4047456000636268E+00 * dt).sin()
+ 0.9876297087120832E-04 * (0.6128055946389881E+01 + 0.8886038852441861E+00 * dt).sin()
+ 0.9360835142429720E-04 * (0.1872982759915942E+00 + 0.5825920502076911E+00 * dt).sin()
+ -0.8787340150688395E-04 * (0.2415625975123033E+01 + 0.5034793650907585E+00 * dt).sin()
+ 0.7626783708559587E-04 * (0.1566325081943758E+01 + 0.6813258152348228E+00 * dt).sin()
+ -0.7423412446912493E-04 * (0.3794652781075196E+01 + 0.6022131301178903E+00 * dt).sin()
+ 0.7068861066099871E-04 * (0.1223897445162464E+01 + 0.9873376502713178E+00 * dt).sin()
+ -0.6947176438271949E-04 * (0.3280201995506922E+01 + 0.1965504026993571E+00 * dt).sin()
+ -0.6514978275214879E-04 * (0.5433884414000304E+01 + 0.1778464501440642E+00 * dt).sin()
+ -0.6245521353308536E-04 * (0.5173679587027357E+01 + 0.7009468951450221E+00 * dt).sin()
+ 0.6236351497568400E-04 * (0.2945351887895920E+01 + 0.7800595802619547E+00 * dt).sin()
+ -0.5211914123734037E-04 * (0.2695210857999389E+00 + 0.7996806601721539E+00 * dt).sin()
+ 0.5087526477014214E-04 * (0.2602924251114628E+01 + 0.1086071415298450E+01 * dt).sin()
+ 0.5058590687048317E-04 * (0.4324378693848082E+01 + 0.8787933452890865E+00 * dt).sin()
+ -0.4813389965573155E-04 * (0.8222280980834551E-01 + 0.2170886099644629E+00 * dt).sin()
+ -0.4301007833478336E-04 * (0.1648547891752100E+01 + 0.8984144251992857E+00 * dt).sin()
+ 0.4104292740965665E-04 * (0.5703405499800243E+01 + 0.9775271103162182E+00 * dt).sin()
+ 0.3665390355309391E-04 * (0.3981951057066789E+01 + 0.1184805180325582E+01 * dt).sin()
+ -0.3538628961664771E-04 * (0.3027574697704266E+01 + 0.9971481902264174E+00 * dt).sin()
+ 0.3326628366799721E-04 * (0.7992469985728281E+00 + 0.1076260875343350E+01 * dt).sin()
+ -0.2902403206479552E-04 * (0.4406601503656427E+01 + 0.1095881955253549E+01 * dt).sin()
+ 0.2693554901487583E-04 * (0.2178273804524990E+01 + 0.1174994640370482E+01 * dt).sin()
+ 0.2669007886238697E-04 * (0.6038255607411246E+01 + 0.3940179327536207E+00 * dt).sin()
+ 0.2640617243698899E-04 * (0.5360977863018951E+01 + 0.1283538945352713E+01 * dt).sin()
+ -0.2373722745643357E-04 * (0.5785628309608589E+01 + 0.1194615720280681E+01 * dt).sin()
+ 0.2176062809432465E-04 * (0.3557300610477151E+01 + 0.1273728405397614E+01 * dt).sin()
+ -0.2230818670346390E-03 * (0.5533048146779580E+01 + 0.5839811452565560E-03 * dt).sin()
+ -0.2328181620162680E-04 * (0.1648225206082800E+01 + 0.2952860072513110E-02 * dt).sin()
+ -0.2988889508569460E-03 * (0.1971442394820420E+01 + 0.1167962290513110E-02 * dt).sin()
+ -0.4092616660610000E-04 * (0.1221305234420420E+01 + 0.1751943435769670E-02 * dt).sin();
let ek = 0.1030661479148230E+00 * (0.3382691062696734E+01 + -0.8924811235147779E-03 * dt).cos()
+ 0.2448184191185018E-01 * (0.2860542679094136E+01 + 0.2464623139167320E-04 * dt).cos()
+ -0.2500610695618523E-02 * (0.5186368315238534E+01 + 0.8918058831584894E-02 * dt).cos()
+ -0.1653120911968409E-02 * (0.1579013810154933E+01 + -0.1070302107861445E-01 * dt).cos()
+ -0.1121964769453605E-02 * (0.4761717868648896E+01 + 0.9784128390361700E-01 * dt).cos()
+ 0.7518101576911162E-03 * (0.2003664256744571E+01 + -0.9962624615064656E-01 * dt).cos()
+ 0.2580134073493171E-03 * (0.3807341509286372E+01 + -0.8981570619554689E-01 * dt).cos()
+ -0.1702244907149874E-03 * (0.1999870042027707E+00 + -0.1094367861057462E+00 * dt).cos()
+ -0.1630491456609473E-03 * (0.2822098140111162E+00 + 0.1076518238587167E+00 * dt).cos()
+ 0.1502092233208532E-03 * (0.2958040616107096E+01 + 0.8803074394851733E-01 * dt).cos()
+ 0.1080722389283692E-03 * (0.4664219931635937E+01 + 0.9835186186491344E-02 * dt).cos()
+ 0.8563197359093362E-04 * (0.3904839446299331E+01 + -0.1809608478421229E-02 * dt).cos()
+ -0.7641879996400636E-04 * (0.5708516698841132E+01 + 0.8000931476678443E-02 * dt).cos()
+ 0.6410167941575658E-04 * (0.4025644203338189E+01 + -0.1006097173943266E-02 * dt).cos()
+ -0.6379700394998453E-04 * (0.2739737922055278E+01 + -0.7788650730862894E-03 * dt).cos()
+ -0.3738690787954837E-04 * (0.7068602606007541E+00 + 0.1872859878668457E-01 * dt).cos()
+ 0.3177451875567787E-04 * (0.4239569485046299E+01 + 0.9875841125852346E-01 * dt).cos()
+ 0.3067833613233151E-04 * (0.2101162193757531E+01 + -0.1162014843352090E-01 * dt).cos()
+ 0.2732958451060629E-04 * (0.4346330094694096E+01 + 0.6652490226578010E-03 * dt).cos()
+ 0.2559468055750869E-04 * (0.5611018761828172E+01 + -0.8000516624044722E-01 * dt).cos()
+ 0.2024562165367701E-04 * (0.1154363363565295E+01 + 0.7822020399341766E-01 * dt).cos()
+ -0.2019380769983444E-04 * (0.1105388645792460E+01 + -0.9814608072250240E-03 * dt).cos()
+ 0.2008621003222866E-04 * (0.5659993479601007E+01 + -0.8035014398045319E-03 * dt).cos()
+ 0.3778282825702326E-03 * (0.6246374507924086E+00 + -0.1983600111777784E+00 * dt).cos()
+ -0.3775434250722031E-03 * (0.6140744674601058E+01 + 0.1965750489307488E+00 * dt).cos()
+ -0.3597821116452316E-03 * (0.2615612979325803E+01 + 0.3940425789850124E+00 * dt).cos()
+ -0.2927952161795262E-03 * (0.1236586173373641E+01 + 0.2953088139578806E+00 * dt).cos()
+ 0.2216814079711899E-03 * (0.5528795952019826E+01 + -0.2970937762049101E+00 * dt).cos()
+ 0.1403880753848180E-03 * (0.4149769146067664E+01 + -0.3958275412320419E+00 * dt).cos()
+ 0.1282680047161120E-03 * (0.2428314703334209E+01 + -0.1885494712226787E+00 * dt).cos()
+ -0.9843461962138636E-04 * (0.5104145505430188E+01 + -0.2081705511328780E+00 * dt).cos()
+ 0.9302812855413870E-04 * (0.2770742340115502E+01 + -0.4945613062591737E+00 * dt).cos()
+ 0.8608901766955960E-04 * (0.1049287897382047E+01 + -0.2872832362498105E+00 * dt).cos()
+ -0.6976234551437248E-04 * (0.3725118699478026E+01 + -0.3069043161600098E+00 * dt).cos()
+ 0.6394074317345045E-04 * (0.5953446398609464E+01 + -0.3860170012769422E+00 * dt).cos()
+ 0.6387046194265387E-04 * (0.1391715534163339E+01 + -0.5932950712863055E+00 * dt).cos()
+ -0.5338815029861825E-04 * (0.2346091893525864E+01 + -0.4056380811871416E+00 * dt).cos()
+ 0.4908475624063901E-04 * (0.4574419592657302E+01 + -0.4847507663040740E+00 * dt).cos()
+ 0.4811302148563021E-04 * (0.3994639785277966E+01 + 0.4927763440121442E+00 * dt).cos()
+ 0.4486679433374308E-04 * (0.1268872821117562E-01 + -0.6920288363134373E+00 * dt).cos()
+ -0.4178177074434045E-04 * (0.9670650875737010E+00 + -0.5043718462142733E+00 * dt).cos()
+ -0.3880672848400252E-04 * (0.8119357267840028E+00 + 0.3842320390299127E+00 * dt).cos()
+ 0.3819239194924841E-04 * (0.3195392786705140E+01 + -0.5834845313312059E+00 * dt).cos()
+ -0.3553990230264197E-04 * (0.5716094228011420E+01 + 0.2854982740027810E+00 * dt).cos()
+ 0.3415645857185234E-04 * (0.5373666591230129E+01 + 0.5915101090392759E+00 * dt).cos()
+ 0.3339668674029588E-04 * (0.4419290231867604E+01 + 0.4038531189401121E+00 * dt).cos()
+ -0.3301162776329309E-04 * (0.5871223588801118E+01 + -0.6031056112414052E+00 * dt).cos()
+ 0.3180628253542403E-04 * (0.4916847229438594E+01 + -0.7907626013405691E+00 * dt).cos()
+ 0.3003432659990370E-04 * (0.1816365980752976E+01 + -0.6822182963583376E+00 * dt).cos()
+ 0.2729633446248457E-04 * (0.1024890671898113E+00 + -0.1974428838228719E+00 * dt).cos()
+ -0.2629885713884026E-04 * (0.4492196782848956E+01 + -0.7018393762685369E+00 * dt).cos()
+ 0.2473774782254921E-04 * (0.3040263425915440E+01 + 0.3051193539129803E+00 * dt).cos()
+ -0.2417336169407593E-04 * (0.4337067422059258E+01 + 0.1867645089756491E+00 * dt).cos()
+ 0.2384156418867662E-04 * (0.4373391748008135E+00 + -0.7809520613854695E+00 * dt).cos()
+ 0.2259673699575893E-04 * (0.3537820423486432E+01 + -0.8894963663677009E+00 * dt).cos()
+ -0.2109852115260203E-04 * (0.3113169976896794E+01 + -0.8005731412956687E+00 * dt).cos()
+ 0.1927636081642950E-03 * (0.5031430617631190E+01 + 0.2060411181513110E-02 * dt).cos()
+ 0.8231557260635240E-04 * (0.5554365541455580E+01 + 0.1143316058513110E-02 * dt).cos()
+ 0.5173543661985320E-04 * (0.5354647806368810E+01 + 0.2755133995131110E-03 * dt).cos()
+ 0.3269372364602020E-04 * (0.4281293457231190E+01 + 0.2644392326769670E-02 * dt).cos()
+ 0.4042027917523730E-04 * (0.4348631061277680E+01 + 0.2953088117000000E+00 * dt).cos();
let eh = 0.1030661479148230E+00 * (0.3382691062696734E+01 + -0.8924811235147779E-03 * dt).sin()
+ 0.2448184191185018E-01 * (0.2860542679094136E+01 + 0.2464623139167320E-04 * dt).sin()
+ -0.2500610695618523E-02 * (0.5186368315238534E+01 + 0.8918058831584894E-02 * dt).sin()
+ -0.1653120911968409E-02 * (0.1579013810154933E+01 + -0.1070302107861445E-01 * dt).sin()
+ -0.1121964769453605E-02 * (0.4761717868648896E+01 + 0.9784128390361700E-01 * dt).sin()
+ 0.7518101576911162E-03 * (0.2003664256744571E+01 + -0.9962624615064656E-01 * dt).sin()
+ 0.2580134073493171E-03 * (0.3807341509286372E+01 + -0.8981570619554689E-01 * dt).sin()
+ -0.1702244907149874E-03 * (0.1999870042027707E+00 + -0.1094367861057462E+00 * dt).sin()
+ -0.1630491456609473E-03 * (0.2822098140111162E+00 + 0.1076518238587167E+00 * dt).sin()
+ 0.1502092233208532E-03 * (0.2958040616107096E+01 + 0.8803074394851733E-01 * dt).sin()
+ 0.1080722389283692E-03 * (0.4664219931635937E+01 + 0.9835186186491344E-02 * dt).sin()
+ 0.8563197359093362E-04 * (0.3904839446299331E+01 + -0.1809608478421229E-02 * dt).sin()
+ -0.7641879996400636E-04 * (0.5708516698841132E+01 + 0.8000931476678443E-02 * dt).sin()
+ 0.6410167941575658E-04 * (0.4025644203338189E+01 + -0.1006097173943266E-02 * dt).sin()
+ -0.6379700394998453E-04 * (0.2739737922055278E+01 + -0.7788650730862894E-03 * dt).sin()
+ -0.3738690787954837E-04 * (0.7068602606007541E+00 + 0.1872859878668457E-01 * dt).sin()
+ 0.3177451875567787E-04 * (0.4239569485046299E+01 + 0.9875841125852346E-01 * dt).sin()
+ 0.3067833613233151E-04 * (0.2101162193757531E+01 + -0.1162014843352090E-01 * dt).sin()
+ 0.2732958451060629E-04 * (0.4346330094694096E+01 + 0.6652490226578010E-03 * dt).sin()
+ 0.2559468055750869E-04 * (0.5611018761828172E+01 + -0.8000516624044722E-01 * dt).sin()
+ 0.2024562165367701E-04 * (0.1154363363565295E+01 + 0.7822020399341766E-01 * dt).sin()
+ -0.2019380769983444E-04 * (0.1105388645792460E+01 + -0.9814608072250240E-03 * dt).sin()
+ 0.2008621003222866E-04 * (0.5659993479601007E+01 + -0.8035014398045319E-03 * dt).sin()
+ 0.3778282825702326E-03 * (0.6246374507924086E+00 + -0.1983600111777784E+00 * dt).sin()
+ -0.3775434250722031E-03 * (0.6140744674601058E+01 + 0.1965750489307488E+00 * dt).sin()
+ -0.3597821116452316E-03 * (0.2615612979325803E+01 + 0.3940425789850124E+00 * dt).sin()
+ -0.2927952161795262E-03 * (0.1236586173373641E+01 + 0.2953088139578806E+00 * dt).sin()
+ 0.2216814079711899E-03 * (0.5528795952019826E+01 + -0.2970937762049101E+00 * dt).sin()
+ 0.1403880753848180E-03 * (0.4149769146067664E+01 + -0.3958275412320419E+00 * dt).sin()
+ 0.1282680047161120E-03 * (0.2428314703334209E+01 + -0.1885494712226787E+00 * dt).sin()
+ -0.9843461962138636E-04 * (0.5104145505430188E+01 + -0.2081705511328780E+00 * dt).sin()
+ 0.9302812855413870E-04 * (0.2770742340115502E+01 + -0.4945613062591737E+00 * dt).sin()
+ 0.8608901766955960E-04 * (0.1049287897382047E+01 + -0.2872832362498105E+00 * dt).sin()
+ -0.6976234551437248E-04 * (0.3725118699478026E+01 + -0.3069043161600098E+00 * dt).sin()
+ 0.6394074317345045E-04 * (0.5953446398609464E+01 + -0.3860170012769422E+00 * dt).sin()
+ 0.6387046194265387E-04 * (0.1391715534163339E+01 + -0.5932950712863055E+00 * dt).sin()
+ -0.5338815029861825E-04 * (0.2346091893525864E+01 + -0.4056380811871416E+00 * dt).sin()
+ 0.4908475624063901E-04 * (0.4574419592657302E+01 + -0.4847507663040740E+00 * dt).sin()
+ 0.4811302148563021E-04 * (0.3994639785277966E+01 + 0.4927763440121442E+00 * dt).sin()
+ 0.4486679433374308E-04 * (0.1268872821117562E-01 + -0.6920288363134373E+00 * dt).sin()
+ -0.4178177074434045E-04 * (0.9670650875737010E+00 + -0.5043718462142733E+00 * dt).sin()
+ -0.3880672848400252E-04 * (0.8119357267840028E+00 + 0.3842320390299127E+00 * dt).sin()
+ 0.3819239194924841E-04 * (0.3195392786705140E+01 + -0.5834845313312059E+00 * dt).sin()
+ -0.3553990230264197E-04 * (0.5716094228011420E+01 + 0.2854982740027810E+00 * dt).sin()
+ 0.3415645857185234E-04 * (0.5373666591230129E+01 + 0.5915101090392759E+00 * dt).sin()
+ 0.3339668674029588E-04 * (0.4419290231867604E+01 + 0.4038531189401121E+00 * dt).sin()
+ -0.3301162776329309E-04 * (0.5871223588801118E+01 + -0.6031056112414052E+00 * dt).sin()
+ 0.3180628253542403E-04 * (0.4916847229438594E+01 + -0.7907626013405691E+00 * dt).sin()
+ 0.3003432659990370E-04 * (0.1816365980752976E+01 + -0.6822182963583376E+00 * dt).sin()
+ 0.2729633446248457E-04 * (0.1024890671898113E+00 + -0.1974428838228719E+00 * dt).sin()
+ -0.2629885713884026E-04 * (0.4492196782848956E+01 + -0.7018393762685369E+00 * dt).sin()
+ 0.2473774782254921E-04 * (0.3040263425915440E+01 + 0.3051193539129803E+00 * dt).sin()
+ -0.2417336169407593E-04 * (0.4337067422059258E+01 + 0.1867645089756491E+00 * dt).sin()
+ 0.2384156418867662E-04 * (0.4373391748008135E+00 + -0.7809520613854695E+00 * dt).sin()
+ 0.2259673699575893E-04 * (0.3537820423486432E+01 + -0.8894963663677009E+00 * dt).sin()
+ -0.2109852115260203E-04 * (0.3113169976896794E+01 + -0.8005731412956687E+00 * dt).sin()
+ 0.1927636081642950E-03 * (0.5031430617631190E+01 + 0.2060411181513110E-02 * dt).sin()
+ 0.8231557260635240E-04 * (0.5554365541455580E+01 + 0.1143316058513110E-02 * dt).sin()
+ 0.5173543661985320E-04 * (0.5354647806368810E+01 + 0.2755133995131110E-03 * dt).sin()
+ 0.3269372364602020E-04 * (0.4281293457231190E+01 + 0.2644392326769670E-02 * dt).sin()
+ 0.4042027917523730E-04 * (0.4348631061277680E+01 + 0.2953088117000000E+00 * dt).sin();
let eq = 0.4955243850983661E-02 * 0.3221557438053959E+01_f64.cos()
+ 0.5948511882002843E-02 * (0.3864510578695415E+01 + -0.1136160504284885E-03 * dt).cos()
+ 0.1535891024624297E-02 * (0.6141812995599688E+01 + -0.2463636671824243E-04 * dt).cos()
+ -0.1497345442720214E-03 * (0.2900871546698053E+01 + -0.1671346196601068E-02 * dt).cos()
+ -0.4911846033201391E-04 * (0.2378723163095456E+01 + -0.7542188416946162E-03 * dt).cos()
+ 0.2189031408512060E-04 * (0.4386658962298012E+01 + -0.1030743405334940E-02 * dt).cos()
+ -0.2465654101797190E-04 * (0.3971733977579580E+01 + -0.5839811452565560E-03 * dt).cos()
+ 0.2465654101797190E-04 * (0.2471459656779580E+01 + 0.5839811452565560E-03 * dt).cos()
+ -0.1609132692775700E-03 * (0.5193039212000000E+01 + 0.1167962290513110E-02 * dt).cos()
+ -0.2213337603547740E-04 * (0.4442902051600000E+01 + 0.1751943435769670E-02 * dt).cos();
let ep = 0.4955243850983661E-02 * 0.3221557438053959E+01_f64.sin()
+ 0.5948511882002843E-02 * (0.3864510578695415E+01 + -0.1136160504284885E-03 * dt).sin()
+ 0.1535891024624297E-02 * (0.6141812995599688E+01 + -0.2463636671824243E-04 * dt).sin()
+ -0.1497345442720214E-03 * (0.2900871546698053E+01 + -0.1671346196601068E-02 * dt).sin()
+ -0.4911846033201391E-04 * (0.2378723163095456E+01 + -0.7542188416946162E-03 * dt).sin()
+ 0.2189031408512060E-04 * (0.4386658962298012E+01 + -0.1030743405334940E-02 * dt).sin()
+ -0.2465654101797190E-04 * (0.3971733977579580E+01 + -0.5839811452565560E-03 * dt).sin()
+ 0.2465654101797190E-04 * (0.2471459656779580E+01 + 0.5839811452565560E-03 * dt).sin()
+ -0.1609132692775700E-03 * (0.5193039212000000E+01 + 0.1167962290513110E-02 * dt).sin()
+ -0.2213337603547740E-04 * (0.4442902051600000E+01 + 0.1751943435769670E-02 * dt).sin();
let am0 = 0.2953088138695055e+00 * (1.0 + epn);
let rmu = (GK).powi(2) * (1.0 + 0.03e-6) / MSA;
let ea = (rmu / (am0 * am0)).powf(1.0 / 3.0);
equ_orbit::OrbElem {
mu: (1.0 + 0.03e-6) / MSA,
mjd0: mjd_tt,
a: ea,
l: angle::norm_dblpi(el),
k: ek,
h: eh,
q: eq,
p: ep,
}
}
fn iapetus(mjd_tt: f64) -> equ_orbit::OrbElem {
let dt = (mjd_tt - T0) / DJYEAR;
let dlam3 = dlam3(dt);
let dlam4 = dlam4(dt);
let dlam5 = dlam5(dt);
let dlam6 = dlam6(dt);
let dlam8 = dlam8(dt);
let epn = -0.4931880677088688e-03
+ 0.1422582505896866e-02
* (0.1629074651441286e+01 + 0.1149955249555075e+03 * dt + dlam6 - dlam8).cos()
+ 0.1282760621734726e-04
* (0.2948174134620363e+01 + 0.1149974504991001e+03 * dt + dlam6 - dlam8).cos()
+ 0.1173808537373678e-04
* (0.3099779317070623e+00 + 0.1149935994119150e+03 * dt + dlam6 - dlam8).cos()
+ 0.1039093910223160e-03
* (0.3603730645243327e+01 + 0.5743044643283454e+02 * dt + 2.0 * dlam8).cos()
+ 0.1318221383295526e-04
* (0.3603627895388855e+01 + 0.5743044643283454e+02 * dt + 2.0 * dlam8).cos()
+ 0.4815890873838023e-04
* (0.4857380043863779e+01 + 0.8606897731627176e+02 * dt + dlam6 - 2.0 * dlam8).cos()
+ 0.3791140650423246e-04
* (0.3877892946988424e+01 + 0.2589106383767805e+03 * dt + 2.0 * dlam6 - dlam8).cos()
+ 0.3479701758905445e-04
* (0.2913621055460106e+01 + 0.4790807978427668e+03 * dt + dlam5 - dlam8).cos()
+ 0.2109797808204992e-04
* (0.6169137529926802e+01 + 0.2892654763923579e+02 * dt + dlam8).cos()
+ 0.1178034971556374e-04
* (0.3767316688774966e+01 + 0.2891958846576544e+02 * dt + dlam8).cos()
+ 0.2035144206960700e-04
* (0.2388622882333127e+01 + 0.5721714731919014e+02 * dt + 2.0 * dlam8).cos()
+ 0.1870537893668915e-04
* (0.4970065340019012e+01 + 0.8095823480294860e+03 * dt + dlam4 - dlam8).cos()
+ 0.1638556362699022e-04
* (0.3120590560712127e+01 + 0.1728544951592234e+03 * dt + dlam6 + dlam8).cos()
+ 0.1529823976752019e-04
* (0.4943058008729855e+01 + 0.1728525696156309e+03 * dt + dlam6 + dlam8).cos()
+ 0.1557003369506093e-04
* (0.3258149248363778e+01 + 0.2299910499110151e+03 * dt + 2.0 * dlam6 - 2.0 * dlam8)
.cos()
+ 0.1228186282641710e-04
* (0.1724889079832807e+00 + 0.5785704466012334e+02 * dt + 2.0 * dlam8).cos()
+ 0.1176258023998037e-04
* (0.3314184332779403e+01 + 0.5785704466012334e+02 * dt + 2.0 * dlam8).cos()
+ 0.1129835111020686e-04
* (0.1931391320176082e+01 + 0.1186735406726115e+04 * dt + dlam3 - dlam8).cos()
+ 0.8894451926405188e-05
* (0.3717778422487947e+01 + 0.2850389879359876e+02 * dt + dlam8).cos();
let el = 0.1661250302251527e+00
+ 0.2892852233006167e+02 * dt
+ dlam8
+ 0.7282549735894645e-03
* (0.4770667297372782e+01 + 0.1149955249555075e+03 * dt + dlam6 - dlam8).sin()
+ 0.1226877582046494e-03
* (0.3603730645243328e+01 + 0.5743044643283454e+02 * dt + 2.0 * dlam8).sin()
+ 0.1442654202758791e-04
* (0.3603627947367320e+01 + 0.5743044643283454e+02 * dt + 2.0 * dlam8).sin()
+ 0.7287158009695637e-05
* (0.1781167080644662e+01 + 0.5743237197642707e+02 * dt + 2.0 * dlam8).sin()
+ 0.1169604863611512e-03
* (0.2901894204038109e+01 + 0.7165405266799226e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.1078338305442189e-03
* (0.4729254738533461e+01 + 0.7146149830873946e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.8881380857833267e-04
* (0.3150761163748690e+01 + 0.7204899083316938e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.8075655730402778e-04
* (0.4519505673931613e+00 + 0.7095813532095739e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.7285893683141579e-04
* (0.2281556670811775e+01 + 0.7076558096170459e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.7271303455844460e-04
* (0.1353835388413780e+01 + 0.7224154519242219e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.3531961223297060e-04
* (0.4936014332687674e+01 + 0.7185643647391657e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.3019281277001780e-04
* (0.1123239346047937e+01 + 0.7184660702724507e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.2328751291389269e-04
* (0.5814424528754509e+01 + 0.7243409955167499e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.2186693735333124e-04
* (0.1995274806149824e+01 + 0.7037064279652747e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.1672869957989543e-04
* (0.4866436698742614e+01 + 0.7115068968021020e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.1475074400837350e-04
* (0.5719796115875051e+01 + 0.6967472544949258e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.1399238708843930e-04
* (0.4239759216446882e+01 + 0.7026221797392250e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.1179423115340822e-04
* (0.6061718986149902e+01 + 0.7006966361466970e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.8812132213666628e-05
* (0.1185788445220376e+01 + 0.7185152175058083e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.8507522187621048e-05
* (0.3014198965814164e+01 + 0.7165896739132802e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.6197295348292014e-05
* (0.3290476399266866e+01 + 0.7294211479269787e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.5971965491672709e-05
* (0.8753490785501354e+00 + 0.7057302660245178e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.2637183491724404e-04
* (0.4683474110615003e+01 + 0.1439220725947433e+03 * dt + dlam6).sin()
+ 0.2403370419637644e-04
* (0.2388622882333125e+01 + 0.5721714731919014e+02 * dt + 2.0 * dlam8).sin()
+ 0.2222879678616121e-04
* (0.7364334077752746e+00 + 0.2589106383767805e+03 * dt + 2.0 * dlam6 - dlam8).sin()
+ 0.2181721459549961e-04
* (0.6055213709049899e+01 + 0.4790807978427668e+03 * dt + dlam5 - dlam8).sin()
+ 0.2037342614731350e-04
* (0.3686574112838511e+01 + 0.2850389879359876e+02 * dt + dlam8).sin()
+ 0.1769563612146425e-04
* (0.3258149248363778e+01 + 0.2299910499110151e+03 * dt + 2.0 * dlam6 - 2.0 * dlam8)
.sin()
+ 0.1381584330925251e-04
* (0.3314184332779403e+01 + 0.5785704466012334e+02 * dt + 2.0 * dlam8).sin()
+ 0.1340170537299423e-04
* (0.1724889636822213e+00 + 0.5785704466012334e+02 * dt + 2.0 * dlam8).sin()
+ 0.6761318001505776e-05
* (0.4633213511110228e+01 + 0.5785897020371587e+02 * dt + 2.0 * dlam8).sin()
+ 0.1184715424009358e-04
* (0.1828472686429220e+01 + 0.8095823480294860e+03 * dt + dlam4 - dlam8).sin()
+ 0.1029453478899256e-04
* (0.3120590331336322e+01 + 0.1728544951592234e+03 * dt + dlam6 + dlam8).sin()
+ 0.9488209354297983e-05
* (0.4943057563632108e+01 + 0.1728525696156309e+03 * dt + dlam6 + dlam8).sin()
+ 0.7269853312811282e-05
* (0.5072983973765877e+01 + 0.1186735406726115e+04 * dt + dlam3 - dlam8).sin()
+ 0.6013024933189873e-05
* (0.1743122401426509e+01 + 0.8606897731627176e+02 * dt + dlam6 - 2.0 * dlam8).sin();
let ek = 0.1016094463287790e-02 * 0.5106842617766041e+01_f64.cos()
+ 0.2935648107313708e-01 * (0.3358649794029711e+01 + 0.1974690825885564e-02 * dt).cos()
+ 0.9953584143544754e-03 * (0.5831603333509536e+01 + 0.8933864296234374e-02 * dt).cos()
+ 0.7357194732163894e-03 * (0.6035829207568037e+01 + -0.1974690825885564e-02 * dt).cos()
+ 0.6699050371985383e-03 * (0.4753014210656826e+01 + -0.3900234418413626e-02 * dt).cos()
+ 0.4151869133102979e-03 * (0.4743964405299185e+01 + 0.3900234418413626e-02 * dt).cos()
+ 0.3789273029962630e-03 * (0.2745292826757329e+01 + 0.4246235493298404e+00 * dt).cos()
+ 0.1991669418726220e-03 * (0.4485476749277378e+01 + 0.7008320703706311e-02 * dt).cos()
+ 0.1899854046059933e-03 * (0.3517567007545812e+01 + -0.5825778010941689e-02 * dt).cos()
+ 0.1234894258008271e-03 * (0.8652949986394700e+00 + 0.1085940788876244e-01 * dt).cos()
+ 0.1011804925675502e-03 * (0.3745348713034283e+01 + -0.8933864296234374e-02 * dt).cos()
+ 0.6928098928797385e-04 * (0.5576141930376416e+01 + -0.1085940788876244e-01 * dt).cos()
+ 0.4889687732101663e-04 * (0.4014982830991590e+01 + 0.6379226694077035e+00 * dt).cos()
+ 0.2082728796332944e-04 * (0.1173870037237461e+01 + -0.1278495148129050e-01 * dt).cos()
+ 0.2039385297517835e-04 * (0.4585155128610154e+01 + 0.2113244292519774e+00 * dt).cos()
+ 0.1799640976047236e-04 * (0.2341543068636097e+00 + 0.4176643758594916e+00 * dt).cos()
+ 0.1595251648310000e-04 * (0.6234432051555658e+01 + 0.2132991200778630e+00 * dt).cos()
+ 0.1343153395169566e-04 * (0.4649306306086897e+01 + 0.2152738109037486e+00 * dt).cos()
+ 0.1287853944279400e-04 * (0.5287782933428181e+01 + -0.2113244292519774e+00 * dt).cos()
+ 0.1130469268372695e-04 * (0.4574612374891347e+01 + 0.4226488585039549e+00 * dt).cos()
+ 0.1065311292483293e-04 * (0.3513635458424760e-02 + 0.4285237837482541e+00 * dt).cos()
+ 0.6594412507279831e-05 * (0.1160392236116490e+01 + 0.4304984745741396e+00 * dt).cos()
+ 0.5937514602713236e-03
* (0.4936792335851361e+01 + 0.1439240472855692e+03 * dt + dlam6).cos()
+ 0.2738557431501198e-03
* (0.1678643034250733e+01 + -0.8606700262544587e+02 * dt - dlam6 + 2.0 * dlam8).cos()
+ 0.2532842572772215e-03
* (0.1661250302251527e+00 + 0.2892852233006167e+02 * dt + dlam8).cos()
+ 0.1049147278699332e-03
* (0.5987172345751204e+01 + -0.2850192410277287e+02 * dt - dlam8).cos()
+ 0.1328065342396536e-04
* (0.5987275095618058e+01 + -0.2850192410277287e+02 * dt - dlam8).cos()
+ 0.6684462694404047e-05
* (0.1526550339106239e+01 + -0.2850384964636540e+02 * dt - dlam8).cos()
+ 0.2058105309919415e-04
* (0.9190948014818194e+00 + -0.2828862498912847e+02 * dt - dlam8).cos()
+ 0.1721342888159264e-04
* (0.9024276128068640e+00 + 0.2878391607068422e+03 * dt + 2.0 * dlam6).cos()
+ 0.1645103872537621e-04
* (0.6221338739275052e+01 + 0.5080093201728285e+03 * dt + dlam5).cos()
+ 0.1295232370537576e-04
* (0.4706187935978230e+01 + -0.5714045498621007e+02 * dt - dlam6 + 3.0 * dlam8).cos()
+ 0.1246701893241003e-04
* (0.3056131321602242e+01 + 0.7185152175058083e+00 * dt - dlam6 + 5.0 * dlam8).cos()
+ 0.1141609439284819e-04
* (0.4878643124436238e+01 + 0.7165896739132802e+00 * dt - dlam6 + 5.0 * dlam8).cos()
+ 0.1228187806589623e-04
* (0.3135228775838881e+01 + -0.2892852233006167e+02 * dt - dlam8).cos()
+ 0.1176259764714520e-04
* (0.6276718658215128e+01 + -0.2892852233006167e+02 * dt - dlam8).cos()
+ 0.6172687497060316e-05
* (0.4957689196191843e+01 + -0.2893044787365420e+02 * dt - dlam8).cos()
+ 0.1154499923706900e-04
* (0.6282630218786875e+00 + 0.8635896876289621e+02 * dt + 3.0 * dlam8).cos()
+ 0.1050421274404971e-04
* (0.1871271231028191e+00 + -0.1439259728291617e+03 * dt - dlam6).cos()
+ 0.9807167381341471e-05
* (0.4647844982264678e+01 + -0.1439240472855692e+03 * dt - dlam6).cos()
+ 0.1048627591564010e-04
* (0.4956843545116611e-01 + -0.2010625275809534e+03 * dt - 2.0 * dlam6 + 3.0 * dlam8)
.cos()
+ 0.1034350804286399e-04
* (0.1792690836877676e+01 + -0.1149935502646816e+03 * dt - dlam6 + dlam8).cos()
+ 0.9029410063641440e-05
* (0.1994597716654372e+01 + 0.8385108703595477e+03 * dt + dlam4).cos()
+ 0.8024442052834091e-05
* (0.3193669906570326e+01 + 0.5785506996929746e+02 * dt + 2.0 * dlam8).cos()
+ 0.7066767025578607e-05
* (0.5707015564669242e+01 + -0.2299821160467188e+03 * dt - 2.0 * dlam6 + 2.0 * dlam8)
.cos()
+ 0.6251473936893123e-05
* (0.3940966283548398e+00 + -0.4501522755127052e+03 * dt - dlam5 + 2.0 * dlam8).cos()
+ 0.5659369633167750e-05
* (0.5239109003991030e+01 + 0.1215663929056177e+04 * dt + dlam3).cos();
let eh = 0.1016094463287790e-02 * 0.5106842617766041e+01_f64.sin()
+ 0.2935648107313708e-01 * (0.3358649794029711e+01 + 0.1974690825885564e-02 * dt).sin()
+ 0.9953584143544754e-03 * (0.5831603333509536e+01 + 0.8933864296234374e-02 * dt).sin()
+ 0.7357194732163894e-03 * (0.6035829207568037e+01 + -0.1974690825885564e-02 * dt).sin()
+ 0.6699050371985383e-03 * (0.4753014210656826e+01 + -0.3900234418413626e-02 * dt).sin()
+ 0.4151869133102979e-03 * (0.4743964405299185e+01 + 0.3900234418413626e-02 * dt).sin()
+ 0.3789273029962630e-03 * (0.2745292826757329e+01 + 0.4246235493298404e+00 * dt).sin()
+ 0.1991669418726220e-03 * (0.4485476749277378e+01 + 0.7008320703706311e-02 * dt).sin()
+ 0.1899854046059933e-03 * (0.3517567007545812e+01 + -0.5825778010941689e-02 * dt).sin()
+ 0.1234894258008271e-03 * (0.8652949986394700e+00 + 0.1085940788876244e-01 * dt).sin()
+ 0.1011804925675502e-03 * (0.3745348713034283e+01 + -0.8933864296234374e-02 * dt).sin()
+ 0.6928098928797385e-04 * (0.5576141930376416e+01 + -0.1085940788876244e-01 * dt).sin()
+ 0.4889687732101663e-04 * (0.4014982830991590e+01 + 0.6379226694077035e+00 * dt).sin()
+ 0.2082728796332944e-04 * (0.1173870037237461e+01 + -0.1278495148129050e-01 * dt).sin()
+ 0.2039385297517835e-04 * (0.4585155128610154e+01 + 0.2113244292519774e+00 * dt).sin()
+ 0.1799640976047236e-04 * (0.2341543068636097e+00 + 0.4176643758594916e+00 * dt).sin()
+ 0.1595251648310000e-04 * (0.6234432051555658e+01 + 0.2132991200778630e+00 * dt).sin()
+ 0.1343153395169566e-04 * (0.4649306306086897e+01 + 0.2152738109037486e+00 * dt).sin()
+ 0.1287853944279400e-04 * (0.5287782933428181e+01 + -0.2113244292519774e+00 * dt).sin()
+ 0.1130469268372695e-04 * (0.4574612374891347e+01 + 0.4226488585039549e+00 * dt).sin()
+ 0.1065311292483293e-04 * (0.3513635458424760e-02 + 0.4285237837482541e+00 * dt).sin()
+ 0.6594412507279831e-05 * (0.1160392236116490e+01 + 0.4304984745741396e+00 * dt).sin()
+ 0.5937514602713236e-03
* (0.4936792335851361e+01 + 0.1439240472855692e+03 * dt + dlam6).sin()
+ 0.2738557431501198e-03
* (0.1678643034250733e+01 + -0.8606700262544587e+02 * dt - dlam6 + 2.0 * dlam8).sin()
+ 0.2532842572772215e-03
* (0.1661250302251527e+00 + 0.2892852233006167e+02 * dt + dlam8).sin()
+ 0.1049147278699332e-03
* (0.5987172345751204e+01 + -0.2850192410277287e+02 * dt - dlam8).sin()
+ 0.1328065342396536e-04
* (0.5987275095618058e+01 + -0.2850192410277287e+02 * dt - dlam8).sin()
+ 0.6684462694404047e-05
* (0.1526550339106239e+01 + -0.2850384964636540e+02 * dt - dlam8).sin()
+ 0.2058105309919415e-04
* (0.9190948014818194e+00 + -0.2828862498912847e+02 * dt - dlam8).sin()
+ 0.1721342888159264e-04
* (0.9024276128068640e+00 + 0.2878391607068422e+03 * dt + 2.0 * dlam6).sin()
+ 0.1645103872537621e-04
* (0.6221338739275052e+01 + 0.5080093201728285e+03 * dt + dlam5).sin()
+ 0.1295232370537576e-04
* (0.4706187935978230e+01 + -0.5714045498621007e+02 * dt - dlam6 + 3.0 * dlam8).sin()
+ 0.1246701893241003e-04
* (0.3056131321602242e+01 + 0.7185152175058083e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.1141609439284819e-04
* (0.4878643124436238e+01 + 0.7165896739132802e+00 * dt - dlam6 + 5.0 * dlam8).sin()
+ 0.1228187806589623e-04
* (0.3135228775838881e+01 + -0.2892852233006167e+02 * dt - dlam8).sin()
+ 0.1176259764714520e-04
* (0.6276718658215128e+01 + -0.2892852233006167e+02 * dt - dlam8).sin()
+ 0.6172687497060316e-05
* (0.4957689196191843e+01 + -0.2893044787365420e+02 * dt - dlam8).sin()
+ 0.1154499923706900e-04
* (0.6282630218786875e+00 + 0.8635896876289621e+02 * dt + 3.0 * dlam8).sin()
+ 0.1050421274404971e-04
* (0.1871271231028191e+00 + -0.1439259728291617e+03 * dt - dlam6).sin()
+ 0.9807167381341471e-05
* (0.4647844982264678e+01 + -0.1439240472855692e+03 * dt - dlam6).sin()
+ 0.1048627591564010e-04
* (0.4956843545116611e-01 + -0.2010625275809534e+03 * dt - 2.0 * dlam6 + 3.0 * dlam8)
.sin()
+ 0.1034350804286399e-04
* (0.1792690836877676e+01 + -0.1149935502646816e+03 * dt - dlam6 + dlam8).sin()
+ 0.9029410063641440e-05
* (0.1994597716654372e+01 + 0.8385108703595477e+03 * dt + dlam4).sin()
+ 0.8024442052834091e-05
* (0.3193669906570326e+01 + 0.5785506996929746e+02 * dt + 2.0 * dlam8).sin()
+ 0.7066767025578607e-05
* (0.5707015564669242e+01 + -0.2299821160467188e+03 * dt - 2.0 * dlam6 + 2.0 * dlam8)
.sin()
+ 0.6251473936893123e-05
* (0.3940966283548398e+00 + -0.4501522755127052e+03 * dt - dlam5 + 2.0 * dlam8).sin()
+ 0.5659369633167750e-05
* (0.5239109003991030e+01 + 0.1215663929056177e+04 * dt + dlam3).sin();
let eq = 0.1320165332695350e+00 * (0.3221523573692266e+01 + 0.0000000000000000e+00 * dt).cos()
+ 0.6794549145709775e-01 * (0.5047886356662284e+01 + -0.1925543592528062e-02 * dt).cos()
+ 0.6892434301339112e-03 * (0.1398038368144667e+01 + 0.1925543592528062e-02 * dt).cos()
+ 0.2730634121085477e-03 * (0.3074026406224565e+01 + -0.8931239595284827e-02 * dt).cos()
+ 0.2641112196820165e-03 * (0.6085250961969193e+01 + 0.4265982401557260e+00 * dt).cos()
+ 0.1816919041955310e-03 * (0.1123018507358733e+01 + 0.4285237837482541e+00 * dt).cos()
+ 0.4570393856724005e-04 * (0.3663028182224427e+01 + -0.3851087185056125e-02 * dt).cos()
+ 0.4494417792607357e-04 * (0.5092981879591376e+01 + -0.2132991200778630e+00 * dt).cos()
+ 0.3374620641006819e-04 * (0.1072212121537805e+01 + 0.6398973602335890e+00 * dt).cos()
+ 0.3010291742672222e-04 * (0.4323389769715201e+01 + 0.2132991200778630e+00 * dt).cos()
+ 0.2873148969672351e-04 * (0.1130417841604620e+01 + 0.3900234418413626e-02 * dt).cos()
+ 0.2832841674512957e-04 * (0.3775418852980096e+01 + -0.2152246636703911e+00 * dt).cos()
+ 0.2829811667283325e-04 * (0.3179813769687029e+01 + 0.2113735764853349e+00 * dt).cos()
+ 0.2348785638862567e-04 * (0.2392069283444719e+01 + 0.6418229038261171e+00 * dt).cos()
+ 0.1915644482319336e-04 * (0.1666983826523547e+01 + 0.5874925244299190e-02 * dt).cos()
+ 0.1388791091408471e-04 * (0.6199545784892948e+01 + -0.6831187836279569e-02 * dt).cos()
+ 0.1363049113672050e-04 * (0.1573081241951383e+01 + -0.1085678318781289e-01 * dt).cos()
+ 0.1115402869499410e-04 * (0.2124370914205684e+01 + 0.1786772859246875e-01 * dt).cos()
+ 0.9901282214730337e-05 * (0.3022565890567675e+01 + 0.2152246636703911e+00 * dt).cos()
+ 0.9851993483313069e-05 * (0.3568018055505390e+01 + 0.8931239595284827e-02 * dt).cos()
+ 0.6564159971602750e-05 * (0.5899199575040269e+01 + 0.1090855512211994e-01 * dt).cos()
+ 0.5927925628073686e-05 * (0.2236765758751786e+01 + -0.5924072477656691e-02 * dt).cos()
+ 0.2987819907657320e-04
* (0.1592450553501527e+01 + -0.1149955249555075e+03 * dt - dlam6 + dlam8).cos()
+ 0.1598538661690393e-04
* (0.3414911760531445e+01 + -0.1149974504991001e+03 * dt - dlam6 + dlam8).cos()
+ 0.2011086466288782e-04
* (0.5022984906438330e+01 + 0.1728525696156309e+03 * dt + dlam6 + dlam8).cos()
+ 0.1081178008232983e-04
* (0.3200523219219202e+01 + 0.1728544951592234e+03 * dt + dlam6 + dlam8).cos();
let ep = 0.1320165332695350e+00 * (0.3221523573692266e+01 + 0.0000000000000000e+00 * dt).sin()
+ 0.6794549145709775e-01 * (0.5047886356662284e+01 + -0.1925543592528062e-02 * dt).sin()
+ 0.6892434301339112e-03 * (0.1398038368144667e+01 + 0.1925543592528062e-02 * dt).sin()
+ 0.2730634121085477e-03 * (0.3074026406224565e+01 + -0.8931239595284827e-02 * dt).sin()
+ 0.2641112196820165e-03 * (0.6085250961969193e+01 + 0.4265982401557260e+00 * dt).sin()
+ 0.1816919041955310e-03 * (0.1123018507358733e+01 + 0.4285237837482541e+00 * dt).sin()
+ 0.4570393856724005e-04 * (0.3663028182224427e+01 + -0.3851087185056125e-02 * dt).sin()
+ 0.4494417792607357e-04 * (0.5092981879591376e+01 + -0.2132991200778630e+00 * dt).sin()
+ 0.3374620641006819e-04 * (0.1072212121537805e+01 + 0.6398973602335890e+00 * dt).sin()
+ 0.3010291742672222e-04 * (0.4323389769715201e+01 + 0.2132991200778630e+00 * dt).sin()
+ 0.2873148969672351e-04 * (0.1130417841604620e+01 + 0.3900234418413626e-02 * dt).sin()
+ 0.2832841674512957e-04 * (0.3775418852980096e+01 + -0.2152246636703911e+00 * dt).sin()
+ 0.2829811667283325e-04 * (0.3179813769687029e+01 + 0.2113735764853349e+00 * dt).sin()
+ 0.2348785638862567e-04 * (0.2392069283444719e+01 + 0.6418229038261171e+00 * dt).sin()
+ 0.1915644482319336e-04 * (0.1666983826523547e+01 + 0.5874925244299190e-02 * dt).sin()
+ 0.1388791091408471e-04 * (0.6199545784892948e+01 + -0.6831187836279569e-02 * dt).sin()
+ 0.1363049113672050e-04 * (0.1573081241951383e+01 + -0.1085678318781289e-01 * dt).sin()
+ 0.1115402869499410e-04 * (0.2124370914205684e+01 + 0.1786772859246875e-01 * dt).sin()
+ 0.9901282214730337e-05 * (0.3022565890567675e+01 + 0.2152246636703911e+00 * dt).sin()
+ 0.9851993483313069e-05 * (0.3568018055505390e+01 + 0.8931239595284827e-02 * dt).sin()
+ 0.6564159971602750e-05 * (0.5899199575040269e+01 + 0.1090855512211994e-01 * dt).sin()
+ 0.5927925628073686e-05 * (0.2236765758751786e+01 + -0.5924072477656691e-02 * dt).sin()
+ 0.2987819907657320e-04
* (0.1592450553501527e+01 + -0.1149955249555075e+03 * dt - dlam6 + dlam8).sin()
+ 0.1598538661690393e-04
* (0.3414911760531445e+01 + -0.1149974504991001e+03 * dt - dlam6 + dlam8).sin()
+ 0.2011086466288782e-04
* (0.5022984906438330e+01 + 0.1728525696156309e+03 * dt + dlam6 + dlam8).sin()
+ 0.1081178008232983e-04
* (0.3200523219219202e+01 + 0.1728544951592234e+03 * dt + dlam6 + dlam8).sin();
let am0 = DJYEAR * 0.7920197763193e-01 * (1.0 + epn);
let rmu = (GK * DJYEAR).powi(2) * (1.0 + 3.1e-6) / MSA;
let ea = (rmu / (am0 * am0)).powf(1.0 / 3.0);
equ_orbit::OrbElem {
mu: (1.0 + 3.1e-6) / MSA,
mjd0: mjd_tt,
a: ea,
l: angle::norm_dblpi(el),
k: ek,
h: eh,
q: eq,
p: ep,
}
}
fn dlam1(dty: f64) -> f64 {
0.7574073228630605e+00 * (0.6863463000141887e+00 + 0.8904537688864059e-01 * dty).sin()
+ 0.1243299165183161e-01 * (0.2059038900042566e+01 + 0.2671361306659218e+00 * dty).sin()
+ 0.2266397525680950e-02 * (0.2209688858348459e+01 + 0.1019765304355295e+02 * dty).sin()
+ 0.1059900648786554e-02 * (0.4664935211924063e+01 + 0.1010860766666431e+02 * dty).sin()
+ 0.1022783782146454e-02 * (0.2896035158362648e+01 + 0.1028669842044159e+02 * dty).sin()
+ 0.7266042399548720e-03 * (0.1372692600028377e+01 + 0.1780907537772812e+00 * dty).sin()
+ 0.5060827138159436e-03 * (0.4533623190990083e+01 + 0.5765338167707570e-01 * dty).sin()
+ 0.3590283311520520e-03 * (0.3431731500070944e+01 + 0.4452268844432029e+00 * dty).sin()
+ 0.2628008938901560e-03 * (0.5445714149319756e-01 + 0.6492496159975472e-01 * dty).sin()
+ 0.2459408712169538e-03 * (0.3122254716217880e+01 + 0.1204373721002055e+00 * dty).sin()
+ 0.2237171274873740e-03 * (0.8369962583200818e+00 + 0.1001956228977567e+02 * dty).sin()
+ 0.2097481794022580e-03 * (0.3582381458376836e+01 + 0.1037574379733023e+02 * dty).sin()
+ 0.1969761970496516e-03 * (0.4459828112124973e+01 + 0.1131657921775265e+00 * dty).sin()
+ 0.1276023939118606e-03 * (0.5446831688805226e+01 + 0.5021841352532276e+01 * dty).sin()
+ 0.1163953693117700e-03 * (0.3677931635243811e+01 + 0.5199932106309558e+01 * dty).sin()
}
fn dlam2(dty: f64) -> f64 {
0.4496393702552367e-02 * (0.2342959364982154e+01 + 0.5659095156176798e+00 * dty).sin()
+ 0.3354575501528797e-02 * (0.4597833882505114e+01 + 0.1617016547228022e+01 * dty).sin()
}
fn dlam3(dty: f64) -> f64 {
0.3597193003482037e-01 * (0.3827938953603982e+01 + 0.8904537688864059e-01 * dty).sin()
+ 0.5891806577851199e-03 * (0.5200631553632359e+01 + 0.2671361306659218e+00 * dty).sin()
+ 0.1049859753280688e-03 * (0.5351281511938252e+01 + 0.1019765304355295e+02 * dty).sin()
}
fn dlam4(dty: f64) -> f64 {
0.1253214092917414e-03 * (0.5484552018571947e+01 + 0.5659095156176798e+00 * dty).sin()
+ 0.9470863297623297e-04 * (0.1456241228915321e+01 + 0.1617016547228022e+01 * dty).sin()
}
fn dlam5(dty: f64) -> f64 {
0.4982624562626507e-03 * (0.4765136030335644e+01 + 0.1925543592528062e-02 * dty).sin()
+ 0.3255047679977468e-03 * (0.3303959081334276e+01 + 0.8931239595284827e-02 * dty).sin()
+ 0.6390530214147782e-04 * (0.2864957498258305e+01 + 0.4265982401557260e+00 * dty).sin()
+ 0.6147405445926997e-04 * (0.3666743633441163e+01 + 0.1754676234867099e+00 * dty).sin()
+ 0.4693769190005650e-04 * (0.4409577074506501e+01 + 0.2132991200778630e+00 * dty).sin()
}
fn dlam6(dty: f64) -> f64 {
0.1489184840960493e-02 * (0.4482905304402765e+01 + 0.1925543592528062e-02 * dty).sin()
+ 0.6277976937099409e-03 * (0.1641703069309713e+00 + 0.8931239595284827e-02 * dty).sin()
+ 0.2064532509871716e-03 * (0.2875895084979086e+01 + 0.4265982401557260e+00 * dty).sin()
+ 0.1839936992682087e-03 * (0.4432539236156053e+01 + 0.2132991200778630e+00 * dty).sin()
+ 0.3205222547434483e-04 * (0.2421050292728566e+01 + 0.6867993784180930e-02 * dty).sin()
+ 0.2910646188137447e-04 * (0.4133511734209461e+01 + 0.6398973602335890e+00 * dty).sin()
+ 0.2782832942434251e-04 * (0.2085876834041031e+01 + 0.1786772859246875e-01 * dty).sin()
}
fn dlam8(dty: f64) -> f64 {
0.1928386916598716e+00 * (0.1316743285171985e+01 + 0.1925543592528062e-02 * dty).sin()
+ 0.1197700127979115e-02 * (0.2905816296579413e+01 + 0.3851087185056125e-02 * dty).sin()
+ 0.1125807495942191e-02 * (0.4414124516924016e+01 + 0.2132991200778630e+00 * dty).sin()
+ 0.7466410913376219e-03 * (0.3411600296951643e+01 + 0.8931239595284827e-02 * dty).sin()
+ 0.3004295676379663e-03 * (0.4182760326808072e+01 + 0.4285237837482541e+00 * dty).sin()
+ 0.2400461005136443e-03 * (0.2926349976058209e+01 + 0.4265982401557260e+00 * dty).sin()
+ 0.1785444267015284e-03 * (0.3897159948941672e+01 + 0.6919778790613740e-02 * dty).sin()
+ 0.7393695567545098e-04 * (0.5503253064658139e+01 + 0.4304493273407821e+00 * dty).sin()
+ 0.5283085924212965e-04 * (0.6218635238921890e+01 + 0.2113735764853349e+00 * dty).sin()
+ 0.4076652529480639e-04 * (0.3776409831511328e+01 + 0.1083538245527340e-01 * dty).sin()
+ 0.4028991254502335e-04 * (0.1095989272623461e+01 + 0.2064679322415834e+00 * dty).sin()
+ 0.3811816549252109e-04 * (0.5449835843337831e+01 + 0.6418229038261171e+00 * dty).sin()
+ 0.3620254646473473e-04 * (0.6177614480595389e+00 + 0.1282203186788430e-01 * dty).sin()
+ 0.3586013723690129e-04 * (0.2436062381089369e+01 + 0.2152246636703911e+00 * dty).sin()
+ 0.3490441837523331e-04 * (0.4159104921593594e+01 + 0.6398973602335890e+00 * dty).sin()
+ 0.2377227624569038e-04 * (0.3239254695447169e+01 + 0.1031868899480124e+00 * dty).sin()
+ 0.2148685811756090e-04 * (0.3324109814821024e+01 + 0.2002818098055070e-01 * dty).sin()
+ 0.2023635272434820e-04 * (0.5342652755830533e+01 + 0.1786772859246875e-01 * dty).sin()
+ 0.1603086203623188e-04 * (0.2485710326866144e+01 + 0.4226488585039549e+00 * dty).sin()
+ 0.1314054216207817e-04 * (0.5873663787672587e+01 + 0.3163918576803169e+00 * dty).sin()
+ 0.9878270828624305e-05 * (0.4692950541308903e+00 + 0.6437484474186451e+00 * dty).sin()
+ 0.7459887995646048e-05 * (0.4087393199562610e+01 + 0.2201303079141426e+00 * dty).sin()
}