From 70505033d2d0693378c05b40b50c083eb48d838c Mon Sep 17 00:00:00 2001 From: Cees Bassa Date: Wed, 8 Oct 2014 17:37:09 +0200 Subject: [PATCH] Lunar features --- data/moonB.dat | 60 +++++++++++++++++++++++++++++++++++++++++++++++++ data/moonLR.dat | 60 +++++++++++++++++++++++++++++++++++++++++++++++++ satorbit.c | 59 ++++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 172 insertions(+), 7 deletions(-) create mode 100644 data/moonB.dat create mode 100644 data/moonLR.dat diff --git a/data/moonB.dat b/data/moonB.dat new file mode 100644 index 0000000..1c89c11 --- /dev/null +++ b/data/moonB.dat @@ -0,0 +1,60 @@ +0 0 0 1 5128122 +0 0 1 1 280602 +0 0 1 -1 277693 +2 0 0 -1 173237 +2 0 -1 1 55413 +2 0 -1 -1 46271 +2 0 0 1 32573 +0 0 2 1 17198 +2 0 1 -1 9266 +0 0 2 -1 8822 +2 -1 0 -1 8216 +2 0 -2 -1 4324 +2 0 1 1 4200 +2 1 0 -1 -3359 +2 -1 -1 1 2463 +2 -1 0 1 2211 +2 -1 -1 -1 2065 +0 1 -1 -1 -1870 +4 0 -1 -1 1828 +0 1 0 1 -1794 +0 0 0 3 -1749 +0 1 -1 1 -1565 +1 0 0 1 -1491 +0 1 1 1 -1475 +0 1 1 -1 -1410 +0 1 0 -1 -1344 +1 0 0 -1 -1335 +0 0 3 1 1107 +4 0 0 -1 1021 +4 0 -1 1 833 +0 0 1 -3 777 +4 0 -2 1 671 +2 0 0 -3 607 +2 0 2 -1 596 +2 -1 1 -1 491 +2 0 -2 1 -451 +0 0 3 -1 439 +2 0 2 1 422 +2 0 -3 -1 421 +2 1 -1 1 -366 +2 1 0 1 -351 +4 0 0 1 331 +2 -1 1 1 315 +2 -2 0 -1 302 +0 0 1 3 -283 +2 1 1 -1 -229 +1 1 0 -1 223 +1 1 0 1 223 +0 1 -2 -1 -220 +2 1 -1 -1 -220 +1 0 1 1 -185 +2 -1 -2 -1 181 +0 1 2 1 -177 +4 0 -2 -1 176 +4 -1 -1 -1 166 +1 0 1 -1 -164 +4 0 1 -1 132 +1 0 -1 -1 -119 +4 -1 0 -1 115 +2 -2 0 1 107 diff --git a/data/moonLR.dat b/data/moonLR.dat new file mode 100644 index 0000000..b31e98b --- /dev/null +++ b/data/moonLR.dat @@ -0,0 +1,60 @@ +0 0 1 0 6288774 -20905355 +2 0 -1 0 1274027 -3699111 +2 0 0 0 658314 -2955968 +0 0 2 0 213618 -569925 +0 1 0 0 -185116 48888 +0 0 0 2 -114332 -3149 +2 0 -2 0 58793 246158 +2 -1 -1 0 57066 -152138 +2 0 1 0 53322 -170733 +2 -1 0 0 45758 -204586 +0 1 -1 0 -40923 -129620 +1 0 0 0 -34720 108743 +0 1 1 0 -30383 104755 +2 0 0 -2 15327 10321 +0 0 1 2 -12528 0 +0 0 1 -2 10980 79661 +4 0 -1 0 10675 -34782 +0 0 3 0 10034 -23210 +4 0 -2 0 8548 -21636 +2 1 -1 0 -7888 24208 +2 1 0 0 -6766 30824 +1 0 -1 0 -5163 -8379 +1 1 0 0 4987 -16675 +2 -1 1 0 4036 -12831 +2 0 2 0 3994 -10445 +4 0 0 0 3861 -11650 +2 0 -3 0 3665 14403 +0 1 -2 0 -2689 -7003 +2 0 -1 2 -2602 0 +2 -1 -2 0 2390 10056 +1 0 1 0 -2348 6322 +2 -2 0 0 2236 -9884 +0 1 2 0 -2120 5751 +0 2 0 0 -2069 0 +2 -2 -1 0 2048 -4950 +2 0 1 -2 -1773 4130 +2 0 0 2 -1595 0 +4 -1 -1 0 1215 -3958 +0 0 2 2 -1110 0 +3 0 -1 0 -892 3258 +2 1 1 0 -810 2616 +4 -1 -2 0 759 -1897 +0 2 -1 0 -713 -2117 +2 2 -1 0 -700 2354 +2 1 -2 0 691 0 +2 -1 0 -2 596 0 +4 0 1 0 549 -1423 +0 0 4 0 537 -1117 +4 -1 0 0 520 -1571 +1 0 -2 0 -487 -1739 +2 1 0 -2 -399 0 +0 0 2 -2 -381 -4421 +1 1 1 0 351 0 +3 0 -2 0 -340 0 +4 0 -3 0 330 0 +2 -1 2 0 327 0 +0 2 1 0 -323 1165 +1 1 -1 0 299 0 +2 0 3 0 294 0 +2 0 -1 -2 0 8752 diff --git a/satorbit.c b/satorbit.c index a0b7a51..5456c4e 100644 --- a/satorbit.c +++ b/satorbit.c @@ -39,7 +39,7 @@ struct map { char orientation[LIM]; char nfd[LIM],tlefile[LIM],observer[32]; char datadir[LIM],tledir[LIM],notamfile[LIM],xyzfile[LIM]; - int site_id,notamflag,xyzflag; + int site_id,notamflag,xyzflag,moonflag; float w; } m; struct globe { @@ -92,6 +92,7 @@ void initialize_setup(void) m.h0=gmst(m.mjd); m.notamflag=0; m.xyzflag=0; + m.moonflag=0; // Default settings strcpy(m.observer,"Unknown"); @@ -469,7 +470,6 @@ void plot_xyz(void) // Plot if (flag==1) { - printf("%lf %lf\n",m.mjd,mjd); flag=2; plot_footprint(s); if (!(sqrt(x*x+y*y)0.0) - cpgpt1(x0,y0,2); + cpgpt1(x0,y0,6); // Plot moon z=s.z; @@ -677,6 +678,37 @@ void plot_moon(void) cpgcirc(x,y,1737.5); + // Plot antipode travel + for (dmjd=1.0;dmjd<7.0;dmjd+=1.0) { + // Get positions + lunpos_xyz(m.mjd+dmjd,&s,&lra,&lde); + + // GMST + h=gmst(m.mjd); + + // Lunar antipode + l0=modulo(lra-h-180,360.0); + b0=-lde; + if (l0>180.0) + l0-=360.0; + + // Convert + z0=cos(l0*D2R)*cos(b0*D2R)*XKMPER; + x0=sin(l0*D2R)*cos(b0*D2R)*XKMPER; + y0=sin(b0*D2R)*XKMPER; + + rotate(1,m.l0,&x0,&y0,&z0); + rotate(0,m.b0,&x0,&y0,&z0); + + // Plot antipode + if (z0>0.0) { + sprintf(text," %.0f",dmjd); + cpgpt1(x0,y0,2); + cpgtext(x0,y0,text); + } + } + + cpgsci(isci); return; @@ -940,7 +972,8 @@ void plot_map(void) plot_terminator(); // Plot moon - plot_moon(); + if (m.moonflag==1) + plot_moon(); // Plot Grid cpgsls(2); @@ -1079,7 +1112,7 @@ int main(int argc,char *argv[]) initialize_setup(); // Decode options - while ((arg=getopt(argc,argv,"t:c:i:s:l:hN:p:"))!=-1) { + while ((arg=getopt(argc,argv,"t:c:i:s:l:hN:p:mL:B:"))!=-1) { switch (arg) { case 't': @@ -1108,11 +1141,23 @@ int main(int argc,char *argv[]) m.notamflag=1; break; + case 'L': + m.lng=atof(optarg); + break; + + case 'B': + m.lat=atof(optarg); + break; + case 'p': strcpy(m.xyzfile,optarg); m.xyzflag=1; break; + case 'm': + m.moonflag=1; + break; + case 'h': usage(); return 0;