URI:
       tinit.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tinit.c (2133B)
       ---
            1 #include "astro.h"
            2 
            3 Obj2*        objlst[] =
            4 {
            5         &osun,
            6         &omoon,
            7         &oshad,
            8         &omerc,
            9         &ovenus,
           10         &omars,
           11         &ojup,
           12         &osat,
           13         &ouran,
           14         &onept,
           15         &oplut,
           16         &ocomet,
           17         0
           18 };
           19 
           20 struct        idata
           21 {
           22         char*        name;
           23         char*        name1;
           24         void        (*obj)(void);
           25 } idata[] =
           26 {
           27         "The sun",        "sun",                fsun,
           28         "The moon",        "moon",                moon,
           29         "The shadow",        "shadow",        shad,
           30         "Mercury",        "mercury",        merc,
           31         "Venus",        "venus",        venus,
           32         "Mars",                "mars",                mars,
           33         "Jupiter",        "jupiter",        jup,
           34         "Saturn",        "saturn",        sat,
           35         "Uranus",        "uranus",        uran,
           36         "Neptune",        "neptune",        nept,
           37         "Pluto",        "pluto",        plut,
           38         "Comet",        "comet",        comet
           39 };
           40 
           41 void
           42 init(void)
           43 {
           44         Obj2 *q;
           45         int i;
           46 
           47         glat = nlat - (692.74*radsec)*sin(2.*nlat)
           48                  + (1.16*radsec)*sin(4.*nlat);
           49         erad = .99832707e0 + .00167644e0*cos(2.*nlat)
           50                  - 0.352e-5*cos(4.*nlat)
           51                  + 0.001e-5*cos(6.*nlat)
           52                  + 0.1568e-6*elev;
           53 
           54         for(i=0; q=objlst[i]; i++) {
           55                 q->name = idata[i].name;
           56                 q->name1 = idata[i].name1;
           57                 q->obj = idata[i].obj;
           58         }
           59         ostar.obj = fstar;
           60         ostar.name = "star";
           61 }
           62 
           63 void
           64 setime(double d)
           65 {
           66         double x, xm, ym, zm;
           67 
           68         eday = d + deltat/86400.;
           69         wlong = awlong + 15.*deltat*radsec;
           70 
           71         capt = eday/36524.220e0;
           72         capt2 = capt*capt;
           73         capt3 = capt*capt2;
           74         nutate();
           75         eday += .1;
           76         sun();
           77         srad = rad;
           78         xm = rad*cos(beta)*cos(lambda);
           79         ym = rad*cos(beta)*sin(lambda);
           80         zm = rad*sin(beta);
           81         eday -= .1;
           82         sun();
           83         xms = rad*cos(beta)*cos(lambda);
           84         yms = rad*cos(beta)*sin(lambda);
           85         zms = rad*sin(beta);
           86         x = .057756;
           87         xdot = x*(xm-xms);
           88         ydot = x*(ym-yms);
           89         zdot = x*(zm-zms);
           90 }
           91 
           92 void
           93 setobj(Obj1 *op)
           94 {
           95         Obj1 *p;
           96 
           97         p = op;
           98         p->ra = ra;
           99         p->decl2 = decl2;
          100         p->semi2 = semi2;
          101         p->az = az;
          102         p->el = el;
          103         p->mag = mag;
          104 }
          105 
          106 long        starsao = 0;
          107 
          108 void
          109 fstar(void)
          110 {
          111 
          112         ra = ostar.point[0].ra;
          113         decl2 = ostar.point[0].decl2;
          114         semi2 = ostar.point[0].semi2;
          115         az = ostar.point[0].az;
          116         el = ostar.point[0].el;
          117         mag = ostar.point[0].mag;
          118 }
          119 
          120 void
          121 fsun(void)
          122 {
          123 
          124         beta = 0;
          125         rad = 0;
          126         lambda = 0;
          127         motion = 0;
          128         helio();
          129         geo();
          130         seday = eday;
          131         salph = alpha;
          132         sdelt = delta;
          133         mag = lmb2;
          134 }
          135 
          136 void
          137 shad(void)
          138 {
          139 
          140         if(seday != eday)
          141                 fsun();
          142         if(meday != eday)
          143                 moon();
          144         alpha = fmod(salph+pi, pipi);
          145         delta = -sdelt;
          146         hp = mhp;
          147         semi = 1.0183*mhp/radsec - 969.85/srad;
          148         geo();
          149 }