ccount@ATHENA.MIT.EDU (03/16/90)
Posting-number: Volume 11, Issue 34 Submitted-by: ccount@ATHENA.MIT.EDU Archive-name: starchart/part06 #! /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 6 (of 32)." # Contents: observe/mooncalc.c samples/ast1990.ell_e # starchart/Makefile starchart/startek.c starchart/staruplot.c PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'observe/mooncalc.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'observe/mooncalc.c'\" else echo shar: Extracting \"'observe/mooncalc.c'\" \(9697 characters\) sed "s/^X//" >'observe/mooncalc.c' <<'END_OF_FILE' X/* X * moonpos.c X * moon position calculations 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 * DISCLAIMER OF WARRANTY X * ---------------------- X * The author disclaims all warranties with regard to this software to X * the extent permitted by applicable law, including all implied X * warranties of merchantability and fitness. In no event shall the X * author be liable for any special, indirect or consequential damages or X * any damages whatsoever resulting from loss of use, data or profits, X * whether in an action of contract, negligence or other tortious action, X * arising out of or in connection with the use or performance of this X * software. X * X */ X X X#ifndef lint Xstatic char rcsid[] = X "$Header: mooncalc.c,v 1.6 90/02/19 17:20:34 ccount Exp $"; X#endif X X X#include <math.h> X#include "observe.h" X#include "degree.h" X Xvoid moon_pos(jd, sun_data, moon_data) X double jd; X sun_data_t sun_data; X moon_data_t *moon_data; X{ X double T; X double L_prime, M, M_prime, delta, f, Omega, e; X double lambda, beta, moon_pi; X double tmp; X double venus_term; X double omega1, omega2; X double alpha; /* R.A. and dec.(delta above) both degrees */ X double alpha2000, delta2000; /* R.A. and dec. both degrees equin 2000.0 */ X double epsilon; /* obliquity */ X X T = (jd - 2415020.0)/36525.0; X X /* Compute the mean values for the terms. */ X L_prime = into_range(270.434164 + 481267.8831 * T X - 0.001133 * T*T + 0.0000019 * T*T*T); X M = into_range(358.475833 + 35999.0498 * T X - 0.000150 * T*T - 0.0000033 * T*T*T); X M_prime = into_range(296.104608 + 477198.8491 * T X + 0.009192 * T*T + 0.0000144 * T*T*T); X delta = into_range(350.737486 + 445267.1142 * T X - 0.001436 * T*T + 0.0000019 * T*T*T); X f = into_range(11.250889 + 483202.0251 * T X - 0.003211 * T*T - 0.0000003 * T*T*T); X Omega = into_range(259.183275 - 1934.1420 * T X + 0.002078 * T*T + 0.0000022 * T*T*T); X X /* Additive terms. */ X tmp = DSIN(51.2 + 20.2 * T); X L_prime += 0.000233 * tmp; X M += -0.001778 * tmp; X M_prime += 0.000817 * tmp; X delta += 0.002011 * tmp; X X venus_term = 0.003964 * DSIN(346.560 + 132.870 * T - 0.0091731 * T*T ); X L_prime += venus_term; X M_prime += venus_term; X delta += venus_term; X f += venus_term; X X tmp = DSIN(Omega); X L_prime += 0.001964 * tmp; X M_prime += 0.002541 * tmp; X delta += 0.001964 * tmp; X f += -0.024691 * tmp; X X f += -0.004328 * DSIN(Omega + 275.05 - 2.30 * T); X X e = 1 - 0.002495 * T - 0.00000752 * T*T; X X /* Bring these angles within 0 to 360 degrees. */ X M = into_range(M); X M_prime = into_range(M_prime); X delta = into_range(delta); X f = into_range(f); X Omega = into_range(Omega); X X X /* Calculate lambda, the ecliptical longitude of the Moon's center. */ X lambda = L_prime + 6.288750 * DSIN(M_prime) X + 1.274018 * DSIN(2*delta - M_prime) X + 0.658309 * DSIN(2*delta) X + 0.213616 * DSIN(2 * M_prime) X - e * 0.185596 * DSIN(M) X - 0.114336 * DSIN(2*f) X + 0.058793 * DSIN(2*delta - 2*M_prime) X + e * 0.057212 * DSIN(2*delta - M - M_prime) X + 0.053320 * DSIN(2*delta + M_prime) X + e * 0.045874 * DSIN(2*delta - M) X + e * 0.041024 * DSIN(M_prime - M) X - 0.034718 * DSIN(delta) X - e * 0.030465 * DSIN(M + M_prime) X + 0.015326 * DSIN(2*delta - 2*f) X - 0.012528 * DSIN(2*f + M_prime) X - 0.010980 * DSIN(2*f - M_prime) X + 0.010674 * DSIN(4*delta - M_prime) X + 0.010034 * DSIN(3*M_prime) X + 0.008548 * DSIN(4*delta - 2*M_prime); X lambda += X - e * 0.007910 * DSIN(M - M_prime + 2*delta) X - e * 0.006783 * DSIN(2*delta + M) X + 0.005162 * DSIN(M_prime - delta) X + e * 0.005000 * DSIN(M + delta) X + e * 0.004049 * DSIN(M_prime - M + 2*delta) X + 0.003996 * DSIN(2*M_prime + 2*delta) X + 0.003862 * DSIN(4*delta) X + 0.003665 * DSIN(2*delta - 3*M_prime) X + e * 0.002695 * DSIN(2*M_prime - M) X + 0.002602 * DSIN(M_prime - 2*f - 2*delta) X + e * 0.002396 * DSIN(2*delta - M - 2*M_prime) X - 0.002349 * DSIN(M_prime + delta) X + e*e * 0.002249 * DSIN(2*delta - 2*M) X - e * 0.002125 * DSIN(2*M_prime + M) X - e*e * 0.002079 * DSIN(2*M) X + e*e * 0.002059 * DSIN(2*delta - M_prime - 2*M) X - 0.001773 * DSIN(M_prime + 2*delta - 2*f) X - 0.001595 * DSIN(2*f + 2*delta) X + e * 0.001220 * DSIN(4*delta - M - M_prime); X lambda += X - 0.001110 * DSIN(2*M_prime + 2*f) X + 0.000892 * DSIN(M_prime - 3*delta) X - e * 0.000811 * DSIN(M + M_prime + 2*delta) X + e * 0.000761 * DSIN(4*delta - M - 2*M_prime) X + e*e * 0.000717 * DSIN(M_prime - 2*M) X + e*e * 0.000704 * DSIN(M_prime - 2*M -2*delta) X + e * 0.000693 * DSIN(M - 2*M_prime + 2*delta) X + e * 0.000598 * DSIN(2*delta - M - 2*f) X + 0.000550 * DSIN(M_prime + 4*delta) X + 0.000538 * DSIN(4*M_prime) X + e * 0.000521 * DSIN(4*delta - M) X + 0.000486 * DSIN(2*M_prime - delta); X lambda = into_range(lambda); X X /* Calculate beta, the ecliptical latitude of the Moon's center. */ X beta = 5.128189 * DSIN(f) X + 0.280606 * DSIN(M_prime + f) X + 0.277693 * DSIN(M_prime - f) X + 0.173238 * DSIN(2*delta - f) X + 0.055413 * DSIN(2*delta + f - M_prime) X + 0.046272 * DSIN(2*delta - f - M_prime) X + 0.032573 * DSIN(2*delta + f) X + 0.017198 * DSIN(2*M_prime + f) X + 0.009267 * DSIN(2*delta + M_prime - f) X + 0.008823 * DSIN(2*M_prime - f) X + e * 0.008247 * DSIN(2*delta - M - f) X + 0.004323 * DSIN(2*delta - f - 2*M_prime) X + 0.004200 * DSIN(2*delta + f + M_prime) X + e * 0.003372 * DSIN(f - M - 2*delta) X + e * 0.002472 * DSIN(2*delta + f - M - M_prime) X + e * 0.002222 * DSIN(2*delta + f - M) X + e * 0.002072 * DSIN(2*delta - f - M - M_prime) X + e * 0.001877 * DSIN(f - M + M_prime) X + 0.001828 * DSIN(4*delta - f - M_prime); X beta += X - e * 0.001803 * DSIN(f + M) X - 0.001750 * DSIN(3*f) X + e * 0.001570 * DSIN(M_prime - M - f) X - 0.001487 * DSIN(f + delta) X - e * 0.001481 * DSIN(f + M + M_prime) X + e * 0.001417 * DSIN(f - M - M_prime) X + e * 0.001350 * DSIN(f - M) X + 0.001330 * DSIN(f - delta) X + 0.001106 * DSIN(f + 3*M_prime) X + 0.001020 * DSIN(4*delta - f) X + 0.000833 * DSIN(f + 4*delta - M_prime) X + 0.000781 * DSIN(M_prime - 3*f) X + 0.000670 * DSIN(f + 4*delta - 2*M_prime) X + 0.000606 * DSIN(2*delta - 3*f) X + 0.000597 * DSIN(2*delta + 2*M_prime - f) X + e * 0.000492 * DSIN(2*delta + M_prime - M - f); X beta += X 0.000450 * DSIN(2*M_prime - f - 2*delta) X + 0.000439 * DSIN(3*M_prime - f) X + 0.000423 * DSIN(f + 2*delta + 2*M_prime) X + 0.000422 * DSIN(2*delta - f - 3*M_prime) X - e * 0.000367 * DSIN(M + f + 2*delta - M_prime) X - e * 0.000353 * DSIN(M + f + 2*delta) X + 0.000331 * DSIN(f + 4*delta) X + e * 0.000317 * DSIN(2*delta + f - M + M_prime) X + e*e * 0.000306 * DSIN(2*delta - 2*M - f) X - 0.000283 * DSIN(M_prime + 3*f); X X omega1 = 0.0004664 * DCOS(Omega); X omega2 = 0.0000754 * DCOS(Omega + 275.05 - 2.30 * T); X X beta *= (1 - omega1 - omega2); X X moon_pi = .950724+.051818*DCOS(M_prime)+.009531*DCOS(2*delta-M_prime) X +.007843*DCOS(2*delta)+ .002824*DCOS(2*M_prime) X +.000857*DCOS(2*delta+M_prime)+e*.000533*DCOS(2*delta-M) X + e*.000401*DCOS(2*delta-M_prime-M)+e*.00032*DCOS(M_prime-M) X -.000271*DCOS(delta) -e*.000264*DCOS(M+M_prime) X -.000198*DCOS(2*f-M_prime); X X moon_pi += .000173*DCOS(3*M_prime)+.000167*DCOS(4*delta-M_prime) X -e*.000111*DCOS(M)+.000103*DCOS(4*delta-2*M_prime) X -.000084*DCOS(2*M_prime-2*delta)-e*.000083*DCOS(2*delta+M) X +.000079*DCOS(2*delta+2*M_prime)+.000072*DCOS(4*delta)+ X e*.000064*DCOS(2*delta-M+M_prime)-e*.000063*DCOS(2*delta+M-M_prime)+ X e*.000041*DCOS(M+delta); X X moon_pi += e*.000035*DCOS(2*M_prime-M)-.000033*DCOS(3*M_prime-2*delta)- X .00003*DCOS(M_prime+delta)-.000029*DCOS(2*(f-delta)) X -e*.000029*DCOS(2*M_prime+M)+e*e*.000026*DCOS(2*(delta-M)) X -.000023*DCOS(2*(f-delta)+M_prime)+ e*.000019*DCOS(4*delta-M-M_prime); X X moon_pi = into_range(moon_pi); X X X epsilon = obl_jd(jd); X X X moon_data->lambda = lambda; X moon_data->beta = beta; X moon_data->moon_pi = moon_pi; X X moon_data->Delta = 6378.14 / DSIN(moon_pi); /* in km */ X moon_data->size = 2*(358482800.0 / moon_data->Delta); X alpha = RAD_TO_DEG * atan2(DSIN(lambda)*DCOS(epsilon) X - DTAN(beta) * DSIN(epsilon), X DCOS(lambda)); X delta = RAD_TO_DEG * asin(DSIN(beta)*DCOS(epsilon) X + DCOS(beta)*DSIN(epsilon)*DSIN(lambda)); X alpha = into_range(alpha); X moon_data->alpha = alpha; X moon_data->delta = delta; X precess(2000.0 - (2451545.0 - jd) / 365.25, X 2000.0, alpha, delta, &alpha2000, &delta2000); X moon_data->alpha2000 = alpha2000; X moon_data->delta2000 = delta2000; X X tmp = RAD_TO_DEG * acos(DCOS(lambda - sun_data.Theta) * DCOS(beta)); X X moon_data->phase = 180 - tmp X - 0.1468 * DSIN(tmp) * (1 - 0.0549 * DSIN(M_prime))/(1 - DSIN(M)); X moon_data->illum_frac = (1 + DCOS(moon_data->phase))/2.0; X X moon_data->chi = /* position angle of bright limb */ X DATAN2(DCOS(sun_data.delta) * DSIN(sun_data.alpha - alpha), X DCOS(delta) * DSIN(sun_data.delta) X - DSIN(delta) * DCOS(sun_data.delta) * DCOS(sun_data.alpha - alpha)); X X X moon_data->mag = -12.74 - 2.5 * log10(moon_data->illum_frac); X /* Doesn't allow for opposition surge */ X} X END_OF_FILE if test 9697 -ne `wc -c <'observe/mooncalc.c'`; then echo shar: \"'observe/mooncalc.c'\" unpacked with wrong size! fi # end of 'observe/mooncalc.c' fi if test -f 'samples/ast1990.ell_e' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'samples/ast1990.ell_e'\" else echo shar: Extracting \"'samples/ast1990.ell_e'\" \(8972 characters\) sed "s/^X//" >'samples/ast1990.ell_e' <<'END_OF_FILE' XFirst three lines are ignored. a = q/(1-e), n = 0.985609/(a*sqrt(a)), Xif M not given, use M = (Epoch_date - T) * n XName i Omega omega a n e M Month day year equinox_year body_type H G XCeres 10.607 80.702 71.274 2.7685 0.21396 0.0780 287.265 Oct 1 1989 2000.0 Asteroid 3.32 0.11 XPallas 34.804 173.323 309.796 2.7703 0.21375 0.2347 273.779 Oct 1 1989 2000.0 Asteroid 4.13 0.15 XJuno 12.991 170.542 246.787 2.6692 0.22601 0.2575 205.808 Nov 5 1990 2000.0 Asteroid 5.31 0.30 XJuno89 12.993 170.556 246.744 2.6682 0.22614 0.2580 115.411 Oct 1 1989 2000.0 Asteroid 5.31 0.30 XVesta 7.139 104.015 149.986 2.3607 0.27174 0.0906 152.190 Nov 5 1990 2000.0 Asteroid 3.16 0.34 XVesta89 7.139 104.015 150.175 2.3613 0.27163 0.0906 43.314 Oct 1 1989 2000.0 Asteroid 3.16 0.34 XHebe 14.781 139.033 238.480 2.4250 0.26100 0.2020 253.786 Nov 5 1990 2000.0 Asteroid 5.70 0.24 XIris 5.513 260.100 144.725 2.3864 0.26735 0.2292 239.261 Nov 5 1990 2000.0 Asteroid 5.56 0.25 XFlora 5.888 111.120 284.896 2.2016 0.30171 0.1561 296.988 Nov 5 1990 2000.0 Asteroid 6.48 0.33 X XHygiea 3.840 283.833 315.832 3.1365 0.17743 0.1202 104.089 Nov 5 1990 2000.0 Asteroid 5.37 0.15 XEgeria 16.521 43.422 81.324 2.5760 0.23838 0.0865 227.959 Nov 5 1990 2000.0 Asteroid 6.71 0.15 XIrene 9.113 86.863 95.016 2.5858 0.23703 0.1665 223.034 Nov 5 1990 2000.0 Asteroid 6.27 0.09 XIrene89 9.113 86.867 95.052 2.5867 0.23691 0.1661 128.194 Oct 1 1989 2000.0 Asteroid 6.27 0.09 XPsyche 3.089 150.508 227.697 2.9229 0.19723 0.1333 37.474 Nov 5 1990 2000.0 Asteroid 5.98 0.22 XPsyche89 3.089 150.508 227.581 2.9234 0.19718 0.1335 318.680 Oct 1 1989 2000.0 Asteroid 5.98 0.22 XThetis 5.586 125.682 135.701 2.4693 0.25401 0.1367 183.654 Nov 5 1990 2000.0 Asteroid 7.77 0.13 X XMelpomene 10.137 150.705 227.396 2.2950 0.28349 0.2185 200.804 Nov 5 1990 2000.0 Asteroid 6.41 0.17 XFortuna 1.569 211.765 181.936 2.4420 0.25828 0.1580 31.086 Nov 5 1990 2000.0 Asteroid 7.09 0.10 XMassalia 0.702 207.010 255.050 2.4088 0.26364 0.1439 257.393 Nov 5 1990 2000.0 Asteroid 6.52 0.26 XKalliope 13.696 66.469 355.776 2.9112 0.19842 0.0977 291.742 Nov 5 1990 2000.0 Asteroid 6.49 0.22 XThalia 10.154 67.351 59.156 2.6293 0.23118 0.2304 90.351 Nov 5 1990 2000.0 Asteroid 7.07 0.37 X XThemis 0.763 36.020 110.713 3.1270 0.17824 0.1354 301.411 Nov 5 1990 2000.0 Asteroid 7.07 0.10 XBellona 9.402 144.675 343.579 2.7785 0.21281 0.1487 219.410 Nov 5 1990 2000.0 Asteroid 7.17 0.22 XAmphitrite 6.110 356.625 63.020 2.5546 0.24139 0.0715 294.249 Nov 5 1990 2000.0 Asteroid 5.84 0.21 XPomona 5.528 220.692 338.832 2.5867 0.23691 0.0843 89.274 Nov 5 1990 2000.0 Asteroid 7.50 0.11 X XFides 3.077 7.820 61.596 2.6403 0.22974 0.1781 115.917 Nov 5 1990 2000.0 Asteroid 7.28 0.25 XLaetitia 10.368 157.417 208.197 2.7677 0.21405 0.1145 237.595 Nov 5 1990 2000.0 Asteroid 6.16 0.25 XHarmonia 4.258 94.397 268.350 2.2672 0.28871 0.0466 346.473 Nov 5 1990 2000.0 Asteroid 7.14 0.31 XDaphne 15.773 178.380 46.249 2.7621 0.21470 0.2747 60.955 Nov 5 1990 2000.0 Asteroid 7.34 0.15 X XIsis 8.543 84.759 235.599 2.4400 0.25860 0.2254 38.183 Nov 5 1990 2000.0 Asteroid 7.50 0.25 XNysa 3.704 131.675 342.213 2.4232 0.26129 0.1499 247.080 Nov 5 1990 2000.0 Asteroid 7.05 0.44 XHestia 2.328 181.344 175.471 2.5249 0.24567 0.1711 37.915 Nov 5 1990 2000.0 Asteroid 8.38 0.11 XNemausa 9.957 176.267 2.420 2.3660 0.27081 0.0659 159.062 Nov 5 1990 2000.0 Asteroid 7.36 0.06 X XEuropa 7.439 129.275 337.304 3.1022 0.18038 0.1000 164.467 Nov 5 1990 2000.0 Asteroid 6.29 0.15 XMnemosyne 15.209 199.456 216.053 3.1474 0.17651 0.1195 103.749 Nov 5 1990 2000.0 Asteroid 6.95 0.07 X XEcho 3.595 192.126 269.704 2.3933 0.26619 0.1829 321.595 Nov 5 1990 2000.0 Asteroid 8.68 0.33 XAngelina 1.311 309.907 179.604 2.6818 0.22442 0.1254 223.411 Nov 5 1990 2000.0 Asteroid 7.65 0.37 XCybele 3.544 156.046 109.524 3.4353 0.15480 0.1043 82.254 Nov 5 1990 2000.0 Asteroid 6.79 0.15 XAsia 6.010 203.079 105.135 2.4199 0.26182 0.1867 79.665 Nov 5 1990 2000.0 Asteroid 8.36 0.25 X XLeto 7.964 44.534 304.234 2.7800 0.21263 0.1874 212.611 Nov 5 1990 2000.0 Asteroid 6.84 0.11 XSappho 8.657 219.071 138.749 2.2957 0.28335 0.1996 31.567 Nov 5 1990 2000.0 Asteroid 8.10 0.30 XAlkmene 2.837 25.929 110.166 2.7632 0.21458 0.2206 103.968 Nov 5 1990 2000.0 Asteroid 8.51 0.34 X XBeatrix 4.974 27.890 166.485 2.4317 0.25992 0.0822 49.340 Nov 5 1990 2000.0 Asteroid 8.89 0.30 XIo 11.960 203.564 122.381 2.6537 0.22800 0.1931 10.282 Nov 5 1990 2000.0 Asteroid 7.56 0.05 XThisbe 5.220 277.047 35.107 2.7681 0.21400 0.1639 344.758 Nov 5 1990 2000.0 Asteroid 7.05 0.17 XMinerva 8.569 4.625 273.731 2.7543 0.21562 0.1419 36.210 Nov 5 1990 2000.0 Asteroid 7.73 0.15 X XAurora 8.014 3.193 52.095 3.1630 0.17521 0.0812 293.595 Nov 5 1990 2000.0 Asteroid 7.55 0.08 XArethusa 12.927 243.747 151.534 3.0730 0.18296 0.1429 330.070 Nov 5 1990 2000.0 Asteroid 7.83 0.08 XKlotho 11.758 160.189 267.835 2.6663 0.22638 0.2595 121.105 Nov 5 1990 2000.0 Asteroid 7.70 0.25 XHera 5.420 136.379 189.616 2.7015 0.22198 0.0813 206.160 Nov 5 1990 2000.0 Asteroid 7.59 0.11 X XFelicitas 7.887 3.514 56.444 2.6931 0.22301 0.2997 97.896 Nov 5 1990 2000.0 Asteroid 8.87 0.11 XAmalthea 5.035 123.663 79.475 2.3753 0.26924 0.0882 216.302 Nov 5 1990 2000.0 Asteroid 8.63 0.26 X XAlkeste 2.949 188.468 62.504 2.6290 0.23121 0.0782 330.227 Nov 5 1990 2000.0 Asteroid 8.13 0.31 XAntigone 12.220 136.532 109.040 2.8669 0.20305 0.2133 351.635 Nov 5 1990 2000.0 Asteroid 7.05 0.37 X XMeliboea 13.434 202.580 107.979 3.1119 0.17954 0.2232 334.659 Nov 5 1990 2000.0 Asteroid 8.04 0.10 XLumen 11.914 319.126 56.794 2.6663 0.22638 0.2143 325.359 Nov 5 1990 2000.0 Asteroid 8.56 0.15 X XVibilia 4.815 76.735 293.390 2.6540 0.22796 0.2342 159.105 Nov 5 1990 2000.0 Asteroid 7.87 0.08 XProkne 18.520 159.680 163.008 2.6164 0.23289 0.2379 14.254 Nov 5 1990 2000.0 Asteroid 7.66 0.15 X XPhilomela 7.260 72.750 217.649 3.1139 0.17936 0.0271 8.157 Nov 5 1990 2000.0 Asteroid 6.64 0.47 XIsolda 3.875 264.210 175.456 3.0450 0.18549 0.1557 311.401 Nov 5 1990 2000.0 Asteroid 7.84 0.03 X XGermania 5.507 271.334 73.629 3.0498 0.18506 0.1021 346.614 Nov 5 1990 2000.0 Asteroid 7.50 0.04 XAnahita 2.365 254.835 79.907 2.1979 0.30248 0.1510 257.156 Nov 5 1990 2000.0 Asteroid 8.79 0.25 XUnitas 7.265 142.125 166.815 2.3574 0.27231 0.1516 51.829 Nov 5 1990 2000.0 Asteroid 9.05 0.25 X XBamberga 11.141 328.547 43.357 2.6818 0.22442 0.3405 279.446 Nov 5 1990 2000.0 Asteroid 6.82 0.10 XTercidina 9.735 212.944 229.663 2.3255 0.27792 0.0613 196.462 Nov 5 1990 2000.0 Asteroid 8.75 0.15 XDembowska 8.264 32.824 343.637 2.9246 0.19707 0.0901 257.577 Nov 5 1990 2000.0 Asteroid 5.98 0.32 XElenora 18.429 140.729 5.535 2.7962 0.21079 0.1170 304.553 Nov 5 1990 2000.0 Asteroid 6.32 0.32 X XCarlova 11.710 132.817 289.875 3.0014 0.18954 0.1774 5.169 Nov 5 1990 2000.0 Asteroid 8.41 0.15 XSiegena 20.267 167.174 219.083 2.8970 0.19989 0.1685 347.219 Nov 5 1990 2000.0 Asteroid 7.42 0.23 X XAquitania 18.075 128.585 156.275 2.7386 0.21748 0.2380 1.312 Nov 5 1990 2000.0 Asteroid 7.48 0.24 X XVaticania 12.922 58.498 197.066 2.7871 0.21182 0.2213 80.917 Nov 5 1990 2000.0 Asteroid 7.87 0.26 XPatientia 15.236 89.677 343.564 3.0611 0.18403 0.0709 342.677 Nov 5 1990 2000.0 Asteroid 6.65 0.20 XPatientia89 15.236 89.678 343.267 3.0619 0.18396 0.0709 269.350 Oct 1 1989 2000.0 Asteroid 6.65 0.20 X XPapagena 14.937 84.524 313.429 2.8914 0.20047 0.2289 319.325 Nov 5 1990 2000.0 Asteroid 6.61 0.29 X XDavida 15.937 107.998 339.207 3.1728 0.17439 0.1783 314.054 Nov 5 1990 2000.0 Asteroid 6.17 0.02 XAmherstia 12.959 329.434 257.457 2.6764 0.22510 0.2772 73.232 Nov 5 1990 2000.0 Asteroid 8.25 0.25 XPauly 9.916 120.807 184.068 3.0616 0.18398 0.2386 16.168 Nov 5 1990 2000.0 Asteroid 8.79 0.15 X XSemiramis 10.713 282.567 84.555 2.3731 0.26960 0.2350 153.196 Nov 5 1990 2000.0 Asteroid 8.74 0.34 XMarianna 15.222 332.584 42.150 3.0913 0.18314 0.2425 337.178 Nov 5 1990 2000.0 Asteroid 8.41 0.31 X XRachele 13.543 58.832 40.165 2.9210 0.19743 0.1960 96.665 Nov 5 1990 2000.0 Asteroid 7.43 0.25 XPax 24.388 112.845 265.743 2.5870 0.23688 0.3111 326.717 Nov 5 1990 2000.0 Asteroid 9.01 0.15 X XInteramnia 17.301 281.072 92.206 3.0631 0.18385 0.1471 350.196 Nov 5 1990 2000.0 Asteroid 6.00 0.02 X X XAstraea 5.357 141.792 356.519 2.5741 0.23865 0.1917 227.749 Oct 1 1989 2000.0 Asteroid 6.91 0.25 XMetis 5.585 69.112 5.315 2.3865 0.26733 0.1219 270.833 Oct 1 1989 2000.0 Asteroid 6.32 0.29 XParthenope 4.621 125.703 193.711 2.4520 0.25669 0.0994 29.828 Oct 1 1989 2000.0 Asteroid 6.62 0.27 XVictoria 8.376 235.863 68.720 2.3340 0.27642 0.2196 29.574 Oct 1 1989 2000.0 Asteroid 7.23 0.24 XEunomia 11.765 293.619 97.591 2.6437 0.22929 0.1849 327.856 Oct 1 1989 2000.0 Asteroid 5.22 0.20 XLachesis 6.968 341.696 237.604 3.1147 0.17930 0.0645 95.139 Oct 1 1989 2000.0 Asteroid 7.73 0.17 XPalatia 8.134 127.553 296.023 2.7882 0.21170 0.3050 85.494 Oct 1 1989 2000.0 Asteroid 9.38 0.32 X END_OF_FILE if test 8972 -ne `wc -c <'samples/ast1990.ell_e'`; then echo shar: \"'samples/ast1990.ell_e'\" unpacked with wrong size! fi # end of 'samples/ast1990.ell_e' fi if test -f 'starchart/Makefile' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'starchart/Makefile'\" else echo shar: Extracting \"'starchart/Makefile'\" \(9487 characters\) sed "s/^X//" >'starchart/Makefile' <<'END_OF_FILE' X# Makefile for starchart programs X# X# $Header: Makefile,v 2.16 90/03/08 22:23:04 ccount Exp $ X# X# Read the makefile before making. There are many things you may wish X# to customize. X# 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# DISCLAIMER OF WARRANTY X# ---------------------- X# The author disclaims all warranties with regard to this software to X# the extent permitted by applicable law, including all implied X# warranties of merchantability and fitness. In no event shall the X# author be liable for any special, indirect or consequential damages or X# any damages whatsoever resulting from loss of use, data or profits, X# whether in an action of contract, negligence or other tortious action, X# arising out of or in connection with the use or performance of this X# software. X# X# X#list ONLY the programs you want to use at your site XTARGS= \ X stardsp \ X starpost \ X startek \ X staruplot \ X starX11 \ X starXaw \ 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 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.o below. X# If you don't want to use the Guide Star Catalog, you can produce X# slightly smaller executable by defining NO_GSC 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 with 1/10th magnitude increments X# Needs printer with lots of available memory, but produces X# smaller postscript files than using the "-a m" option to X# postscript. X# X#DEFINES= -DRELEASE3_FONTS -DUSE_X_DASHES -DUSE_FINE_MACROS XDEFINES= -DRELEASE3_FONTS -DUSE_X_DASHES X X#destination for 'make install', otherwise not important XBINDIR = "/usr/local" X X#XINCLUDES is for DECwindows UWS 2.0 XXINCLUDES = -I/usr/include/mit X#XINCLUDES = 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.o parse_input.o readfile.o starX10.o \ X starX11.o starX11_aw.o starXaw.o starXawDlog.o \ X starXawHelp.o starXawMwin.o starcust.o stardsp.o \ X starimages.o starimages_a.o starlaser.o starm2.o starm2_i.o \ X starmain.o starmain_i.o starpost.o starsunv.o starsupp.o \ X startek.o staruplot.o 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 XATARIFILES=README.st makefile.st starst.c vqgdos.txt vqgdos.s XMACFILES=README.mac XFILES=Makefile README ${SRCS} ${HDRS} ${STARTOOL} ${SUPP} ${VMSFILES} \ X ${IBMFILES} ${ATARIFILES} ${MACFILES} 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=/space/ftp/astro/SAO 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 Xall: ${TARGS} X XCFLAGS= ${FILEFLAGS} ${LOCAL} ${DEFINES} -g XLDFLAGS = -g X X X#Include interact.o in COBJ to support keyboard user interaction X#COBJ=starmain.o starm2.o starsupp.o readfile.o parse_input.o XCOBJ=starmain.o starm2.o starsupp.o readfile.o parse_input.o interact.o XCOBJIM=${COBJ} starimages.o XCOBJIMA=${COBJ} starimages_a.o X Xstardsp: ${COBJ} stardsp.o starcust.o X $(CC) $(LDFLAGS) ${COBJ} stardsp.o starcust.o -lm -o $@ X Xstarlaser: ${COBJIMA} starlaser.o starcust.o X $(CC) $(LDFLAGS) ${COBJIMA} starlaser.o starcust.o -lm -o $@ X Xstarpost: $(COBJ) starpost.o starcust.o X $(CC) $(LDFLAGS) $(COBJ) starpost.o starcust.o -lm -o $@ X Xstartek: ${COBJIMA} startek.o starcust.o X $(CC) $(LDFLAGS) ${COBJIMA} startek.o starcust.o -lm -o $@ X Xstaruplot: ${COBJIMA} staruplot.o starcust.o X $(CC) $(LDFLAGS) ${COBJIMA} staruplot.o starcust.o -lm -lplot -o $@ X XstarX10: ${COBJIMA} starX10.o starcust.o X $(CC) $(LDFLAGS) ${COBJIMA} starX10.o starcust.o -lm -lX -o $@ X XstarX11: ${COBJIM} starX11.o starcust.o X $(CC) $(LDFLAGS) ${COBJIM} starX11.o starcust.o -lm -lX11 -o $@ X XstarXaw: starmain_i.o starm2_i.o starsupp.o readfile.o starX11_aw.o \ X starXaw.o starXawDlog.o starXawHelp.o starXawMwin.o\ X starcust.o starimages.o parse_input.o X $(CC) $(LDFLAGS) starmain_i.o starm2_i.o starsupp.o readfile.o \ X starXaw.o starXawDlog.o starXawHelp.o starXawMwin.o \ X starX11_aw.o starcust.o starimages.o parse_input.o\ X -lm -lXaw -lXmu -lXt -lX11 -o $@ X Xstarsunv: starmain_i.o starm2_i.o starsupp.o readfile.o starsunv.o \ X starcust.o starimages.o parse_input.o interact.o X $(CC) $(LDFLAGS) starmain_i.o starm2_i.o starsupp.o readfile.o \ X starsunv.o starcust.o starimages.o parse_input.o interact.o \ X -lm -lsuntool -lsunwindow -lpixrect -o $@ X Xstartool: 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.o and starm2.o X# to allow keyboard user interaction Xstarmain.o: starmain.c Makefile star3.h parse_input.h X $(CC) $(CFLAGS) -DINTERACTIVE_CONTROL -c starmain.c X Xstarm2.o: starm2.c Makefile star3.h X $(CC) $(CFLAGS) -DINTERACTIVE_CONTROL -c starm2.c X X X Xstarmain_i.o: starmain.c Makefile star3.h parse_input.h X -mv starmain.o starmain_n.o X $(CC) $(CFLAGS) -DINTERACTIVE_CONTROL -c starmain.c X mv starmain.o starmain_i.o X -mv starmain_n.o starmain.o X Xstarm2_i.o: starm2.c Makefile star3.h X -mv starm2.o starm2_n.o X $(CC) $(CFLAGS) -DINTERACTIVE_CONTROL -c starm2.c X mv starm2.o starm2_i.o X -mv starm2_n.o starm2.o X Xreadfile.o: readfile.c star3.h X Xstarimages.o: starimages.c star3.h X $(CC) $(CFLAGS) -c starimages.c X X#starimages_a.o defines area operations for drivers which otherwise don't X# support them Xstarimages_a.o: Makefile starimages.c star3.h X -mv starimages.o starimages_n.o X $(CC) $(CFLAGS) -DAREAS -c starimages.c X mv starimages.o starimages_a.o X -mv starimages_n.o starimages.o X XstarX11.o: starX11.c Makefile icon.h star3.h X $(CC) $(CFLAGS) $(XINCLUDES) -DSTARX11 -c starX11.c X XstarX11_aw.o: starX11.c Makefile icon.h star3.h X -mv starX11.o starX11_n.o X $(CC) $(CFLAGS) $(XINCLUDES) -DSTARXAW -c starX11.c X mv starX11.o starX11_aw.o X -mv starX11_n.o starX11.o X XstarXaw.o: starXaw.c star3.h starXaw.h icon.h X $(CC) $(CFLAGS) $(XINCLUDES) -c starXaw.c X XstarXawDlog.o: starXawDlog.c star3.h starXaw.h starXawDlog.h X $(CC) $(CFLAGS) $(XINCLUDES) -c starXawDlog.c X XstarXawHelp.o: starXawHelp.c star3.h starXaw.h X $(CC) $(CFLAGS) $(XINCLUDES) -c starXawHelp.c X XstarXawMwin.o: starXawMwin.c star3.h starXaw.h X $(CC) $(CFLAGS) $(XINCLUDES) -c starXawMwin.c X Xstarsunv.o: star3.h Xinteract.o: star3.h parse_input.h patchlevel.h Xparse_input.o: star3.h parse_input.h Xstarcust.o: star3.h Xstardsp.o: star3.h Xstarlaser.o: star3.h Xstarpost.o: star3.h Xstarsample.o: star3.h Xstarsupp.o: star3.h Xstartek.o: star3.h Xstaruplot.o: star3.h X Xinstall: all X strip $(TARGS) X mv $(TARGS) $(BINDIR) X Xdist: X cp ${FILES} ${DISTDIR} X Xclean: X rm -f ${OBJS} ${TARGS} a.out core END_OF_FILE echo shar: 1 control character may be missing from \"'starchart/Makefile'\" if test 9487 -ne `wc -c <'starchart/Makefile'`; then echo shar: \"'starchart/Makefile'\" unpacked with wrong size! fi # end of 'starchart/Makefile' fi if test -f 'starchart/startek.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'starchart/startek.c'\" else echo shar: Extracting \"'starchart/startek.c'\" \(9586 characters\) sed "s/^X//" >'starchart/startek.c' <<'END_OF_FILE' X/* X * Tektronix driver for startchart.c mainline X */ X X/* X ! patched December, 1987 by Alan Paeth (awpaeth@watcgl) X ! X ! [1] "bigmaster" chart layout now added X ! X */ X/* X ! Modified for 3.0 January 1989 by Craig Counterman X */ X/* 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 Xstatic char rcsid[]="$Header: startek.c,v 2.5 90/03/10 15:34:53 ccount Exp $"; X X X#include <stdio.h> X#include <math.h> X X#include "star3.h" X X/* X * The following rational fractions are for Tek output on limited (and X * not 1024x768) bitmap devices, and attempt to cause graceful scaling of X * glyphs, by defining the distance between adjacent output pixels in terms X * of Tek coordinates. They should be fine-tuned for your Tektronix emulator. X * Additional tuning (for rounding considerations) must take place in the X * routine where the four values are referenced. X * X * Typical fractions are 5/8 (yields 640x480), 1/2, and 3/4 X * X * For full resolution Tektronix devices (full 1024x768), all values are 1. X */ X X#ifndef TEK X#define XSCALEI 1 X#define XSCALEO 2 X#define YSCALEI 1 X#define YSCALEO 2 X#else X#define XSCALEI 1 X#define XSCALEO 1 X#define YSCALEI 1 X#define YSCALEO 1 X#endif X X/* Externs */ Xextern int g_argc; Xextern char **g_argv; X Xextern char *title; /* Title of page */ X Xextern mapwindow *mapwin[MAXWINDOWS]; Xextern int numwins; X X X Xextern int cur_function; Xextern int cur_map_type; Xextern int cur_map_tag; Xextern char *cur_tag_field; X X/* Scale multiplier, minimum, X mangitude change, maximum, for thumbnail,*/ X#define THSMUL 1.2 X#define THSMIN 12.0 X#define THMADJ 2.5 X#define THMMAX 5.0 X X X/* Exports */ X X/* The variables in the first few lines MUST be set by driver */ Xmapwindow fullpage = { X 880, 700, 20, 65, /* width, height, x and y offsets */ X 8.0, 2.0, 2.05, /* default limiting mags for glyph, name, label */ X X/* The next several variables SHOULD be set by the driver, X but are only used by the driver */ X FULLPAGEMAP, /* Type of map: THUMBNAIL may have X some restrictions */ X 0, /* May be used by driver for whatever */ X "String", /* May be used by driver for whatever */ X X/* The next several variables may be set by the driver, but the main routines X may reset them (and the driver routines may then override that) */ X SANSONS, /* Projection mode */ X FALSE, FALSE, /* Draw grids */ X 0.5, 5.0, /* grid step size */ X 0.0, 0.0, /* grid origin */ X X FALSE, /* Invert (flip north south) */ X}; X X/* The variables in the first few lines MUST be set by driver */ Xmapwindow mainmap = { X 880, 500, 20, 265, /* width, height, x and y offsets */ X 8.0, 2.0, 2.05, /* default limiting mags for glyph, name, label */ X X/* The next several variables SHOULD be set by the driver, X but are only used by the driver */ X MAINMAP, /* Type of map: THUMBNAIL may have X some restrictions */ X 0, /* May be used by driver for whatever */ X "String", /* May be used by driver for whatever */ X X/* The next several variables may be set by the driver, but the main routines X may reset them (and the driver routines may then override that) */ X SANSONS, /* Projection mode */ X FALSE, FALSE, /* Draw grids */ X 0.5, 5.0, /* grid step size */ X 0.0, 0.0, /* grid origin */ X X FALSE, /* Invert (flip north south) */ X}; X X X/* The variables in the first few lines MUST be set by driver */ Xmapwindow thumbmap = { X 480, 195, 420, 35, /* width, height, x and y offsets */ X 5.5+THMADJ, 1.0+THMADJ, 2.05+THMADJ, X /* default limiting mags for glyph, name, label */ X X/* The next several variables SHOULD be set by the driver, X but are only used by the driver */ X THUMBNAIL, /* Type of map: THUMBNAIL may have X some restrictions */ X 0, /* May be used by driver for whatever */ X "String", /* May be used by driver for whatever */ X X/* The next several variables may be set by the driver, but the main routines X may reset them (and the driver routines may then override that) */ X SANSONS, /* Projection mode */ X FALSE, FALSE, /* Draw grids */ X 0.5, 5.0, /* grid step size */ X 0.0, 0.0, /* grid origin */ X X FALSE, /* Invert (flip north south) */ X}; X X/* h & v tick text controls */ Xint htick_lim = 2; Xint htext_lim = 80; Xint htext_xoff = 2; Xint htext_yoff = 17; Xint vtick_lim = 2; Xint vtext_lim = 20; Xint vtext_xoff = 24; Xint vtext_yoff = 0; X X/* externs for labels */ Xint x_nameoffset = 10, y_nameoffset = 0; Xint x_lbloffset = 0, y_lbloffset = 10; Xint x_magoffset = 7, y_magoffset = -15; X X/* externs for legend: variables of positioning are here */ Xint l_til=220; Xint l_stil=185; X Xint l_lmar1=40; Xint l_lmar2=65; Xint l_ltext=95; Xint l_rmar1=205; Xint l_rmar2=230; Xint l_rtext=260; X Xint l_line1=150; Xint l_line2=125; Xint l_line3=100; Xint l_line4=75; Xint l_line5=50; Xint l_line6=25; X X/* Point sizes for font calls */ Xint titlesize=16; Xint subtlsize=12; Xint namesize=10; Xint lblsize=8; Xint magsize=8; X X/* Fonts for font calls */ Xint namefnt=TIMESROMAN; Xint lblfnt=HELV; Xint magfnt=COURIER; Xint titlefnt=TIMESBOLD; Xint subtlfnt=TIMESROMAN; X X/* Scale multiplier, minimum, X mangitude change, maximum, for thumbnail,*/ Xdouble th_smul=THSMUL; Xdouble th_smin=THSMIN; Xdouble th_madj=THMADJ; Xdouble th_mmax=THMMAX; X X X#define MAX(a,b) ((a)>(b)?(a):(b)) X#define MIN(a,b) ((a)<(b)?(a):(b)) X X X/* Device control argument */ XD_control_arg(s) Xchar *s; X{ X int i = 0; X int c; X X while (c = s[i++]) switch (c) { X default: X break; X } X} X X/* Open the device */ XD_open() X{ X tekclear(); X X return TRUE ; /* open successful */ X} X X/* Close the device */ XD_close() X{ X tekmove(0,0); X tekalpha(); X fflush(stdout); X} X X X/* Move to (x, y) */ XD_move(x, y) X int x, y; X{ X tekmove(x, y); X} X X/* Draw a line of style line_style from the current point to (x, y) */ X/* Note, this replaces vecdraw vecdrawdot and vecdrawhyph */ XD_draw(x, y, line_style) X int x, y; X int line_style; /* SOLID, DOTTED, DASHED, etc. */ X{ X/* all styles are the same */ X tekdraw(x, y); X} X/* This routine is encouraged to look at the extern cur_funtion X and change the line style drawn as desired */ X X/* Move to (x1, y1) then draw a line of style line_style to (x2, y2) */ XD_movedraw(x1, y1, x2, y2, line_style) X int x1, y1, x2, y2; X int line_style; /* SOLID, DOTTED, DASHED, etc. */ X{ X/* all styles are the same */ X tekmove(x1, y1); X tekdraw(x2, y2); X fflush(stdout); X} X X X/* Set the color to be used for lines and text */ X/* color_str is a 2 char (+ '\0') string X containing a specification for a color, X e.g. "G2" for the color of a star of spectral class G2, or "r7" for X red, level seven. The interpretation of the color string is left to X the device driver */ XD_color(color_str) X char *color_str; X{ X switch (color_str[0]) { X case 'O': X break; X case 'B': X break; X case 'A': X break; X case 'F': X break; X case 'G': X break; X case 'K': X break; X case 'M': X break; X case 'R': X case 'N': X case 'S': X break; X case ' ': X default: X break; X } X} X X/* Set the font and font size to be used for text. */ X/* Note order of args */ XD_fontsize(fsize, font) X int fsize; /* Size of font */ X int font; /* e.g. TIMES, HELV, TIMES+ITALIC */ X{ X} X/* This routine is encouraged to look at the extern cur_funtion X and change the font used as desired */ X X X/* Display text string str at x,y, in current font and font size. X if star_lbl is TRUE, string is a star label, use X greek characters (if possible) */ XD_text(x, y, str, star_lbl) X int x, y; X char *str; X int star_lbl; X{ X tekmove(x, y-11); /* center character strings */ X tekalpha(); X X if (star_lbl) { X /* remove leading spaces */ X while (*str == ' ') str++; X /* can't display greek characters */ X } X X printf(str); X} X X/* Return input coordinate in device coords where there are pointing devices */ XD_inxy(x, y) X int *x, *y; X{ X} X X/* Put non-displayed comment in output. Allowed in postscript, but X few other drivers will be able to support this. */ XD_comment(str) X char *str; X{ X/* X fprintf(stderr, "%s\n", str); X*/ X} X X X/** XHigher level functions X**/ X Xdrawlen(x, y, dx, dy, len) X int x, y, dx, dy, len; X{ X D_movedraw((x*XSCALEI/XSCALEO+dx)*XSCALEO/XSCALEI, X (y*YSCALEI/YSCALEO+dy)*YSCALEO/YSCALEI, X (x*XSCALEI/XSCALEO+dx+len-1)*XSCALEO/XSCALEI+1, X (y*YSCALEI/YSCALEO+dy)*YSCALEO/YSCALEI, SOLID); X} X X X/* X * Low Level Tektronix Plotting Routines X */ X X#define GS 035 X#define US 037 X#define ESC 033 X#define FF 014 X Xstatic int oldHiY = 0, oldLoY = 0, oldHiX = 0; X Xtekplot() /* switch to plot mode */ X{ X putchar(GS); X putchar('@'); X oldHiY = oldLoY = oldHiX = 0; X} X Xtekalpha() /* switch to alpha mode */ X{ X putchar(US); X fflush(stdout); X} X Xtekclear() X{ X putchar(ESC); X putchar(FF); X fflush(stdout); X} X Xtekmove(x, y) /* move to (x,y) */ X int x, y; X{ X putchar(GS); X tekdraw(x, y); X} X Xtekdraw(x, y) /* draw to (x,y) */ X int x, y; X{ X int hiY, loY, hiX, loX; X if (x < 0) x = 0; X if (y < 0) y = 0; X if (x > 1023) x = 1023; X if (y > 767) y = 767; X X hiY = 0040 | (y>>5 & 037), X loY = 0140 | (y & 037), X hiX = 0040 | (x>>5 & 037), X loX = 0100 | (x & 037); X X if (hiY != oldHiY) putchar(hiY); X if (loY != oldLoY || hiX != oldHiX) putchar(loY); X if (hiX != oldHiX) putchar(hiX); X putchar(loX); X X oldHiY = hiY; X oldLoY = loY; X oldHiX = hiX; X} END_OF_FILE if test 9586 -ne `wc -c <'starchart/startek.c'`; then echo shar: \"'starchart/startek.c'\" unpacked with wrong size! fi # end of 'starchart/startek.c' fi if test -f 'starchart/staruplot.c' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'starchart/staruplot.c'\" else echo shar: Extracting \"'starchart/staruplot.c'\" \(8607 characters\) sed "s/^X//" >'starchart/staruplot.c' <<'END_OF_FILE' X/* X * Plotter Display driver for starchart.c mainline (UNIX Plot(5) style output) X * X * Sjoerd Mullender <sjoerd@cs.vu.nl> X * Free University, Amsterdam X */ X X/* X * Produced for starchart 3.0 by Craig Counterman Jan, 1989 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 Xstatic char rcsid[]="$Header: staruplot.c,v 2.2 90/02/19 17:57:49 ccount Exp $"; 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 X#include "star3.h" X X/* Externs */ Xextern int g_argc; Xextern char **g_argv; X Xextern char *title; /* Title of page */ X Xextern mapwindow *mapwin[MAXWINDOWS]; Xextern int numwins; X Xextern int cur_function; Xextern int cur_map_type; Xextern int cur_map_tag; Xextern char *cur_tag_field; X X X X/* Scale multiplier, minimum, X mangitude change, maximum, for thumbnail,*/ X#define THSMUL 1.2 X#define THSMIN 12.0 X#define THMADJ 2.5 X#define THMMAX 5.0 X X/* Exports */ X X/* The variables in the first few lines MUST be set by driver */ Xmapwindow fullpage = { X 880, 700, 20, 65, /* width, height, x and y offsets */ X 5.9, 2.0, 2.05, /* default limiting mags for glyph, name, label */ X X/* The next several variables SHOULD be set by the driver, X but are only used by the driver */ X FULLPAGEMAP, /* Type of map: THUMBNAIL may have X some restrictions */ X 0, /* May be used by driver for whatever */ X "String", /* May be used by driver for whatever */ X X/* The next several variables may be set by the driver, but the main routines X may reset them (and the driver routines may then override that) */ X SANSONS, /* Projection mode */ X FALSE, FALSE, /* Draw grids */ X 0.5, 5.0, /* grid step size */ X 0.0, 0.0, /* grid origin */ X X FALSE, /* Invert (flip north south) */ X}; X X/* The variables in the first few lines MUST be set by driver */ Xmapwindow mainmap = { X 880, 500, 20, 265, /* width, height, x and y offsets */ X 5.9, 2.0, 2.05, /* default limiting mags for glyph, name, label */ X X/* The next several variables SHOULD be set by the driver, X but are only used by the driver */ X MAINMAP, /* Type of map: THUMBNAIL may have X some restrictions */ X 0, /* May be used by driver for whatever */ X "String", /* May be used by driver for whatever */ X X/* The next several variables may be set by the driver, but the main routines X may reset them (and the driver routines may then override that) */ X SANSONS, /* Projection mode */ X FALSE, FALSE, /* Draw grids */ X 0.5, 5.0, /* grid step size */ X 0.0, 0.0, /* grid origin */ X X FALSE, /* Invert (flip north south) */ X}; X X X/* The variables in the first few lines MUST be set by driver */ Xmapwindow thumbmap = { X 480, 195, 420, 35, /* width, height, x and y offsets */ X 3.0+THMADJ, 1.0+THMADJ, 2.05+THMADJ, X /* default limiting mags for glyph, name, label */ X X/* The next several variables SHOULD be set by the driver, X but are only used by the driver */ X THUMBNAIL, /* Type of map: THUMBNAIL may have X some restrictions */ X 0, /* May be used by driver for whatever */ X "String", /* May be used by driver for whatever */ X X/* The next several variables may be set by the driver, but the main routines X may reset them (and the driver routines may then override that) */ X SANSONS, /* Projection mode */ X FALSE, FALSE, /* Draw grids */ X 0.5, 5.0, /* grid step size */ X 0.0, 0.0, /* grid origin */ X X FALSE, /* Invert (flip north south) */ X}; X X/* h & v tick text controls */ Xint htick_lim = 2; Xint htext_lim = 80; Xint htext_xoff = 2; Xint htext_yoff = 17; Xint vtick_lim = 2; Xint vtext_lim = 20; Xint vtext_xoff = 24; Xint vtext_yoff = 0; X X X/* externs for labels */ Xint x_nameoffset = 10, y_nameoffset = 0; Xint x_lbloffset = 0, y_lbloffset = 10; Xint x_magoffset = 7, y_magoffset = -15; X X/* externs for legend: variables of positioning are here */ Xint l_til=220; Xint l_stil=185; X Xint l_lmar1=40; Xint l_lmar2=65; Xint l_ltext=95; Xint l_rmar1=205; Xint l_rmar2=230; Xint l_rtext=260; X Xint l_line1=150; Xint l_line2=125; Xint l_line3=100; Xint l_line4=75; Xint l_line5=50; Xint l_line6=25; X X/* Point sizes for font calls */ Xint titlesize=16; Xint subtlsize=12; Xint namesize=10; Xint lblsize=8; Xint magsize=8; X X/* Fonts for font calls */ Xint namefnt=TIMESROMAN; Xint lblfnt=HELV; Xint magfnt=COURIER; Xint titlefnt=TIMESBOLD; Xint subtlfnt=TIMESROMAN; X X/* Scale multiplier, minimum, X mangitude change, maximum, for thumbnail,*/ Xdouble th_smul=THSMUL; Xdouble th_smin=THSMIN; Xdouble th_madj=THMADJ; Xdouble th_mmax=THMMAX; X X#define MAX(a,b) ((a)>(b)?(a):(b)) X#define MIN(a,b) ((a)<(b)?(a):(b)) X X X/* Device control argument */ XD_control_arg(s) Xchar *s; X{ X int i = 0; X int c; X X while (c = s[i++]) switch (c) { X default: X break; X } X} X X/* Open the device */ XD_open() X{ X openpl(); X space(0, 0, 1024, 1024); X erase(); X X return TRUE ; /* open successful */ X} X X X/* Close the device */ XD_close() X{ X closepl(); X} X X X/* Move to (x, y) */ XD_move(x, y) X int x, y; X{ X move(x, y); X} X Xint cur_sty; X/* Draw a line of style line_style from the current point to (x, y) */ X/* Note, this replaces vecdraw vecdrawdot and vecdrawhyph */ XD_draw(x, y, line_style) X int x, y; X int line_style; /* SOLID, DOTTED, DASHED, etc. */ X{ X int sty; X X switch(cur_function) { X case CHRTOUTLN: X case CHRTHTICK: X case CHRTVTICK: X sty = SOLID; X break; X case GRID_RA: X case GRID_DEC: X sty = DOTTED; X break; X case ECLIPT: X sty = DOTTED; X break; X case CONSTBOUND: X sty = DASHED; X break; X case CONSTPATTRN: X sty = SOLID; X break; X case CONSTNAME: X case CHARTFILE: X default: X sty = line_style; X break; X } X X if (sty == cur_sty) { /* Continue current line, style */ X cont(x,y); X } else { /* Change style */ X switch(sty) { X case SOLID: X linemod("solid"); X break; X case DOTTED: X linemod("dotted"); X break; X case DASHED: X linemod("shortdashed"); X break; X case VECSOLID: X linemod("solid"); X break; X case VECDOT: X linemod("dotted"); X break; X case VECDASH: X linemod("shortdashed"); X break; X default: X linemod("solid"); X break; X } X cur_sty = sty; X cont(x,y); X } X} X/* This routine is encouraged to look at the extern cur_funtion X and change the line style drawn as desired */ X X X/* Move to (x1, y1) then draw a line of style line_style to (x2, y2) */ XD_movedraw(x1, y1, x2, y2, line_style) X int x1, y1, x2, y2; X int line_style; /* SOLID, DOTTED, DASHED, etc. */ X{ X D_move(x1, y1); X D_draw(x2, y2, line_style); X} X X X/* Set the color to be used for lines and text */ X/* color_str is a 2 char (+ '\0') string containing X a specification for a color, X e.g. "G2" for the color of a star of spectral class G2, or "r7" for X red, level seven. The interpretation of the color string is left to X the device driver */ XD_color(color_str) X char *color_str; X{ X switch (color_str[0]) { X case 'O': X break; X case 'B': X break; X case 'A': X break; X case 'F': X break; X case 'G': X break; X case 'K': X break; X case 'M': X break; X case 'R': X case 'N': X case 'S': X break; X case ' ': X default: X break; X } X} X X X/* Set the font and font size to be used for text. */ X/* Note order of args */ XD_fontsize(fsize, font) X int fsize; /* Size of font */ X int font; /* e.g. TIMES, HELV, TIMES+ITALIC */ X{ X} X/* This routine is encouraged to look at the extern cur_funtion X and change the font used as desired */ X X X/* Display text string str at x,y, in current font and font size. X if star_lbl is TRUE, string is a star label, use X greek characters (if possible) */ XD_text(x, y, str, star_lbl) X int x, y; X char *str; X int star_lbl; X{ X move(x, y); X if (star_lbl) { X /* remove leading spaces */ X while (*str == ' ') str++; X /* can't display greek characters */ X } X label(str); X} X X X/* Return input coordinate in device coords where there are pointing devices */ XD_inxy(x, y) X int *x, *y; X{ X} X X X/* Put non-displayed comment in output. Allowed in postscript, but X few other drivers will be able to support this. */ XD_comment(str) X char *str; X{ X/* X fprintf(stderr, "%s\n", str); X*/ X} X X Xdrawlen(x, y, dx, dy, len) X int x, y, dx, dy, len; X{ X D_movedraw(x+dx, y+dy, X x+dx+len, X y+dy, SOLID); X} X X X X X X END_OF_FILE if test 8607 -ne `wc -c <'starchart/staruplot.c'`; then echo shar: \"'starchart/staruplot.c'\" unpacked with wrong size! fi # end of 'starchart/staruplot.c' fi echo shar: End of archive 6 \(of 32\). cp /dev/null ark6isdone 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