home *** CD-ROM | disk | FTP | other *** search
Text File | 1990-03-27 | 47.7 KB | 1,690 lines |
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 7 (of 32)."
- # Contents: observe/orbcalc.c observe/outsif.c observe/tablecalc.c
- # starchart/descrip.mms
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'observe/orbcalc.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'observe/orbcalc.c'\"
- else
- echo shar: Extracting \"'observe/orbcalc.c'\" \(11271 characters\)
- sed "s/^X//" >'observe/orbcalc.c' <<'END_OF_FILE'
- X/*
- X * orbcalc.c
- X * calculate positions of body in elliptical or parabolic orbit
- X *
- X * Copyright (c) 1990 by Craig Counterman. All rights reserved.
- X *
- X * This software may be redistributed freely, not sold.
- X * This copyright notice and disclaimer of warranty must remain
- X * unchanged.
- X *
- X * No representation is made about the suitability of this
- X * software for any purpose. It is provided "as is" without express or
- X * implied warranty, to the extent permitted by applicable law.
- X *
- X */
- X
- X#ifndef lint
- Xstatic char rcsid[] =
- X "$Header: orbcalc.c,v 1.8 90/02/19 17:20:47 ccount Exp $";
- X#endif
- X
- X
- X#include <stdio.h>
- X#include <math.h>
- X#ifndef SYSV
- X#include <strings.h>
- X#else
- X#include <string.h>
- X#endif
- X#include "observe.h"
- X#include "degree.h"
- X#include "date.h"
- X
- Xextern char *malloc();
- X
- X
- X/* example
- XFormat
- Xskip three lines, then for each asteroid
- XName i Omega omega a n e M Epoch_date Equinox_year type G H
- XEpoch_date must be Month day year
- XEquinox_year, e.g. 2000.0
- X
- Xif type is comet, H and G are g and kappa
- X
- XVesta 7.139 104.015 150.175 2.3613 0.27163 0.0906 43.314 Oct 1 1989 2000.0 Asteroid 3.16 0.34
- X
- X*/
- X
- Xvoid read_elliptical(infile, bodies, nbodies_p, maxbodies)
- X FILE *infile;
- X wanderer_data_t bodies[];
- X int *nbodies_p;
- X int maxbodies;
- X{
- X char in_line[1000], *linep;
- X char name[100], H[100], G[100], i[100], Omega[100], omega[100],
- X a[100], n[100], body_type[100],
- X e[100], M[100], Month[100], day[100], year[100], equinox_year[100];
- X char epoch_date_str[300];
- X double epoch_date;
- X int j, nscanned;
- X char *cp;
- X
- X fgets(in_line, 1000, infile);
- X fgets(in_line, 1000, infile);
- X fgets(in_line, 1000, infile);
- X
- X
- X j = 0;
- X while ((j < maxbodies) && (!feof(infile))) {
- X linep = fgets(in_line, 1000, infile);
- X if (linep != NULL)
- X nscanned = sscanf(linep, "%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s",
- X name, i, Omega, omega, a, n,
- X e, M, Month, day, year, equinox_year, body_type, H, G);
- X else nscanned = 0;
- X if (nscanned < 15) continue;
- X
- X sprintf(epoch_date_str, "%s %s %s", Month, day, year);
- X str_to_jd(epoch_date_str, 0, &epoch_date);
- X
- X
- X cp = name;
- X while (*cp) {
- X if (*cp == '_') *cp = ' ';
- X cp++;
- X };
- X
- X bodies[j].name = (char *) malloc((unsigned) (strlen(name)+1));
- X if (bodies[j].name != NULL) strcpy(bodies[j].name, name);
- X else bodies[j].name = "";
- X
- X bodies[j].orbit_type = elliptical_orbit;
- X bodies[j].elliptical_elements.epoch_jd = epoch_date;
- X bodies[j].elliptical_elements.equinox_year = atof(equinox_year);
- X bodies[j].elliptical_elements.a = atof(a);
- X bodies[j].elliptical_elements.e = atof(e);
- X bodies[j].elliptical_elements.i = atof(i);
- X bodies[j].elliptical_elements.Omega = atof(Omega);
- X bodies[j].elliptical_elements.omega = atof(omega);
- X bodies[j].elliptical_elements.n = atof(n);
- X bodies[j].elliptical_elements.M = atof(M);
- X if ((body_type[0] == 'c') || (body_type[0] == 'C')) {
- X bodies[j].body_type = comet;
- X bodies[j].g = atof(G);
- X bodies[j].kappa = atof(H);
- X } else {
- X bodies[j].body_type = asteroid;
- X bodies[j].H = atof(H);
- X bodies[j].G = atof(G);
- X };
- X
- X j++;
- X };
- X *nbodies_p = j;
- X}
- X
- X
- Xvoid elliptical_pos(T, sun_data, data)
- X double T; /* time, jd */
- X sun_data_t sun_data;
- X wanderer_data_t *data;
- X{
- X double epsilon;
- X double a_; /* semimajor axis, A.U. */
- X double e_; /* eccentricity */
- X double i_; /* inclination (degrees) */
- X double omega_; /* argument of perihelion */
- X double Omega_; /* longitude of ascending node */
- X double n_; /* mean motion (degrees/day) */
- X double M_; /* mean anomaly at epoch */
- X
- X double a, b, c, A, B, C;
- X double F, G, H, P, Q, R;
- X double M, E, nu, r;
- X double x, y, z, X, Y, Z;
- X double Delta;
- X double Psi_1, Psi_2, psi_t; /* For asteroid mag. calculation */
- X double alpha, delta, alpha2000, delta2000;
- X
- X a_ = data->elliptical_elements.a;
- X e_ = data->elliptical_elements.e;
- X i_ = data->elliptical_elements.i;
- X omega_ = data->elliptical_elements.omega;
- X Omega_ = data->elliptical_elements.Omega;
- X n_ = data->elliptical_elements.n;
- X M_ = data->elliptical_elements.M;
- X
- X
- X epsilon = obl_year(data->elliptical_elements.equinox_year);
- X F = DCOS(Omega_);
- X G = DSIN(Omega_)*DCOS(epsilon);
- X H = DSIN(Omega_)*DSIN(epsilon);
- X P = -DSIN(Omega_)*DCOS(i_);
- X Q = DCOS(Omega_)*DCOS(i_)*DCOS(epsilon) - DSIN(i_)*DSIN(epsilon);
- X R = DCOS(Omega_)*DCOS(i_)*DSIN(epsilon) + DSIN(i_)*DCOS(epsilon);
- X
- X A = atan2(F,P)*RAD_TO_DEG;
- X B = atan2(G,Q)*RAD_TO_DEG;
- X C = atan2(H,R)*RAD_TO_DEG;
- X
- X
- X a = sqrt(F*F + P*P);
- X b = sqrt(G*G + Q*Q);
- X c = sqrt(H*H + R*R);
- X
- X /* Calculate M, E, nu, r */
- X M = into_range(M_ + n_ * (T - data->elliptical_elements.epoch_jd));
- X anom_calc(M, e_, &E, &nu);
- X r = a_ * (1 - e_ * DCOS(E));
- X
- X x = r * a * DSIN(A + omega_ + nu);
- X y = r * b * DSIN(B + omega_ + nu);
- X z = r * c * DSIN(C + omega_ + nu);
- X
- X sun_rect(T, data->elliptical_elements.equinox_year,
- X sun_data.R, sun_data.Theta, &X, &Y, &Z);
- X
- X
- X Delta = sqrt((X+x)*(X+x) + (Y+y)*(Y+y) + (Z+z)*(Z+z));
- X R = sqrt(X*X + Y*Y + Z*Z);
- X
- X
- X data->alpha = atan2(Y+y, X+x)*RAD_TO_DEG;
- X if (data->alpha < 0) data->alpha += 360.0;
- X data->delta = asin((Z+z)/Delta)*RAD_TO_DEG;
- X data->r = r;
- X data->Delta = Delta;
- X
- X if (data->elliptical_elements.equinox_year != 2000.0) {
- X alpha = data->alpha;
- X delta = data->delta;
- X precess(data->elliptical_elements.equinox_year, 2000.0,
- X alpha, delta, &alpha2000, &delta2000);
- X data->alpha2000 = alpha2000;
- X data->delta2000 = delta2000;
- X } else {
- X data->alpha2000 = data->alpha;
- X data->delta2000 = data->delta;
- X };
- X/* Can't set l, b, lambda */
- X
- X data->psi = acos((R*R + Delta*Delta - r*r)/ (2*R*Delta))*RAD_TO_DEG;
- X data->beta = acos((r*r + Delta*Delta - R*R)/ (2*r*Delta))*RAD_TO_DEG;
- X
- X if (data->body_type == asteroid) {
- X G = data->G;
- X H = data->H;
- X psi_t = exp(log(DTAN(data->beta/2.0))*0.63);
- X Psi_1 = exp(-3.33*psi_t);
- X psi_t = exp(log(DTAN(data->beta/2.0))*1.22);
- X Psi_2 = exp(-1.87*psi_t);
- X data->mag = 5.0 * log10(r*Delta) + H
- X - 2.5* log10((1-G)*Psi_1 + G*Psi_2);
- X } else if (data->body_type == comet) {
- X data->mag = data->g + 5.0 * log10(Delta)
- X + 2.5 * data->kappa * log10(r);
- X } else {
- X data->mag = 1.0;
- X }
- X}
- X
- X
- X
- X
- X/* example
- XFormat
- Xskip three lines, then for each asteroid
- XName i Omega omega q Epoch_date Equinox_year g kappa
- XEpoch_date must be Month day year
- XEquinox_year, e.g. 2000.0
- X
- XBorsen-metcalf 7.139 104.015 150.175 0.4 Oct 1 1989 2000.0 3.16 0.34
- X
- X*/
- X
- X
- Xvoid read_parabolic(infile, bodies, nbodies_p, maxbodies)
- X FILE *infile;
- X wanderer_data_t bodies[];
- X int *nbodies_p;
- X int maxbodies;
- X{
- X char in_line[1000], *linep;
- X char name[100], g[100], kappa[100], i[100], Omega[100], omega[100],
- X q[100], Month[100], day[100], year[100], equinox_year[100];
- X char perihelion_date_str[300];
- X double perihelion_date;
- X int j, nscanned;
- X
- X fgets(in_line, 1000, infile);
- X fgets(in_line, 1000, infile);
- X fgets(in_line, 1000, infile);
- X
- X
- X j = 0;
- X while ((j < maxbodies) && (!feof(infile))) {
- X linep = fgets(in_line, 1000, infile);
- X if (linep != NULL)
- X nscanned = sscanf(linep, "%s %s %s %s %s %s %s %s %s %s %s",
- X name, i, Omega, omega, q, Month, day, year, equinox_year,
- X g, kappa);
- X else nscanned = 0;
- X if (nscanned < 11) continue;
- X
- X sprintf(perihelion_date_str, "%s %s %s", Month, day, year);
- X str_to_jd(perihelion_date_str, 0, &perihelion_date);
- X
- X bodies[j].name = (char *) malloc((unsigned) (strlen(name)+1));
- X if (bodies[j].name != NULL) strcpy(bodies[j].name, name);
- X else bodies[j].name = "";
- X
- X bodies[j].orbit_type = parabolic_orbit;
- X bodies[j].body_type = comet;
- X bodies[j].parabolic_elements.perihelion_date = perihelion_date;
- X bodies[j].parabolic_elements.equinox_year = atof(equinox_year);
- X bodies[j].parabolic_elements.q = atof(q);
- X bodies[j].parabolic_elements.i = atof(i);
- X bodies[j].parabolic_elements.Omega = atof(Omega);
- X bodies[j].parabolic_elements.omega = atof(omega);
- X bodies[j].g = atof(g);
- X bodies[j].kappa = atof(kappa);
- X
- X j++;
- X };
- X *nbodies_p = j;
- X}
- X
- X
- Xvoid parabolic_pos(T, sun_data, data)
- X double T; /* time, jd */
- X sun_data_t sun_data;
- X wanderer_data_t *data;
- X{
- X double epsilon;
- X double q_; /* perihelion distance, A.U. */
- X double i_; /* inclination (degrees) */
- X double omega_; /* argument of perihelion */
- X double Omega_; /* longitude of ascending node */
- X double T_0; /* Time of passage in perihelion */
- X
- X double W, s, gamma, gamma_1, beta;
- X double nu, r;
- X double A, B, C, a, b, c;
- X double F, G, H, P, Q, R;
- X double x, y, z, X, Y, Z;
- X double Delta;
- X double Psi_1, Psi_2, psi_t; /* For asteroid mag. calculation */
- X double alpha, delta, alpha2000, delta2000;
- X
- X q_ = data->parabolic_elements.q;
- X i_ = data->parabolic_elements.i;
- X omega_ = data->parabolic_elements.omega;
- X Omega_ = data->parabolic_elements.Omega;
- X T_0 = data->parabolic_elements.perihelion_date;
- X
- X W = 0.0364911624 * (T - T_0)/(q_ * sqrt(q_));
- X beta = atan2(2.0,W); /* note, beta in radians */
- X gamma_1 = tan(beta/2.0);
- X if (gamma_1 < 0) {
- X gamma = atan(-exp(log(-gamma_1)/3.0));
- X } else {
- X gamma = atan(exp(log(gamma_1)/3.0));
- X };
- X s = 2.0/tan(2*gamma);
- X
- X nu = 2.0 * DATAN(s);
- X
- X r = q_ * (1 + s*s);
- X
- X epsilon = obl_year(data->parabolic_elements.equinox_year);
- X F = DCOS(Omega_);
- X G = DSIN(Omega_)*DCOS(epsilon);
- X H = DSIN(Omega_)*DSIN(epsilon);
- X
- X P = -DSIN(Omega_)*DCOS(i_);
- X Q = DCOS(Omega_)*DCOS(i_)*DCOS(epsilon) - DSIN(i_)*DSIN(epsilon);
- X R = DCOS(Omega_)*DCOS(i_)*DSIN(epsilon) + DSIN(i_)*DCOS(epsilon);
- X
- X A = atan2(F,P)*RAD_TO_DEG;
- X B = atan2(G,Q)*RAD_TO_DEG;
- X C = atan2(H,R)*RAD_TO_DEG;
- X
- X
- X a = sqrt(F*F + P*P);
- X b = sqrt(G*G + Q*Q);
- X c = sqrt(H*H + R*R);
- X
- X
- X x = r * a * DSIN(A + omega_ + nu);
- X y = r * b * DSIN(B + omega_ + nu);
- X z = r * c * DSIN(C + omega_ + nu);
- X
- X sun_rect(T, data->parabolic_elements.equinox_year,
- X sun_data.R, sun_data.Theta, &X, &Y, &Z);
- X
- X Delta = sqrt((X+x)*(X+x) + (Y+y)*(Y+y) + (Z+z)*(Z+z));
- X R = sqrt(X*X + Y*Y + Z*Z);
- X
- X
- X data->alpha = atan2(Y+y, X+x)*RAD_TO_DEG;
- X if (data->alpha < 0) data->alpha += 360.0;
- X data->delta = asin((Z+z)/Delta)*RAD_TO_DEG;
- X data->r = r;
- X data->Delta = Delta;
- X
- X if (data->parabolic_elements.equinox_year != 2000.0) {
- X alpha = data->alpha;
- X delta = data->delta;
- X precess(data->parabolic_elements.equinox_year, 2000.0,
- X alpha, delta, &alpha2000, &delta2000);
- X data->alpha2000 = alpha2000;
- X data->delta2000 = delta2000;
- X } else {
- X data->alpha2000 = data->alpha;
- X data->delta2000 = data->delta;
- X };
- X/* Can't set l, b, lambda */
- X
- X data->psi = acos((R*R + Delta*Delta - r*r)/ (2*R*Delta))*RAD_TO_DEG;
- X data->beta = acos((r*r + Delta*Delta - R*R)/ (2*r*Delta))*RAD_TO_DEG;
- X
- X if (data->body_type == asteroid) {
- X G = data->G;
- X H = data->H;
- X psi_t = exp(log(DTAN(data->beta/2.0))*0.63);
- X Psi_1 = exp(-3.33*psi_t);
- X psi_t = exp(log(DTAN(data->beta/2.0))*1.22);
- X Psi_2 = exp(-1.87*psi_t);
- X data->mag = 5.0 * log10(r*Delta) + H
- X - 2.5* log10((1-G)*Psi_1 + G*Psi_2);
- X } else if (data->body_type == comet) {
- X data->mag = data->g + 5.0 * log10(Delta)
- X + 2.5 * data->kappa * log10(r);
- X } else {
- X data->mag = 1.0;
- X }
- X
- X}
- X
- END_OF_FILE
- if test 11271 -ne `wc -c <'observe/orbcalc.c'`; then
- echo shar: \"'observe/orbcalc.c'\" unpacked with wrong size!
- fi
- # end of 'observe/orbcalc.c'
- fi
- if test -f 'observe/outsif.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'observe/outsif.c'\"
- else
- echo shar: Extracting \"'observe/outsif.c'\" \(9823 characters\)
- sed "s/^X//" >'observe/outsif.c' <<'END_OF_FILE'
- X/*
- X * outsif.c
- X * Output .sif and .star files for object(s)
- X *
- X * Copyright (c) 1990 by Craig Counterman. All rights reserved.
- X *
- X * This software may be redistributed freely, not sold.
- X * This copyright notice and disclaimer of warranty must remain
- X * unchanged.
- X *
- X * No representation is made about the suitability of this
- X * software for any purpose. It is provided "as is" without express or
- X * implied warranty, to the extent permitted by applicable law.
- X *
- X */
- X
- X#ifndef lint
- Xstatic char rcsid[] =
- X "$Header: outsif.c,v 1.13 90/03/06 00:10:00 ccount Exp $";
- X#endif
- X
- X
- X#include <stdio.h>
- X#ifndef SYSV
- X#include <strings.h>
- X#else
- X#include <string.h>
- X#endif
- X#include "observe.h"
- X#include "date.h"
- X
- X
- Xvoid write_files(), tosizestr();
- X
- X
- X/* Output .sif and .star files for object(s) */
- Xvoid out_sif(o_sif, o_star, do_sif, do_star, one_day,
- X sun_data, moon_data, planets, bodies, nbodies, objects, nobjects)
- X FILE *o_sif, *o_star;
- X int do_sif, do_star; /* output sif file , .star file */
- X int one_day; /* only doing one day */
- X sun_data_t sun_data;
- X moon_data_t moon_data;
- X planet_data_t planets[];
- X wanderer_data_t bodies[];
- X int nbodies;
- X obj_data_t objects[];
- X int nobjects;
- X{
- X int i;
- X char moon_phase[20];
- X char *typefield;
- X
- X if (one_day) {
- X /* print all */
- X write_files(o_sif, o_star, do_sif, do_star,
- X sun_data.alpha2000/15.0, sun_data.delta2000,
- X -26.0,
- X "PS", "G2", sun_data.size,
- X " ", "Sol", "");
- X
- X sprintf(moon_phase, "%6.1f %6.1f", moon_data.phase, moon_data.chi);
- X write_files(o_sif, o_star, do_sif, do_star,
- X moon_data.alpha2000/15.0, moon_data.delta2000,
- X moon_data.mag,
- X "PL", "G2", moon_data.size,
- X " ", "Moon", moon_phase);
- X
- X for (i = 0; i < 7; i++)
- X if (planets[i].name[0])
- X write_files(o_sif, o_star, do_sif, do_star,
- X planets[i].alpha2000/15.0, planets[i].delta2000,
- X planets[i].mag,
- X planets[i].type, planets[i].color, planets[i].size,
- X " ", planets[i].name, "");
- X
- X for (i = 0; i < nbodies; i++) {
- X if (bodies[i].body_type == asteroid)
- X typefield = "PA";
- X else if (bodies[i].body_type == comet)
- X typefield = "PC";
- X else
- X typefield = "P?";
- X
- X write_files(o_sif, o_star, do_sif, do_star,
- X bodies[i].alpha2000/15.0, bodies[i].delta2000,
- X bodies[i].mag,
- X typefield, " ", -1.0,
- X " ", bodies[i].name, "");
- X };
- X
- X for (i = 0; i < nobjects; i++)
- X write_files(o_sif, o_star, do_sif, do_star,
- X objects[i].alpha2000/15.0, objects[i].delta2000,
- X objects[i].mag,
- X objects[i].type, " ", objects[i].size,
- X " ", objects[i].name, "");
- X } else {
- X /* only print object list */
- X for (i = 0; i < nobjects; i++)
- X write_files(o_sif, o_star, do_sif, do_star,
- X objects[i].alpha2000/15.0, objects[i].delta2000,
- X objects[i].mag,
- X objects[i].type, " ", objects[i].size,
- X " ", objects[i].name, "");
- X }
- X}
- X
- X
- X/* Output .sif and .star files for a planet */
- Xvoid out_sif_planet(o_sif, o_star, do_sif, do_star, one_day,
- X planet, jd)
- X FILE *o_sif, *o_star;
- X int do_sif, do_star; /* output sif file , .star file */
- X int one_day; /* only doing one day */
- X planet_data_t planet;
- X double jd;
- X{
- X static char *namep = "";
- X char *vectfield;
- X char datestr[15];
- X char name_date[96];
- X
- X if (namep == planet.name) { /* we've done this before */
- X vectfield = "VS";
- X } else { /* this is a new one */
- X namep = planet.name;
- X vectfield = "VM";
- X };
- X
- X jd_to_str(jd, datestr);
- X sprintf(name_date, "%s %s", planet.name, datestr);
- X
- X write_files(o_sif, o_star, do_sif, do_star,
- X planet.alpha2000/15.0, planet.delta2000,
- X planet.mag,
- X planet.type, " ", planet.size,
- X " ", name_date, "");
- X write_files(o_sif, o_star, do_sif, do_star,
- X planet.alpha2000/15.0, planet.delta2000,
- X planet.mag + 1.0,
- X vectfield, " ", planet.size,
- X " ", name_date, "");
- X}
- X
- X/* Output .sif and .star files for a body */
- Xvoid out_sif_body(o_sif, o_star, do_sif, do_star, one_day,
- X body, jd)
- X FILE *o_sif, *o_star;
- X int do_sif, do_star; /* output sif file , .star file */
- X int one_day; /* only doing one day */
- X wanderer_data_t body;
- X double jd;
- X{
- X static char *namep = "";
- X char *vectfield, *typefield;
- X char datestr[15];
- X char name_date[96];
- X
- X if (namep == body.name) { /* we've done this before */
- X vectfield = "VS";
- X } else { /* this is a new one */
- X namep = body.name;
- X vectfield = "VM";
- X };
- X
- X if (body.body_type == asteroid)
- X typefield = "PA";
- X else if (body.body_type == comet)
- X typefield = "PC";
- X else
- X typefield = "P?";
- X
- X jd_to_str(jd, datestr);
- X sprintf(name_date, "%s %s", body.name, datestr);
- X
- X write_files(o_sif, o_star, do_sif, do_star,
- X body.alpha2000/15.0, body.delta2000,
- X body.mag,
- X typefield, " ", -1.0,
- X " ", name_date, "");
- X write_files(o_sif, o_star, do_sif, do_star,
- X body.alpha2000/15.0, body.delta2000,
- X body.mag + 1.0,
- X vectfield, " ", -1.0,
- X " ", name_date, "");
- X}
- X
- X/* output sun */
- Xvoid out_sif_sun(o_sif, o_star, do_sif, do_star, one_day,
- X sun_data, jd)
- X FILE *o_sif, *o_star;
- X int do_sif, do_star; /* output sif file , .star file */
- X int one_day; /* only doing one day */
- X sun_data_t sun_data;
- X double jd;
- X{
- X static char *namep = "";
- X char *vectfield;
- X char datestr[15];
- X char name_date[96];
- X
- X if (!strcmp(namep,"Sol")) { /* we've done this before */
- X vectfield = "VS";
- X } else { /* this is a new one */
- X namep = "Sol";
- X vectfield = "VM";
- X };
- X
- X jd_to_str(jd, datestr);
- X sprintf(name_date, "%s %s", "Sol", datestr);
- X
- X write_files(o_sif, o_star, do_sif, do_star,
- X sun_data.alpha2000/15.0, sun_data.delta2000,
- X -26.0,
- X "PS", "G2", sun_data.size,
- X " ", name_date, "");
- X write_files(o_sif, o_star, do_sif, do_star,
- X sun_data.alpha2000/15.0, sun_data.delta2000,
- X -25.0,
- X vectfield, " ", sun_data.size,
- X " ", name_date, "");
- X}
- X/* output moon */
- Xvoid out_sif_moon(o_sif, o_star, do_sif, do_star, one_day,
- X moon_data, jd)
- X FILE *o_sif, *o_star;
- X int do_sif, do_star; /* output sif file , .star file */
- X int one_day; /* only doing one day */
- X moon_data_t moon_data;
- X double jd;
- X{
- X static char *namep = "";
- X char *vectfield;
- X char datestr[15];
- X char name_date[96];
- X char moon_phase[20];
- X
- X if (!strcmp(namep,"moon")) { /* we've done this before */
- X vectfield = "VS";
- X } else { /* this is a new one */
- X namep = "moon";
- X vectfield = "VM";
- X };
- X
- X jd_to_str(jd, datestr);
- X sprintf(name_date, "%s %s", "Moon", datestr);
- X sprintf(moon_phase, "%6.1f %6.1f", moon_data.phase, moon_data.chi);
- X
- X write_files(o_sif, o_star, do_sif, do_star,
- X moon_data.alpha2000/15.0, moon_data.delta2000,
- X moon_data.mag,
- X "PL", "G2", moon_data.size,
- X " ", name_date, moon_phase);
- X write_files(o_sif, o_star, do_sif, do_star,
- X moon_data.alpha2000/15.0, moon_data.delta2000,
- X moon_data.mag + 1.0,
- X vectfield, " ", moon_data.size,
- X " ", name_date, "");
- X}
- X
- X
- Xvoid write_files(o_sif, o_star, do_sif, do_star, ra, dec, mag, type, color,
- X size, constell, name, comment)
- X FILE *o_sif, *o_star;
- X int do_sif, do_star; /* output sif file , .star file */
- X double ra, dec, mag;
- X char type[3], color[3];
- X double size;
- X char constell[4];
- X char *name;
- X char *comment;
- X{
- X int rah, ram, ras, dld, dlm, d_d, d_m, d_s, sign;
- X double dec_t;
- X int i;
- X char magstr[4];
- X char sizestr[3];
- X
- X rah = ra;
- X ra -= rah;
- X ram = ra*60.0;
- X ra -= ram/60.0;
- X ras = ra*3600.0 + 0.5;
- X if (ras == 60) {
- X ras = 0;
- X ram++;
- X }
- X if (ram == 60) {
- X ram = 0;
- X rah++;
- X }
- X if (rah == 24) rah = 0;
- X
- X /* dec -> degrees and minutes */
- X dec_t = dec;
- X sign = (dec_t < 0.0);
- X if (sign) dec_t = -dec_t;
- X dld = dec_t;
- X dec_t -= dld;
- X dlm = dec_t * 60.0 + 0.5;
- X if (dlm == 60) {
- X dlm = 0;
- X dld++;
- X }
- X
- X /* dec -> degrees, minutes and seconds */
- X dec_t = dec;
- X if (sign) dec_t = -dec_t;
- X d_d = (int) dec_t;
- X d_m = (int)((dec_t - d_d)*60);
- X d_s = (int)((dec_t - d_d - d_m/60.0)*3600 + 0.5);
- X if (d_s == 60) {
- X d_s = 0;
- X d_m++;
- X }
- X if (d_m == 60) {
- X d_m = 0;
- X d_d++;
- X }
- X
- X if (mag < 0.0) {
- X if (mag < -10.0) strcpy(magstr,"-99");
- X else {
- X i = -mag*10 + .5;
- X sprintf(magstr,"-%02d", i);
- X };
- X } else if (mag < 10.0) {
- X i = mag*100 + .5;
- X sprintf(magstr,"%03d", i);
- X } else {
- X i = mag*100 + .5;
- X i %= 1000;
- X sprintf(magstr,"%03d", i);
- X magstr[0] = ((int) (mag - 10.0)) + 'A';
- X };
- X
- X if (size >= 0.0)
- X tosizestr(size, sizestr);
- X else
- X strcpy(sizestr, " ");
- X
- X if (do_star)
- X if (comment[0])
- X fprintf(o_star, "%02d%02d%02d%c%02d%02d%s%s%s%s%s%s,%s\n",
- X rah, ram, ras, sign ? '-':'+', dld, dlm,
- X magstr,
- X type, color,
- X sizestr,
- X constell, name, comment);
- X else
- X fprintf(o_star, "%02d%02d%02d%c%02d%02d%s%s%s%s%s%s\n",
- X rah, ram, ras, sign ? '-':'+', dld, dlm,
- X magstr,
- X type, color,
- X sizestr,
- X constell, name);
- X
- X if (do_sif)
- X fprintf(o_sif, "%2d %2d %2d; %c%02d %2d %d; %.3f;%s;%s;%s;%s;%s;%s\n",
- X rah, ram, ras, sign ? '-':'+', d_d, d_m, d_s,
- X mag,
- X type, color,
- X sizestr,
- X constell, name, comment);
- X}
- X
- Xvoid tosizestr(sze, str)
- X double sze;
- X char str[];
- X{
- X if (sze < 99.5) sprintf(str, "%2d",(int) (sze + 0.5));
- X else if (sze < 995.0) {
- X sprintf(str, "%2d",(int) ((sze + 5.0)/10.0));
- X str[0] = 'A' + str[0] - '0' - 1;
- X } else if (sze < 9950.0) {
- X sprintf(str, "%2d",(int) ((sze + 50.0)/100.0));
- X str[0] = 'J' + str[0] - '0' - 1;
- X } else if (sze < 89500.0) {
- X sprintf(str, "%2d",(int) ((sze + 500.0)/1000.0));
- X str[0] = 'S' + str[0] - '0' - 1;
- X } else sprintf(str , "Z9");
- X}
- END_OF_FILE
- if test 9823 -ne `wc -c <'observe/outsif.c'`; then
- echo shar: \"'observe/outsif.c'\" unpacked with wrong size!
- fi
- # end of 'observe/outsif.c'
- fi
- if test -f 'observe/tablecalc.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'observe/tablecalc.c'\"
- else
- echo shar: Extracting \"'observe/tablecalc.c'\" \(12025 characters\)
- sed "s/^X//" >'observe/tablecalc.c' <<'END_OF_FILE'
- X/*
- X * tablecalc.c
- X * calculate positions by interpolation of a table
- X *
- X * Copyright (c) 1990 by Craig Counterman. All rights reserved.
- X *
- X * This software may be redistributed freely, not sold.
- X * This copyright notice and disclaimer of warranty must remain
- X * unchanged.
- X *
- X * No representation is made about the suitability of this
- X * software for any purpose. It is provided "as is" without express or
- X * implied warranty, to the extent permitted by applicable law.
- X *
- X */
- X
- X#ifndef lint
- Xstatic char rcsid[] =
- X "$Header: tablecalc.c,v 1.8 90/02/19 17:21:52 ccount Exp $";
- X#endif
- X
- X
- X#include <stdio.h>
- X#include <math.h>
- X#include <ctype.h>
- X
- X#ifndef SYSV
- X#include <strings.h>
- X#else
- X#include <string.h>
- X#endif /* SYSV */
- X#include "observe.h"
- X#include "date.h"
- X
- X
- X#ifndef FALSE
- X#define FALSE 0
- X#endif
- X#ifndef TRUE
- X#define TRUE 1
- X#endif
- X
- X#ifndef MAX
- X#define MAX(x,y) ((x)>(y)?(x):(y))
- X#endif
- X#ifndef MIN
- X#define MIN(x,y) ((x)<(y)?(x):(y))
- X#endif
- X
- Xstatic double polint();
- Xstatic void readfile();
- X
- X#define MAXPTS 300
- X
- Xstatic double dates[MAXPTS], ra[MAXPTS], dec[MAXPTS],
- X mag[MAXPTS], r[MAXPTS], Delta[MAXPTS];
- Xstatic int Nread;
- Xstatic double from_equinox;
- X
- Xvoid tabulated_pos(jd, sun_data, body)
- X double jd;
- X sun_data_t sun_data;
- X wanderer_data_t *body;
- X{
- X double alpha, delta;
- X double alpha2000, delta2000;
- X double error;
- X
- X alpha = 15.0 * polint(dates, ra, Nread, jd, &error);
- X delta = polint(dates, dec, Nread, jd, &error);
- X precess(from_equinox, 2000.0, alpha, delta, &alpha2000, &delta2000);
- X
- X body->alpha = alpha;
- X body->delta = delta;
- X body->alpha2000 = alpha2000;
- X body->delta2000 = delta2000;
- X body->mag = polint(dates, mag, Nread, jd, &error);
- X body->r = polint(dates, r, Nread, jd, &error);
- X body->Delta = polint(dates, Delta, Nread, jd, &error);
- X body->body_type = no_type;
- X
- X /* Unknown */
- X body->beta = -999.0;
- X body->psi = -999.0;
- X}
- X
- Xvoid read_table(infile, in_type)
- X FILE *infile;
- X fformat_t in_type;
- X{
- X double ra_1, ra_2;
- X int i;
- X int yr;
- X int adjust_ra;
- X
- X
- X
- X /* Prepare for epoch change */
- X switch (in_type) {
- X case emp:
- X from_equinox = 1950.0;
- X break;
- X case empb:
- X from_equinox = 1950.0;
- X break;
- X case aa:
- X from_equinox = 2000.0;
- X break;
- X case st:
- X from_equinox = 2000.0;
- X break;
- X case iau:
- X from_equinox = 1950.0;
- X break;
- X default:
- X break;
- X }
- X
- X yr = now_year();
- X readfile(infile, in_type, yr);
- X
- X
- X /* Adjust ra to be continuous */
- X /* If the difference between adjacent numbers is greater than
- X the difference if you subtract 24 from the larger,
- X then shift all by 24 hrs */
- X adjust_ra = FALSE;
- X for (i = 0; i < Nread-1; i++) {
- X ra_2 = MAX(ra[i],ra[i+1]);
- X ra_1 = MIN(ra[i],ra[i+1]);
- X if (fabs(ra_2-ra_1) > fabs(ra_2-24-ra_1))
- X adjust_ra = TRUE;
- X }
- X if (adjust_ra)
- X for (i = 0; i < Nread; i++)
- X if (ra[i] < 12.0) ra[i] += 24.0;
- X}
- X
- X
- Xstatic void readfile(fptr, fform, year)
- X FILE *fptr;
- X fformat_t fform;
- X int year;
- X{
- X char lbuf[1000], *bufp;
- X char s1[100], s2[100], s3[100], s4[100], s5[100], s6[100], s7[100], s8[100],
- X s9[100], s10[100], s11[100];
- X int i, n;
- X int mo, last_mo, yr;
- X double dy;
- X
- X mo = -1;
- X last_mo = -2;
- X dy = -1;
- X yr = year;
- X
- X fgets(lbuf, 1000, fptr);
- X n = sscanf(lbuf, "year %d", &i);
- X if (n == 1) yr = i;
- X fgets(lbuf, 1000, fptr);
- X n = sscanf(lbuf, "year %d", &i);
- X if (n == 1) yr = i;
- X fgets(lbuf, 1000, fptr);
- X n = sscanf(lbuf, "year %d", &i);
- X if (n == 1) yr = i;
- X
- X
- X switch (fform) {
- X case emp:
- X/*
- Xmonth day ra ra dec dec
- X1 2 3 4 5 6
- XVIII 17 0 23.7 -13 48
- X 27 0 19.1 -14 51
- X
- X*/
- X i = 0;
- X while (!feof(fptr)) {
- X bufp = fgets(lbuf, 1000, fptr);
- X if (bufp != NULL)
- X n = sscanf(bufp, "%s %s %s %s %s %s",
- X s1, s2, s3, s4, s5, s6);
- X else n = 0;
- X if (n < 5) continue;
- X if ((lbuf[0] == ' ') || (lbuf[0] == '\t')) {
- X /* use current month */
- X dy = atof(s1);
- X
- X ra[i] = atof(s2) + atof(s3)/60.0;
- X dec[i] = atof(s4);
- X dec[i] += (atof(s5)/60.0)*(s4[0] == '-' ? -1 : 1);
- X /* Beware of the sign */
- X
- X mag[i] = 0.0; /* don't know it */
- X r[i] = -1.0; /* don't know it */
- X Delta[i] = -1.0; /* don't know it */
- X } else {
- X mo = tr_mname(s1);
- X if (mo < last_mo) yr++;
- X last_mo = mo;
- X dy = atof(s2);
- X
- X ra[i] = atof(s3) + atof(s4)/60.0;
- X dec[i] = atof(s5);
- X dec[i] += (atof(s6)/60.0)*(s5[0] == '-' ? -1 : 1);
- X /* Beware of the sign */
- X
- X mag[i] = 0.0; /* don't know it */
- X r[i] = -1.0; /* don't know it */
- X Delta[i] = -1.0; /* don't know it */
- X }
- X
- X cal_to_jd(dy, mo, yr, &dates[i]);
- X i++;
- X };
- X Nread = i;
- X break;
- X case empb:
- X/*
- Xmonth day ra ra dec dec r Delta V beta
- X1 2 3 4 5 6 7 8 9 10
- XX 6 23 48.36 -18 5.5 2.958 2.033 7.8 8.8
- X 16 23 41.45 -18 13.1 2.955 2.095 8.0 11.6
- X*/
- X i = 0;
- X while (!feof(fptr)) {
- X bufp = fgets(lbuf, 1000, fptr);
- X if (bufp != NULL)
- X n = sscanf(bufp, "%s %s %s %s %s %s %s %s %s %s",
- X s1, s2, s3, s4, s5, s6, s7, s8, s9, s10);
- X else n = 0;
- X if (n < 5) continue;
- X if ((lbuf[0] == ' ') || (lbuf[0] == '\t')) {
- X /* use current month */
- X dy = atof(s1);
- X
- X ra[i] = atof(s2) + atof(s3)/60.0;
- X dec[i] = atof(s4);
- X dec[i] += (atof(s5)/60.0)*(s4[0] == '-' ? -1 : 1);
- X /* Beware of the sign */
- X
- X r[i] = atof(s6);
- X Delta[i] = atof(s7);
- X mag[i] = atof(s8);
- X/* beta[i] = atof(s9);*/
- X } else {
- X mo = tr_mname(s1);
- X if (mo < last_mo) yr++;
- X last_mo = mo;
- X dy = atof(s2);
- X
- X ra[i] = atof(s3) + atof(s4)/60.0;
- X dec[i] = atof(s5);
- X dec[i] += (atof(s6)/60.0)*(s5[0] == '-' ? -1 : 1);
- X /* Beware of the sign */
- X
- X r[i] = atof(s7);
- X Delta[i] = atof(s8);
- X mag[i] = atof(s9);
- X/* beta[i] = atof(s10);*/
- X }
- X
- X cal_to_jd(dy, mo, yr, &dates[i]);
- X
- X i++;
- X };
- X Nread = i;
- X break;
- X case aa:
- X/*
- Xdate RA DEC r Ephemeris Transit
- X1 2 3 4 5 6 7 8 9 10 11
- XOct. 1 23 54 52.1 -17 37 21 2.011 23 10.0
- X 3 23 53 16.1 -17 42 32 2.019 23 00.5
- X*/
- X i = 0;
- X while (!feof(fptr)) {
- X bufp = fgets(lbuf, 1000, fptr);
- X if (bufp != NULL)
- X n = sscanf(bufp, "%s %s %s %s %s %s %s %s %s %s %s",
- X s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11);
- X else n = 0;
- X if (n < 7) continue;
- X if ((lbuf[0] == ' ') || (lbuf[0] == '\t')) {
- X /* use current month */
- X dy = atof(s1);
- X
- X ra[i] = atof(s2) + atof(s3)/60.0 + atof(s4)/3600.0;
- X dec[i] = atof(s5);
- X dec[i] += (atof(s6)/60.0 + atof(s7)/3600.0)*(s5[0] == '-' ? -1 : 1);
- X /* Beware of the sign */
- X
- X r[i] = atof(s8);
- X
- X mag[i] = 0.0; /* don't know it */
- X Delta[i] = -1.0; /* don't know it */
- X } else {
- X mo = tr_mname(s1);
- X if (mo < last_mo) yr++;
- X last_mo = mo;
- X dy = atof(s2);
- X
- X ra[i] = atof(s3) + atof(s4)/60.0 + atof(s5)/3600.0;
- X dec[i] = atof(s6);
- X dec[i] += (atof(s7)/60.0 + atof(s8)/3600.0)*(s6[0] == '-' ? -1 : 1);
- X /* Beware of the sign */
- X r[i] = atof(s9);
- X
- X mag[i] = 0.0; /* don't know it */
- X Delta[i] = -1.0; /* don't know it */
- X }
- X
- X cal_to_jd(dy, mo, yr, &dates[i]);
- X
- X i++;
- X };
- X Nread = i;
- X break;
- X case st:
- X/*
- XDate RA DEC Elongation Mag.
- X1 2 3 4 5 6 7 8
- XOct 1 14 07.6 4 06 25 5.4
- X 6 14 52.3 3 28 32 6.5
- X*/
- X i = 0;
- X while (!feof(fptr)) {
- X bufp = fgets(lbuf, 1000, fptr);
- X if (bufp != NULL)
- X n = sscanf(bufp, "%s %s %s %s %s %s %s %s",
- X s1, s2, s3, s4, s5, s6, s7, s8);
- X else n = 0;
- X if (n < 5) continue;
- X if ((lbuf[0] == ' ') || (lbuf[0] == '\t')) {
- X /* use current month */
- X dy = atof(s1);
- X
- X ra[i] = atof(s2) + atof(s3)/60.0;
- X dec[i] = atof(s4);
- X dec[i] += (atof(s5)/60.0)*(s4[0] == '-' ? -1 : 1);
- X /* Beware of the sign */
- X mag[i] = atof(s7);
- X
- X r[i] = -1.0; /* don't know it */
- X Delta[i] = -1.0; /* don't know it */
- X } else {
- X mo = tr_mname(s1);
- X if (mo < last_mo) yr++;
- X last_mo = mo;
- X dy = atof(s2);
- X
- X ra[i] = atof(s3) + atof(s4)/60.0;
- X dec[i] = atof(s5);
- X dec[i] += (atof(s6)/60.0)*(s5[0] == '-' ? -1 : 1);
- X /* Beware of the sign */
- X mag[i] = atof(s8);
- X
- X r[i] = -1.0; /* don't know it */
- X Delta[i] = -1.0; /* don't know it */
- X }
- X
- X cal_to_jd(dy, mo, yr, &dates[i]);
- X
- X i++;
- X };
- X Nread = i;
- X break;
- X case iau:
- X/*
- Xdate RA DEC \Delta r (V or m1)
- X *Only gives \Delta r and V or m1 for every other date*
- X
- X1 2 3 4 5 6 7 8 9
- XOct. 6 14 50.24 3 41.0 1.204 0.643 12.5
- X 11 15 29.62 2 48.8
- X 16 16 04.01 1 54.1 1.339 0.889 14.1
- X 21 16 33.96 1 02.5
- X*/
- X i = 0;
- X while (!feof(fptr)) {
- X bufp = fgets(lbuf, 1000, fptr);
- X if (bufp != NULL)
- X n = sscanf(bufp, "%s %s %s %s %s %s %s %s %s",
- X s1, s2, s3, s4, s5, s6, s7, s8, s9);
- X else n = 0;
- X if (n < 5) continue;
- X if ((lbuf[0] == ' ') || (lbuf[0] == '\t')) {
- X /* use current month */
- X dy = atof(s1);
- X
- X ra[i] = atof(s2) + atof(s3)/60.0;
- X dec[i] = atof(s4);
- X dec[i] += (atof(s5)/60.0)*(s4[0] == '-' ? -1 : 1);
- X /* Beware of the sign */
- X if (n > 5) {
- X Delta[i] = atof(s6);
- X r[i] = atof(s7);
- X mag[i] = atof(s8);
- X } else {
- X Delta[i] =
- X r[i] =
- X mag[i] =
- X -9999.0;
- X }
- X } else {
- X mo = tr_mname(s1);
- X if (mo < last_mo) yr++;
- X last_mo = mo;
- X dy = atof(s2);
- X
- X ra[i] = atof(s3) + atof(s4)/60.0;
- X dec[i] = atof(s5);
- X dec[i] += (atof(s6)/60.0)*(s5[0] == '-' ? -1 : 1);
- X /* Beware of the sign */
- X if (n > 5) {
- X Delta[i] = atof(s7);
- X r[i] = atof(s8);
- X mag[i] = atof(s9);
- X } else {
- X Delta[i] =
- X r[i] =
- X mag[i] =
- X -9999.0;
- X }
- X }
- X
- X cal_to_jd(dy, mo, yr, &dates[i]);
- X
- X i++;
- X };
- X Nread = i;
- X
- X /* now fix mag, r, and Delta */
- X for (i = 0; i < Nread; i++) {
- X if (mag[i] < -1000.0)
- X mag[i] = (mag[i-1] + mag[i-1])/2.0;
- X if (r[i] < -1000.0)
- X r[i] = (r[i-1] + r[i-1])/2.0;
- X if (Delta[i] < -1000.0)
- X Delta[i] = (Delta[i-1] + Delta[i-1])/2.0;
- X };
- X break;
- X default:
- X break;
- X }
- X}
- X
- X
- X
- X/* Maximum number of points */
- X#define NMAX MAXPTS
- X
- X/* Polymomial interpolation (or extrapolation) function
- XAdopted from Numerical Recipies
- XGiven arrays xa and ya, each of length N, and given a value x, this routine
- Xreturns a value y and an error estimate dy. If P(x) is the polynomial of
- Xdegree N-1 such that P(xa[i]) = ya[i], i = 1, ..., N then the returned
- Xvalue y = P(x); */
- Xstatic double polint(xa, ya, N, x, dy)
- X double xa[], ya[]; /* value arrays */
- X int N; /* Order */
- X double x; /* x point desired */
- X double *dy; /* error estimate */
- X{
- X int i, NS, M;
- X double dif, dift, c[NMAX], d[NMAX], ho, hp, w, den, y;
- X
- X NS = 0;
- X dif = fabs(x-xa[0]);
- X /* Find the index NS of closest table entry */
- X for (i = 0; i < N; i++) {
- X dift = fabs(x - xa[i]);
- X if (dift < dif) {
- X NS = i;
- X dif = dift;
- X }
- X /* initialize the 'tableau' of c's and d's */
- X c[i] =
- X d[i] = ya[i];
- X }
- X y = ya[NS]; /* Initial approximation to Y. */
- X NS--;
- X /* For each column of the tableay, we loop over the current c's and d's
- X and update them */
- X for (M = 1; M <= N-1; M++) {
- X for (i = 0; i < N-M; i++) {
- X ho = xa[i] - x;
- X hp = xa[i+M] - x;
- X w = c[i+1] - d[i];
- X den = ho - hp;
- X if (den == 0.0) {
- X /* This can occur only if two input xa's are identical */
- X fprintf(stderr, "Error in routine polint\n");
- X exit(1);
- X }
- X den = w/den;
- X d[i] = hp*den;
- X c[i] = ho*den;
- X }
- X
- X /* After each column in the tableau is completed, we decide
- X which correction, c or d, we want to add to our accumulating value of y,
- X i.e. which path to take throught the tableau -- forking up or down.
- X We do this in such a way as to take the most "straight line" route
- X through the tableau to its apex, updating NS accordingly to keep track
- X of where we are. This route keeps the apartial approximations centered
- X (insofar as possible) on the target x. The last dy added is thus
- X the error indication. */
- X if ((NS+1)*2 < N-M)
- X *dy = c[NS+1];
- X else {
- X *dy = d[NS];
- X NS--;
- X }
- X y = y + *dy;
- X }
- X
- X return y;
- X}
- END_OF_FILE
- if test 12025 -ne `wc -c <'observe/tablecalc.c'`; then
- echo shar: \"'observe/tablecalc.c'\" unpacked with wrong size!
- fi
- # end of 'observe/tablecalc.c'
- fi
- if test -f 'starchart/descrip.mms' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'starchart/descrip.mms'\"
- else
- echo shar: Extracting \"'starchart/descrip.mms'\" \(11285 characters\)
- sed "s/^X//" >'starchart/descrip.mms' <<'END_OF_FILE'
- X###########################################################################
- X#
- X# DESCRIP.MMS - a 'makefile' for VAX/VMS and VAX C V3.0 or greater
- X# by Michael Campanella (campanella@cvg.enet.dec.com)
- X#
- X# $Header: descrip.mms,v 1.5 90/01/13 14:41:44 ccount Exp $
- X#
- X###########################################################################
- X# Makefile for starchart programs
- X#
- X# $Header: descrip.mms,v 1.5 90/01/13 14:41:44 ccount Exp $
- X#
- X#list ONLY the programs you want to use at your site
- XTARGS= \
- X stardsp.exe \
- X starX11.exe \
- X starXaw.exe \
- X starpost.exe \
- X startek.exe
- X# staruplot
- X# starsunv
- X# starlaser
- X# starX10
- X# startool must be made specially, see below.
- X# Also consider "postconv.awk"
- X
- X#SITE DEPENDENCIES
- X#
- X# Uncomment out the version appropriate for your site.
- X# At present dependencies for sysV UNIX
- X#
- X#LOCAL=-DSYSV -Dindex=strchr
- X#LOCAL = /define=(SYSV,"index=strchr","unlink=delete")
- X
- X# FOR ALL
- X# define OLD_GREEK if you have the old yale.star file, with a
- X# slightly different greek encoding
- X# To produce programs which allow keyboard user interaction with the -u flag,
- X# see COBJ and starmain.OBJ below.
- X# FOR X11
- X# define USE_X_DASHES if your server can draw dashed lines
- X# define RELEASE3_FONTS if you want to use the X11R3 font names
- X# define X11R4 if you are using Release 4 (for the athena widgets).
- X# FOR POSTSCRIPT
- X# define USE_FINE_MACROS if you want to use finer macros than usual:
- X# star size varies continuously with magnitude.
- X# Needs printer with lots of available memory
- X#
- X#DEFINES= -DRELEASE3_FONTS -DUSE_X_DASHES -DUSE_FINE_MACROS
- X#DEFINES= -DRELEASE3_FONTS -DUSE_X_DASHES
- X#DEFINES = /define=(USE_X_DASHES,RELEASE3_FONTS)
- X
- X#destination for 'make install', otherwise not important
- XBINDIR = "/usr/local"
- X
- X#XINCLUDES is for DECwindows UWS 2.0
- X#XINCLUDES = -I/usr/include/mit
- XXINCLUDES =
- X
- X#list ALL header files
- XHDRS=icon.h parse_input.h star3.h starXaw.h starXawDlog.h patchlevel.h
- X#list ALL source files, whether or not you use them
- XSRCS= interact.c parse_input.c readfile.c starX10.c starX11.c starXaw.c \
- X starXawDlog.c starXawHelp.c starXawMwin.c starcust.c \
- X stardsp.c starimages.c starlaser.c starm2.c starmain.c \
- X starpost.c starsample.c starsunv.c starsupp.c startek.c staruplot.c
- X
- X#list ALL object files which could be produced
- XOBJS= interact.OBJ parse_input.OBJ readfile.OBJ starX10.OBJ \
- X starX11.OBJ starX11_aw.OBJ starXaw.OBJ starXawDlog.OBJ \
- X starXawHelp.OBJ starXawMwin.OBJ starcust.OBJ stardsp.OBJ \
- X starimages.OBJ starimages_a.OBJ starlaser.OBJ starm2.OBJ starm2_i.OBJ \
- X starmain.OBJ starmain_i.OBJ starpost.OBJ starsunv.OBJ starsupp.OBJ \
- X startek.OBJ staruplot.OBJ
- X
- XATHENA_OBJS = command.obj form.obj label.obj simple.obj text.obj vpaned.obj -
- X asciitext.obj box.obj asciisink.obj strtojust.obj disksrc.obj -
- X intrinsic.obj stringsrc.obj utils.obj lower.obj dialog.obj scroll.obj -
- X strtoornt.obj graypixmap.obj
- X
- XSTARTOOL=startool.tt startool.icon startool.sh
- XSUPP=postconv.awk
- XVMSFILES=decwxtk.opt descrip.mms starchart_init.com vaxcrtl.opt
- XIBMFILES=pcstar.h Starchar.MSC staribm.c
- XFILES = Makefile. README. ${SRCS} ${HDRS} ${STARTOOL} ${SUPP} \
- X ${VMSFILES} ${IBMFILES}
- X
- XDISTDIR=../../dist/starchart
- X
- X#The following may be defined here to set default data file locations
- X# filename filetype description
- X# STARFILE STARFTYPE bright star data (yale)
- X# INDEXFILE INDEXFTYPE index to fainter stars (SAO)
- X# NEBFILE NEBFTYPE nebulae
- X# BOUNDFILE BOUNDFTYPE constellation boundaries
- X# PATTERNFILE PATTFTYPE constellation patterns
- X# CNAMEFILE CNAMEFTYPE constellation names
- X# PLANETFILE PLANETFTYPE planet positions
- X
- X# other files
- X# CONSTFILE constellation locations
- X# RCFILE resource file
- X
- X# Define as needed only
- X# Remember, there are defaults in the code
- X
- X# Example
- XFILEROOT=/starchart/
- XSTAR="${FILEROOT}/yale.star"
- XSTART=LINEREAD
- XINDEX="${FILEROOT}/index.indx"
- XINDEXT=INDEXTYPE
- X# only currently valid index file type
- XNEB="${FILEROOT}/neb.star"
- XNEBT=LINEREAD
- XBOUND="${FILEROOT}/boundaries.star"
- XBOUNDT=LINEREAD
- XPATT="${FILEROOT}/pattern.star"
- XPATTTY=LINEREAD
- XCNAME="${FILEROOT}/cnames.star"
- XCNAMET=LINEREAD
- XPLANET="./planet.star"
- X# Planets move, so make it local
- XPLANETTY=LINEREAD
- XCONS="${FILEROOT}/con.locs"
- XRC="./.starrc"
- X
- XFILEFLAGS= \
- X -DSTARFILE='$(STAR)' \
- X -DSTARFTYPE='$(START)' \
- X -DINDEXFILE='$(INDEX)' \
- X -DINDEXFTYPE='$(INDEXT)' \
- X -DNEBFILE='$(NEB)' \
- X -DNEBFTYPE='$(NEBT)' \
- X -DBOUNDFILE='$(BOUND)' \
- X -DBOUNDFTYPE='$(BOUNDT)' \
- X -DPATTERNFILE='$(PATT)' \
- X -DPATTFTYPE='$(PATTTY)' \
- X -DCNAMEFILE='$(CNAME)' \
- X -DCNAMEFTYPE='$(CNAMET)' \
- X -DPLANETFILE='$(PLANET)' \
- X -DPLANETFTYPE='$(PLANETTY)' \
- X -DCONSTFILE='$(CONS)' \
- X -DRCFILE='$(RC)'
- X
- X.first
- X pu/nolog/keep=3
- X set prot=(g:rwed,w:re)/default
- X define sys sys$library
- X define x11 decw$include,sys$disk:[]
- X
- X.last
- X pu/nolog
- X
- Xall : $(TARGS)
- X ! Done !
- X
- X#CFLAGS= ${FILEFLAGS} ${LOCAL} ${DEFINES} -g
- XCFLAGS = -
- X/list/define=(SYSV,"index=strchr",USE_X_DASHES,RELEASE3_FONTS)
- X#LDFLAGS = -g
- XLINKFLAGS = /nodebug/trace
- X
- X#Include interact.OBJ in COBJ to support keyboard user interaction
- X#COBJ=starmain.OBJ starm2.OBJ starsupp.OBJ readfile.OBJ parse_input.OBJ
- XCOBJ=starmain.OBJ starm2.OBJ starsupp.OBJ readfile.OBJ parse_input.OBJ -
- X interact.OBJ
- XCOBJIM=$(COBJ) starimages.OBJ
- XCOBJIMA=$(COBJ) starimages_a.OBJ
- X
- Xstardsp.exe : $(COBJ) stardsp.OBJ starcust.OBJ
- X $ define/user lnk$library sys$library:vaxcrtl.olb
- X $ link/exe=$(mms$target) $(LINKFLAGS) $(mms$source_list)
- X# $(CC) $(LDFLAGS) ${COBJ} stardsp.OBJ starcust.OBJ -lm -o $@
- X
- Xstarlaser.exe : $(COBJIMA) starlaser.OBJ starcust.OBJ
- X $(CC) $(LDFLAGS) ${COBJIMA} starlaser.OBJ starcust.OBJ -lm -o $@
- X
- Xstarpost.exe : $(COBJ) starpost.OBJ starcust.OBJ
- X $ define/user lnk$library sys$library:vaxcrtl.olb
- X $ link/exe=$(mms$target) $(LINKFLAGS) $(mms$source_list)
- X# $(CC) $(LDFLAGS) $(COBJ) starpost.OBJ starcust.OBJ -lm -o $@
- X
- Xstartek.exe : $(COBJIMA) startek.OBJ starcust.OBJ
- X $ define/user lnk$library sys$library:vaxcrtl.olb
- X $ link/exe=$(mms$target) $(LINKFLAGS) $(mms$source_list)
- X# $(CC) $(LDFLAGS) ${COBJIMA} startek.OBJ starcust.OBJ -lm -o $@
- X
- Xstaruplot.exe : $(COBJIMA) staruplot.OBJ starcust.OBJ
- X $(CC) $(LDFLAGS) ${COBJIMA} staruplot.OBJ starcust.OBJ -lm -lplot -o $@
- X
- XstarX10.exe : ${COBJIMA} starX10.OBJ starcust.OBJ
- X $(CC) $(LDFLAGS) ${COBJIMA} starX10.OBJ starcust.OBJ -lm -lX -o $@
- X
- XstarX11.exe : $(COBJIM) starX11.OBJ starcust.OBJ
- X $ define/user lnk$library sys$library:vaxcrtl.olb
- X $ link/exe=$(mms$target) $(LINKFLAGS) $(mms$source_list),decwxtk.opt/opt
- X# $(CC) $(LDFLAGS) ${COBJIM} starX11.OBJ starcust.OBJ -lm -lX11 -o $@
- X
- XstarXaw.exe : starmain_i.OBJ starm2_i.OBJ starsupp.OBJ readfile.OBJ starX11_aw.OBJ \
- X starXaw.OBJ starXawDlog.OBJ starXawHelp.OBJ starXawMwin.OBJ\
- X starcust.OBJ starimages.OBJ parse_input.OBJ $(ATHENA_OBJS)
- X $ define/user lnk$library sys$library:vaxcrtl.olb
- X $ link/exe=$(mms$target) $(LINKFLAGS) $(mms$source_list),decwxtk.opt/opt
- X# $(CC) $(LDFLAGS) starmain_i.OBJ starm2_i.OBJ starsupp.OBJ readfile.OBJ \
- X# starXaw.OBJ starXawDlog.OBJ starXawHelp.OBJ starXawMwin.OBJ \
- X# starX11_aw.OBJ starcust.OBJ starimages.OBJ parse_input.OBJ\
- X# -lm -lXaw -lXmu -lXt -lX11 -o $@
- X
- Xstarsunv.exe : starmain_i.OBJ starm2_i.OBJ starsupp.OBJ readfile.OBJ starsunv.OBJ \
- X starcust.OBJ starimages.OBJ parse_input.OBJ interact.OBJ
- X $(CC) $(LDFLAGS) starmain_i.OBJ starm2_i.OBJ starsupp.OBJ readfile.OBJ \
- X starsunv.OBJ starcust.OBJ starimages.OBJ parse_input.OBJ interact.OBJ \
- X -lm -lsuntool -lsunwindow -lpixrect -o $@
- Xstartool.exe : starsunv
- X echo "You must edit startool, startool.tt and startool.sh,"
- X echo " and install them"
- X echo "You must have the program tooltool,"
- X echo " which is available from sun PD archives"
- X echo "tooltool -f startool.tt" > startool
- X
- X# use -DINTERACTIVE_CONTROL in starmain.OBJ and starm2.OBJ
- X# to allow keyboard user interaction
- Xstarmain.OBJ : starmain.c Makefile star3.h parse_input.h
- X $(CC) $(CFLAGS) starmain.c -
- X /define=(SYSV,"index=strchr",USE_X_DASHES,RELEASE3_FONTS,INTERACTIVE_CONTROL)
- X# $(CC) $(CFLAGS) -DINTERACTIVE_CONTROL -c starmain.c
- X
- Xstarm2.OBJ : starm2.c Makefile star3.h
- X $(CC) $(CFLAGS) starm2.c -
- X /define=(SYSV,"index=strchr",USE_X_DASHES,RELEASE3_FONTS,INTERACTIVE_CONTROL)
- X# $(CC) $(CFLAGS) -DINTERACTIVE_CONTROL -c starm2.c
- X
- Xstarmain_i.OBJ : starmain.c Makefile star3.h parse_input.h
- X - copy starmain.OBJ starmain_n.OBJ
- X $(CC) $(CFLAGS) starmain.c -
- X /define=(SYSV,"index=strchr",USE_X_DASHES,RELEASE3_FONTS,INTERACTIVE_CONTROL)
- X# $(CC) $(CFLAGS) -DINTERACTIVE_CONTROL -c starmain.c
- X COPY starmain.OBJ starmain_i.OBJ
- X - copy starmain_n.OBJ starmain.OBJ
- X
- Xstarm2_i.OBJ : starm2.c Makefile star3.h
- X - copy starm2.OBJ starm2_n.OBJ
- X $(CC) $(CFLAGS) starm2.c -
- X /define=(SYSV,"index=strchr",USE_X_DASHES,RELEASE3_FONTS,INTERACTIVE_CONTROL)
- X# $(CC) $(CFLAGS) -DINTERACTIVE_CONTROL -c starm2.c
- X COPY starm2.OBJ starm2_i.OBJ
- X - copy starm2_n.OBJ starm2.OBJ
- X
- Xreadfile.OBJ : readfile.c star3.h
- X $(CC) $(CFLAGS) readfile.c -
- X /define=(SYSV,"index=strchr",USE_X_DASHES,RELEASE3_FONTS)
- X
- Xstarimages.OBJ : starimages.c star3.h
- X $(CC) $(CFLAGS) starimages.c -
- X /define=(SYSV,"index=strchr",USE_X_DASHES,RELEASE3_FONTS)
- X# $(CC) $(CFLAGS) -c starimages.c
- X
- X#starimages_a.OBJ defines area operations for drivers which otherwise don't
- X# support them
- Xstarimages_a.OBJ : Makefile starimages.c star3.h
- X - copy starimages.OBJ starimages_n.OBJ
- X $(CC) $(CFLAGS) starimages.c -
- X /define=(SYSV,"index=strchr",USE_X_DASHES,RELEASE3_FONTS,AREAS)
- X# $(CC) $(CFLAGS) -DAREAS -c starimages.c
- X COPY starimages.OBJ starimages_a.OBJ
- X - copy starimages_n.OBJ starimages.OBJ
- X
- XstarX11.OBJ : starX11.c Makefile icon.h star3.h
- X $(CC) $(CFLAGS) $(XINCLUDES) starX11.c -
- X /define=(SYSV,"index=strchr",USE_X_DASHES,RELEASE3_FONTS,STARX11)
- X# $(CC) $(CFLAGS) $(XINCLUDES) -DSTARX11 -c starX11.c
- X
- XstarX11_aw.OBJ : starX11.c Makefile icon.h star3.h
- X - copy starX11.OBJ starX11_n.OBJ
- X $(CC) $(CFLAGS) $(XINCLUDES) starX11.c -
- X /define=(SYSV,"index=strchr",USE_X_DASHES,RELEASE3_FONTS,STARXAW)
- X# $(CC) $(CFLAGS) $(XINCLUDES) -DSTARXAW -c starX11.c
- X COPY starX11.OBJ starX11_aw.OBJ
- X - copy starX11_n.OBJ starX11.OBJ
- X
- XstarXaw.OBJ : starXaw.c star3.h starXaw.h icon.h
- X $(CC) $(CFLAGS) $(XINCLUDES) starXaw.c -
- X /define=(SYSV,"index=strchr",USE_X_DASHES,RELEASE3_FONTS)
- X# $(CC) $(CFLAGS) $(XINCLUDES) -c starXaw.c
- X
- XstarXawDlog.OBJ : starXawDlog.c star3.h starXaw.h starXawDlog.h
- X $(CC) $(CFLAGS) $(XINCLUDES) starXawDlog.c -
- X /define=(SYSV,"index=strchr",USE_X_DASHES,RELEASE3_FONTS)
- X# $(CC) $(CFLAGS) $(XINCLUDES) -c starXawDlog.c
- X
- XstarXawHelp.OBJ : starXawHelp.c star3.h starXaw.h
- X $(CC) $(CFLAGS) $(XINCLUDES) starXawHelp.c -
- X /define=(SYSV,"index=strchr",USE_X_DASHES,RELEASE3_FONTS)
- X# $(CC) $(CFLAGS) $(XINCLUDES) -c starXawHelp.c
- X
- XstarXawMwin.OBJ : starXawMwin.c star3.h starXaw.h
- X $(CC) $(CFLAGS) $(XINCLUDES) starXawMwin.c -
- X /define=(SYSV,"index=strchr",USE_X_DASHES,RELEASE3_FONTS)
- X# $(CC) $(CFLAGS) $(XINCLUDES) -c starXawMwin.c
- X
- Xstarsunv.OBJ : star3.h
- Xinteract.OBJ : star3.h parse_input.h
- Xparse_input.OBJ : star3.h parse_input.h
- Xstarcust.OBJ : star3.h
- Xstardsp.OBJ : star3.h
- Xstarlaser.OBJ : star3.h
- Xstarpost.OBJ : star3.h
- Xstarsample.OBJ : star3.h
- Xstarsupp.OBJ : star3.h
- Xstartek.OBJ : star3.h
- Xstaruplot.OBJ : star3.h
- END_OF_FILE
- echo shar: 1 control character may be missing from \"'starchart/descrip.mms'\"
- if test 11285 -ne `wc -c <'starchart/descrip.mms'`; then
- echo shar: \"'starchart/descrip.mms'\" unpacked with wrong size!
- fi
- # end of 'starchart/descrip.mms'
- fi
- echo shar: End of archive 7 \(of 32\).
- cp /dev/null ark7isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 32 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-
-
-