mirror of https://github.com/XEphem/XEphem.git
223 lines
5.0 KiB
C
223 lines
5.0 KiB
C
/* print info about op at np, with local stuff if topo */
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#include "astro.h"
|
|
|
|
static void txt_common (Now *np, Obj *op);
|
|
static void txt_fixed (Now *np, Obj *op);
|
|
static void txt_helio (Now *np, Obj *op);
|
|
static void txt_topo (Now *np, Obj *op);
|
|
static void txt_riset (Now *np, Obj *op);
|
|
|
|
void
|
|
txt_report (Now *np, Obj *op, int topo)
|
|
{
|
|
txt_common (np, op);
|
|
if (op->o_type == FIXED)
|
|
txt_fixed (np, op);
|
|
else
|
|
txt_helio (np, op);
|
|
if (topo)
|
|
txt_topo (np, op);
|
|
printf ("\n");
|
|
}
|
|
|
|
static void
|
|
txt_common (Now *np, Obj *op)
|
|
{
|
|
char buf[32];
|
|
|
|
printf ("%-*s", MAXNM-1, op->o_name);
|
|
switch (op->o_type) {
|
|
case FIXED: printf (" f"); break;
|
|
case ELLIPTICAL: printf (" e"); break;
|
|
case HYPERBOLIC: printf (" h"); break;
|
|
case PARABOLIC: printf (" p"); break;
|
|
case PLANET: printf (" P"); break;
|
|
default:
|
|
fprintf (stderr, "Bogus type for %s: %d\n", op->o_name, op->o_type);
|
|
exit(1);
|
|
}
|
|
|
|
#if WANT_CONSTELLATION
|
|
id = cns_pick (op->s_ra, op->s_dec, epoch == EOD ? mjd : epoch);
|
|
name = cns_name (id);
|
|
printf (" %.3s", name);
|
|
#else
|
|
printf (" %.3s", " ");
|
|
#endif
|
|
|
|
fs_sexa (buf, radhr(op->s_ra), 2, 360000);
|
|
printf (" %s", buf);
|
|
|
|
fs_sexa (buf, raddeg(op->s_dec), 3, 36000);
|
|
printf (" %s", buf);
|
|
|
|
printf (" %6.2f", get_mag (op));
|
|
|
|
printf (" %4.0f", op->s_size);
|
|
}
|
|
|
|
static void
|
|
txt_fixed (Now *np, Obj *op)
|
|
{
|
|
printf (" %c", op->f_class != '\0' ? op->f_class : ' ');
|
|
|
|
if (op->f_spect[0] != '\0')
|
|
printf (" %c%c", op->f_spect[0],
|
|
op->f_spect[1] != '\0' ? op->f_spect[1] : ' ');
|
|
else
|
|
printf (" ");
|
|
|
|
printf ("%25s", ""); /* gap to align HA same as for planets */
|
|
|
|
if (op->f_class == 'G' || op->f_class == 'H')
|
|
printf ("%4.0f %3.0f", (int)op->f_size*get_ratio(op),
|
|
raddeg(get_pa(op)));
|
|
else
|
|
printf (" ");
|
|
}
|
|
|
|
static void
|
|
txt_helio (Now *np, Obj *op)
|
|
{
|
|
char buf[32];
|
|
|
|
fs_sexa (buf, raddeg(op->s_hlong), 3, 3600);
|
|
printf (" %s", buf);
|
|
|
|
fs_sexa (buf, raddeg(op->s_hlat), 3, 3600);
|
|
printf (" %s", buf);
|
|
|
|
printf (" %6.3f", op->s_edist);
|
|
|
|
printf (" %6.3f", op->s_sdist);
|
|
|
|
printf (" %3.0f", op->s_phase);
|
|
}
|
|
|
|
static void
|
|
txt_topo (Now *np, Obj *op)
|
|
{
|
|
double raeod = op->s_ra;
|
|
double deceod = op->s_dec;
|
|
double tmp;
|
|
char buf[32];
|
|
|
|
if (epoch != EOD) {
|
|
/* need apparent */
|
|
Obj o;
|
|
Now n;
|
|
|
|
(void) memcpy ((void *)&o, (void *)op, sizeof(Obj));
|
|
(void) memcpy ((void *)&n, (void *)np, sizeof(Now));
|
|
n.n_epoch = EOD;
|
|
(void) obj_cir (&n, &o);
|
|
raeod = o.s_ra;
|
|
deceod = o.s_dec;
|
|
}
|
|
|
|
now_lst (np, &tmp);
|
|
tmp = tmp - radhr(raeod); /* HA = LST - RA */
|
|
if (tmp > 12)
|
|
tmp -= 24;
|
|
if (tmp < -12)
|
|
tmp += 24;
|
|
|
|
fs_sexa (buf, tmp, 3, 36000);
|
|
printf (" %s", buf);
|
|
|
|
fs_sexa (buf, raddeg(op->s_alt), 3, 3600);
|
|
printf (" %s", buf);
|
|
|
|
fs_sexa (buf, raddeg(op->s_az), 3, 3600);
|
|
printf (" %s", buf);
|
|
|
|
txt_riset (np, op);
|
|
}
|
|
|
|
static void
|
|
txt_riset (Now *np, Obj *op)
|
|
{
|
|
RiseSet rs;
|
|
double dis;
|
|
char buf[32];
|
|
|
|
/* semi-diameter displacement */
|
|
dis = degrad(op->s_size/3600./2.0);
|
|
riset_cir (np, op, dis, &rs);
|
|
|
|
if (rs.rs_flags & RS_ERROR)
|
|
(void) strcpy (buf, "Error");
|
|
else if (rs.rs_flags & RS_CIRCUMPOLAR)
|
|
(void) strcpy (buf, "CirPl");
|
|
else if (rs.rs_flags & RS_NEVERUP)
|
|
(void) strcpy (buf, "NvrUp");
|
|
else if (rs.rs_flags & RS_NORISE)
|
|
(void) strcpy (buf, "NoRis");
|
|
else
|
|
fs_sexa (buf, mjd_hr(rs.rs_risetm), 2, 60);
|
|
printf (" %s", buf);
|
|
|
|
if (rs.rs_flags & RS_ERROR)
|
|
(void) strcpy (buf, " Error");
|
|
else if (rs.rs_flags & RS_CIRCUMPOLAR)
|
|
(void) strcpy (buf, "CirPol");
|
|
else if (rs.rs_flags & RS_NEVERUP)
|
|
(void) strcpy (buf, " NvrUp");
|
|
else if (rs.rs_flags & RS_NORISE)
|
|
(void) strcpy (buf, "NoRise");
|
|
else
|
|
fs_sexa (buf, raddeg(rs.rs_riseaz), 3, 60);
|
|
printf (" %s", buf);
|
|
|
|
if (rs.rs_flags & RS_ERROR)
|
|
(void) strcpy (buf, "Error");
|
|
else if (rs.rs_flags & RS_NEVERUP)
|
|
(void) strcpy (buf, "NvrUp");
|
|
else if (rs.rs_flags & RS_NOTRANS)
|
|
(void) strcpy (buf, "NoTrn");
|
|
else
|
|
fs_sexa (buf, mjd_hr(rs.rs_trantm), 2, 60);
|
|
printf (" %s", buf);
|
|
|
|
if (rs.rs_flags & RS_ERROR)
|
|
(void) strcpy (buf, " Error");
|
|
else if (rs.rs_flags & RS_NEVERUP)
|
|
(void) strcpy (buf, " NvrUp");
|
|
else if (rs.rs_flags & RS_NOTRANS)
|
|
(void) strcpy (buf, "NoTran");
|
|
else
|
|
fs_sexa (buf, raddeg(rs.rs_tranalt), 2, 60);
|
|
printf (" %s", buf);
|
|
|
|
if (rs.rs_flags & RS_ERROR)
|
|
(void) strcpy (buf, "Error");
|
|
else if (rs.rs_flags & RS_CIRCUMPOLAR)
|
|
(void) strcpy (buf, "CirPl");
|
|
else if (rs.rs_flags & RS_NEVERUP)
|
|
(void) strcpy (buf, "NvrUp");
|
|
else if (rs.rs_flags & RS_NOSET)
|
|
(void) strcpy (buf, "NoSet");
|
|
else
|
|
fs_sexa (buf, mjd_hr(rs.rs_settm), 2, 60);
|
|
printf (" %s", buf);
|
|
|
|
if (rs.rs_flags & RS_ERROR)
|
|
(void) strcpy (buf, " Error");
|
|
else if (rs.rs_flags & RS_CIRCUMPOLAR)
|
|
(void) strcpy (buf, "CirPol");
|
|
else if (rs.rs_flags & RS_NEVERUP)
|
|
(void) strcpy (buf, " NvrUp");
|
|
else if (rs.rs_flags & RS_NOSET)
|
|
(void) strcpy (buf, " NoSet");
|
|
else
|
|
fs_sexa (buf, raddeg(rs.rs_setaz), 3, 60);
|
|
printf (" %s", buf);
|
|
}
|
|
|
|
|