10
CLS 0
CLEAR : SCREEN 12
PALETTE 4, 63

GOSUB INTRO1: GOSUB INTRO2: GOSUB INTRO3
CLS 0
ON ERROR GOTO 100
GOSUB INITIALIZING
PALETTE 4, 63

15

LOCATE 1, 1: PRINT SPACE$(79): LOCATE 1, 1
INPUT " MENU: [P]osicion [G]rafico [O]rbitas   [Q]uit:"; MENU$
MENU$ = LTRIM$(MENU$)
SELECT CASE MENU$
CASE IS = "P"
GOSUB POSICION
CLS 0
CASE IS = "G"
GOSUB CIELO
CLS 0
CASE IS = "O"
GOSUB SOLAR
CLS 0
CASE IS = "Q"
SYSTEM
CASE ELSE
GOTO 15
END SELECT
GOTO 15
SYSTEM
'-----------------------------------
100 RESUME NEXT



POSICION:
200
GOSUB INITIALIZING
GOSUB DATEINPUT1
DJ# = DJ0#
FOR PLAK = 1 TO 9
GOSUB MAINPGM1: GOSUB MAINPGM2
NEXT PLAK
GOSUB DRAWING
210
LOCATE 28, 1: PRINT SPACE$(79)
LOCATE 28, 5: INPUT "NOVO CALCULO ?  [S/N] "; V$
V$ = LTRIM$(V$)
SELECT CASE V$
CASE "N"
RETURN
CASE "S"
LOCATE 28, 1: PRINT SPACE$(79)
GOTO 200
CASE ELSE
GOTO 210
END SELECT
RETURN
:
CIELO:
50 CLS 0
VIEW (8, 96)-(632, 411), 0, 15
WINDOW (0, 30)-(24, -30)
60
GOSUB DATEINPUT1
GOSUB INTERVALO
GOSUB ELEGIRPLANETA
GOSUB TELA2
FOR j = 0 TO NBR
DJ# = DJ0# + j
LOCATE 2, 1: PRINT SPACE$(19): LOCATE 2, 1: PRINT "DIA =" + STR$(j)
IF PLAN = 99 THEN
ZGK = 1: PLAT = 9
ELSE
ZGK = PLAN: PLAT = PLAN
END IF
FOR PLAK = ZGK TO PLAT
GOSUB MAINPGM1: GOSUB MAINPGM2
GOSUB SELCAPLAN
GOSUB TELA2
NEXT PLAK
NEXT j
LOCATE 2, 17: PRINT "DIA JULIANO FINAL   = " + STR$(DJ#)
300
LOCATE 28, 1: PRINT SPACE$(79)
LOCATE 28, 5: INPUT "NOVO CALCULO ?  [S/N] "; V$
V$ = LTRIM$(V$)
SELECT CASE V$
CASE "N"
RETURN
CASE "S"
310
LOCATE 28, 1: PRINT SPACE$(79)
LOCATE 28, 1: INPUT "APAGA GRAFICO ?  [S/N] "; V2$
V2$ = LTRIM$(V2$)
  SELECT CASE V2$
   CASE "S"
   LOCATE 28, 1: PRINT SPACE$(79): GOTO 50
   CASE "N"
   LOCATE 28, 1: PRINT SPACE$(79): GOTO 60
   CASE ELSE
   GOTO 310
   END SELECT
CASE ELSE
GOTO 300
END SELECT
RETURN
:
SOLAR:
400 CLS 0: FOR Y = 1 TO 9: XPA(Y) = 0: YPA(Y) = 0: NEXT Y
VIEW (4, 4)-(416, 416), 0, 11
GOSUB DATEINPUT2
405 : LOCATE 3, 56: INPUT "NUMERO DIAS  "; NBR
SELECT CASE NBR
CASE IS < 0
LOCATE 3, 56: PRINT SPACE$(24): GOTO 405
END SELECT
LOCATE 5, 54: PRINT "Escala Mar:2/Sat:10/Plu:40"
410 : LOCATE 6, 56: PRINT SPACE$(24)
LOCATE 6, 56: INPUT "Escala [ua] ="; es
SELECT CASE es
CASE IS <= 0, IS >= 45
GOTO 410
END SELECT
WINDOW (-es, es)-(es, -es)
LOCATE 13, 54: PRINT "Desenhando..."
FOR kk = 1 TO 9: LOCATE 13 + kk, 56: PRINT PN$(kk): NEXT kk
FOR G# = 0 TO NBR
DJ# = DJ0# + G#
LOCATE 4, 56: PRINT SPACE$(24)
LOCATE 4, 56: PRINT "DIA = " + STR$(G#)
CIRCLE (0, 0), .1, 14: PAINT (0, 0), 14
FOR PLAK = 1 TO 9
GOSUB MAINPGM1
LINE (0, 0)-(45, 0), 1: LOCATE 14, 52: PRINT CHR$(231)
CIRCLE (XPA(PLAK), YPA(PLAK)), .03, 11
PAINT (XPA(PLAK), YPA(PLAK)), 11
CIRCLE (XP(PLAK), YP(PLAK)), .03, 4
PAINT (XP(PLAK), YP(PLAK)), 4
XPA(PLAK) = XP(PLAK): YPA(PLAK) = YP(PLAK)
NEXT PLAK
LOCATE 8, 54: PRINT "DJ FINAL   = "; DJ#
NEXT G#
420
LOCATE 24, 56: PRINT SPACE$(17)
LOCATE 24, 54: INPUT "NOVO CALCULO [S/N]"; CNT$
CNT$ = LTRIM$(CNT$)
SELECT CASE CNT$
CASE "N"
RETURN
CASE "S"
GOTO 400
CASE ELSE
GOTO 420
END SELECT
RETURN




INITIALIZING:
CONST PI = 3.1415926536#: DR = PI / 180: EK = 23.45 * DR: k# = 2 * PI / 365.25636#
REM ARGUMENTS OF PERIHELION-INCLINATION-LONG ASC NODE-EXCENTR-MAJOR AXIS
RESTORE 11008: FOR I = 1 TO 9: READ AP#(I): AP#(I) = AP#(I) * DR: NEXT I
RESTORE 11010: FOR I = 1 TO 9: READ IN#(I): IN#(I) = IN#(I) * DR: NEXT I
RESTORE 11012: FOR I = 1 TO 9: READ LN#(I): LN#(I) = LN#(I) * DR: NEXT I
RESTORE 11014: FOR I = 1 TO 9: READ EX#(I): NEXT I
RESTORE 11016: FOR I = 1 TO 9: READ SA#(I): NEXT I
RESTORE 11018: FOR I = 1 TO 9: READ JP#(I): NEXT I
FOR I = 1 TO 9
C(I, 1) = COS(AP#(I)) * COS(LN#(I)) - SIN(AP#(I)) * COS(IN#(I)) * SIN(LN#(I))
C(I, 2) = -SIN(AP#(I)) * COS(LN#(I)) - COS(AP#(I)) * COS(IN#(I)) * SIN(LN#(I))
C(I, 3) = COS(AP#(I)) * SIN(LN#(I)) + SIN(AP#(I)) * COS(IN#(I)) * COS(LN#(I))
C(I, 4) = -SIN(AP#(I)) * SIN(LN#(I)) + COS(AP#(I)) * COS(IN#(I)) * COS(LN#(I))
C(I, 5) = SIN(AP#(I)) * SIN(IN#(I))
C(I, 6) = COS(AP#(I)) * SIN(IN#(I))
N(I) = k# * SA#(I) ^ -1.5
NEXT I
PN$(1) = "MER ": PN$(2) = "VEN ": PN$(3) = "TER "
PN$(4) = "MAR ": PN$(5) = "JUP ": PN$(6) = "SAT "
PN$(7) = "URA": PN$(8) = "NEP": PN$(9) = "PLU"
RETURN
:
DATEINPUT1:
LOCATE 1, 1: PRINT SPACE$(79): LOCATE 2, 1: PRINT SPACE$(79): LOCATE 3, 1: PRINT SPACE$(79)
LOCATE 4, 1: PRINT SPACE$(79)
600 : LOCATE 1, 1: INPUT "DAY     [DD]  = "; DD
SELECT CASE DD
CASE IS <= 0, IS > 31
LOCATE 1, 1: PRINT SPACE$(79)
GOTO 600
END SELECT
610 : LOCATE 2, 1: INPUT "MONTH   [MM]  = "; MM
SELECT CASE MM
CASE IS <= 0, IS > 12
LOCATE 2, 1: PRINT SPACE$(79)
GOTO 610
END SELECT
620 : LOCATE 3, 1: INPUT "YEAR  [YYYY]  = "; YY
SELECT CASE YY
CASE IS < 1998
LOCATE 3, 1: PRINT SPACE$(79)
GOTO 620
END SELECT
LOCATE 1, 1: PRINT SPACE$(30): LOCATE 2, 1: PRINT SPACE$(30): LOCATE 3, 1: PRINT SPACE$(30)
GOSUB DIAJULIANO
LOCATE 1, 1: PRINT DD; "/"; MM; "/"; YY; "  DJ INICIAL = "; DJ0#
RETURN
:
DATEINPUT2:
LOCATE 1, 56: PRINT SPACE$(24): LOCATE 2, 56: PRINT SPACE$(24)
LOCATE 3, 56: PRINT SPACE$(24): LOCATE 4, 56: PRINT SPACE$(24)
LOCATE 5, 56: PRINT SPACE$(24)
LOCATE 1, 56: PRINT "DATA DE INICIO"
700 : LOCATE 2, 56: INPUT "DIA     [DD]  = "; DD
SELECT CASE DD
CASE IS <= 0, IS > 31
LOCATE 2, 56: PRINT SPACE$(24)
GOTO 700
END SELECT
710 : LOCATE 3, 56: INPUT "MES     [MM]  = "; MM
SELECT CASE MM
CASE IS <= 0, IS > 12
LOCATE 3, 56: PRINT SPACE$(24)
GOTO 710
END SELECT
720 : LOCATE 4, 56: INPUT "ANO   [YYYY]  = "; YY
SELECT CASE YY
CASE IS < 1998
LOCATE 4, 56: PRINT SPACE$(24)
GOTO 720
END SELECT
LOCATE 1, 56: PRINT SPACE$(24): LOCATE 2, 56: PRINT SPACE$(24)
LOCATE 3, 56: PRINT SPACE$(24): LOCATE 4, 56: PRINT SPACE$(24)
LOCATE 5, 56: PRINT SPACE$(24)
LOCATE 1, 56: PRINT "DATA"; DD; "/"; MM; "/"; YY
GOSUB DIAJULIANO
LOCATE 2, 54: PRINT "DJ INICIAL = "; DJ0#
RETURN
:
INTERVALO:
750 : LOCATE 2, 20: INPUT "NUMERO DE DIAS"; NBR
SELECT CASE NBR
CASE IS < 0
LOCATE 2, 20: PRINT SPACE$(60): GOTO 750
END SELECT
LOCATE 1, 50: PRINT "GRAFICO PARA " + STR$(NBR) + "  DIAS"
RETURN
:
DIAJULIANO:
IF MM = 1 OR MM = 2 THEN
MMJ = MM + 13: AAJ = YY - 1
END IF
IF MM >= 3 THEN
MMJ = MM + 1: AAJ = YY
END IF
DJ0# = 1720982 + INT(365.25 * AAJ) + INT(30.6001 * MMJ) + DD - .5
RETURN
:
MAINPGM1:
'CALCULO POSICION EN LA ORBITA
'COORDENADAS HELIOCENTRICAS ORBITALES POLARES
M(3) = N(3) * (DJ# - JP#(3))
M = M(3): SA = SA#(3): EX = EX#(3)
GOSUB ANOMALY
RV#(3) = RV: AV#(3) = AV
'COORDENADAS HELIOCENTRICAS ORBITALES RECTANGULARES
X(3) = RV#(3) * COS(AV#(3))
Y(3) = RV#(3) * SIN(AV#(3))
Z(3) = 0
'COORDENADAS HELIOCENTRICAS ECLIPTICAS RECTANGULARES
XP(3) = C(3, 1) * X(3) + C(3, 2) * Y(3)
YP(3) = C(3, 3) * X(3) + C(3, 4) * Y(3)
ZP(3) = C(3, 5) * X(3) + C(3, 6) * Y(3)
M(PLAK) = N(PLAK) * (DJ# - JP#(PLAK))
M = M(PLAK): SA = SA#(PLAK): EX = EX#(PLAK)
GOSUB ANOMALY
RV#(PLAK) = RV: AV#(PLAK) = AV
'COORDENADAS HELIOCENTRICAS ORBITALES RECTANGULARES
X(PLAK) = RV#(PLAK) * COS(AV#(PLAK))
Y(PLAK) = RV#(PLAK) * SIN(AV#(PLAK))
Z(PLAK) = 0
'COORDENADAS HELIOCENTRICAS ECLIPTICAS RECTANGULARES
XP(PLAK) = C(PLAK, 1) * X(PLAK) + C(PLAK, 2) * Y(PLAK)
YP(PLAK) = C(PLAK, 3) * X(PLAK) + C(PLAK, 4) * Y(PLAK)
ZP(PLAK) = C(PLAK, 5) * X(PLAK) + C(PLAK, 6) * Y(PLAK)
RETURN
:
MAINPGM2:
'COORDENADAS HELIOCENTRICAS ECLIPTICAS ESFERICAS POLARES
RS(PLAK) = SQR(XP(PLAK) ^ 2 + YP(PLAK) ^ 2 + ZP(PLAK) ^ 2)
L0 = XP(PLAK) / RS(PLAK)
M0 = YP(PLAK) / RS(PLAK)
N0 = ZP(PLAK) / RS(PLAK)
GOSUB RADEC
LONH(PLAK) = RA * 15: LATH(PLAK) = DK
RS$(PLAK) = STR$(RS(PLAK))
IF RS(PLAK) >= 10 THEN
RS$(PLAK) = LTRIM$(RS$(PLAK))
END IF
NN = LONH(PLAK): GOSUB OUTLINE: LONH$(PLAK) = KD$
NN = LATH(PLAK): GOSUB OUTLINE: LATH$(PLAK) = KD$
'COORDENADAS GEOCENTRICAS ECLIPTICAS RECTANGULARES
XL(PLAK) = XP(PLAK) - XP(3)
YL(PLAK) = YP(PLAK) - YP(3)
ZL(PLAK) = ZP(PLAK) - ZP(3)
'COORDENADAS GEOCENTRICAS ECUATORIALES RECTANGULARES
XQ(PLAK) = XL(PLAK)
YQ(PLAK) = COS(EK) * YL(PLAK) - SIN(EK) * ZL(PLAK)
ZQ(PLAK) = SIN(EK) * YL(PLAK) + COS(EK) * ZL(PLAK)
'COORDENADAS GEOCENTRICAS ECUATORIALES ESFERICAS-ascencion recta y declinacion
RP(PLAK) = SQR(XQ(PLAK) ^ 2 + YQ(PLAK) ^ 2 + ZQ(PLAK) ^ 2)
LQ(PLAK) = XQ(PLAK) / RP(PLAK)
MQ(PLAK) = YQ(PLAK) / RP(PLAK)
NQ(PLAK) = ZQ(PLAK) / RP(PLAK)
L0 = LQ(PLAK)
M0 = MQ(PLAK)
N0 = NQ(PLAK)
GOSUB RADEC
RA(PLAK) = RA
DK(PLAK) = DK
RP$(PLAK) = STR$(RP(PLAK))
IF RP(PLAK) >= 10 THEN
RP$(PLAK) = LTRIM$(RP$(PLAK))
END IF
NN = RA: GOSUB OUTLINE: RA$(PLAK) = KD$
NN = DK: GOSUB OUTLINE: DK$(PLAK) = KD$
RETURN
:
ANOMALY:
IF M >= 2 * PI THEN
AM = M - 2 * PI * FIX(M / (2 * PI))
ELSE
AM = M
END IF
:
E1 = AM
DO
E = E1
E1 = AM + EX * SIN(E)
LOOP UNTIL ABS(E1 - E) < .000001
CAV = (COS(E1) - EX) / (1 - EX * COS(E1))
SAV = SQR(1 - EX ^ 2) * SIN(E1) / (1 - EX * COS(E1))
TAV = SAV / CAV
AT = ATN(TAV)
IF SAV >= 0 AND CAV >= 0 THEN
AV = AT
END IF
IF SAV >= 0 AND CAV < 0 THEN
AV = PI + AT
END IF
IF SAV < 0 AND CAV <= 0 THEN
AV = PI + AT
END IF
IF SAV < O AND CAV > 0 THEN
AV = 2 * PI + AT
END IF
RV = SA * (1 - EX * COS(E1))
RETURN
:
RADEC:
DK = (1 / DR) * ATN(N0 / SQR(1 - N0 ^ 2))
IF L0 = 0 THEN
SELECT CASE M0
CASE M0 > 0
RAK = 90: GOTO 16012
CASE M0 < 0
RAK = 270: GOTO 16012
END SELECT
ELSE
AR = ATN(M0 / L0) / DR
END IF
:
IF L0 > 0 AND M0 > 0 THEN
RAK = AR: GOTO 16012
END IF
IF L0 > 0 AND M0 < 0 THEN
RAK = 360 + AR: GOTO 16012
END IF
IF L0 < 0 AND M0 < 0 THEN
RAK = 180 + AR: GOTO 16012
END IF
IF L0 < 0 AND M0 > 0 THEN
RAK = 180 + AR
END IF
16012 RA = RAK / 15
RETURN
:
OUTLINE:
K9 = ABS(FIX(NN))
K7 = 60 * (ABS(NN) - K9)
K8 = FIX(K7)
K6 = FIX(10 * (K7 - K8))

K9$ = LTRIM$(STR$(K9))
K8$ = LTRIM$(STR$(K8) + "." + LTRIM$(STR$(K6)))
SK = SGN(NN)
SELECT CASE SK
CASE IS > 0
SS$ = "+"
CASE IS = 0
SS$ = " "
CASE IS < 0
SS$ = "-"
END SELECT
:
SP = LEN(K9$)
SELECT CASE SP
CASE IS = 3
K9$ = SS$ + K9$
CASE IS = 2
K9$ = SS$ + " " + K9$
CASE IS = 1
K9$ = SS$ + "  " + K9$
END SELECT
:
IF K8 < 10 THEN
K8$ = " " + K8$
END IF
:
KD$ = K9$ + " " + K8$
RETURN
:
TELA2:
FOR G = 0 TO 24
IF G = 12 THEN
COR = 7
ELSE
COR = 8
END IF
LINE (G, 45)-(G, -45), COR
NEXT G
FOR G = -40 TO 40 STEP 10
IF G = 0 THEN
COR = 7
ELSE
COR = 8
END IF
LINE (0, G)-(24, G), COR
NEXT G
LOCATE 27, 2: PRINT "0h  AR": LOCATE 27, 40: PRINT "12h": LOCATE 27, 78: PRINT "24h"
LOCATE 7, 1: PRINT "30" + CHR$(248) + "Decl"
LOCATE 25, 1: PRINT "-30" + CHR$(248)
RETURN
:
TELA1:
LOCATE 4, 1: PRINT "Codigo Cores:"
LOCATE 4, 15: COLOR 11: PRINT "Mer": LOCATE 4, 19: COLOR 15: PRINT "Ven"
LOCATE 4, 23: COLOR 4: PRINT "Mar": LOCATE 4, 27: COLOR 9: PRINT "Jup"
LOCATE 4, 31: COLOR 14: PRINT "Sat": LOCATE 4, 35: COLOR 2: PRINT "Ura"
LOCATE 4, 39: COLOR 5: PRINT "Nep": LOCATE 4, 43: COLOR 8: PRINT "Plu"
COLOR 15
RETURN
:
ELEGIRPLANETA:
500
LOCATE 3, 1: PRINT SPACE$(79): LOCATE 3, 1
INPUT "QUAL PLANETA ?(MMer,Ven,Mar,Jup,Sat,Ura,Nep,Plu,Todos)"; PLA$
PLA$ = LTRIM$(PLA$)
SELECT CASE PLA$
CASE IS = "MM"
PLAN = 1
CASE IS = "V"
PLAN = 2
CASE IS = "M"
PLAN = 4
CASE IS = "J"
PLAN = 5
CASE IS = "S"
PLAN = 6
CASE IS = "U"
PLAN = 7
CASE IS = "N"
PLAN = 8
CASE IS = "P"
PLAN = 9
CASE IS = "T"
PLAN = 99
CASE ELSE
GOTO 500
END SELECT
GOSUB TELA1
RETURN
:
SELCAPLAN:
CORPLAN(1) = 11: CORPLAN(2) = 15: CORPLAN(4) = 4: CORPLAN(5) = 9
CORPLAN(6) = 14: CORPLAN(7) = 2: CORPLAN(8) = 5: CORPLAN(9) = 8
SELECT CASE PLA$
CASE IS = "T"
FOR hh = 1 TO 9
PSET (RA(hh), DK(hh)), CORPLAN(hh)
NEXT hh
CASE ELSE
PSET (RA(PLAK), DK(PLAK)), CORPLAN(PLAK)
END SELECT
RETURN
:
DRAWING:
LOCATE 1, 1: PRINT DD; "/"; MM; "/"; YY; "  DIA JULIANO = "; DJ0#
TITULO0$ = "VALORES GEOCENTRICOS"
TITULO00$ = "VALORES HELIOCENTRICOS"
TITULO1$ = "PLANETA  "
TITULO2$ = " AR [h m]" + "   DECL " + "[" + CHR$(248) + " '" + "]"
TITULO2$ = TITULO2$ + "   DIST[ua]  "
TITULO3$ = " LONG " + "[" + CHR$(248) + " '" + "]"
TITULO3$ = TITULO3$ + "  LAT " + "[" + CHR$(248) + " '" + "]"
TITULO3$ = TITULO3$ + "  DIST[ua]"
LOCATE 6, 15: COLOR 11: PRINT TITULO0$: LOCATE 6, 50: COLOR 14: PRINT TITULO00$
LOCATE 7, 2: COLOR 15: PRINT TITULO1$
LOCATE 7, 10: COLOR 11: PRINT TITULO2$
LOCATE 7, 46: COLOR 14: PRINT TITULO3$
FOR I = 1 TO 9
COLOR 15: LOCATE 7 + I, 4: PRINT PN$(I)
COLOR 11
LOCATE 7 + I, 10: PRINT RA$(I)
LOCATE 7 + I, 22: PRINT DK$(I)
LOCATE 7 + I, 34: PRINT RP$(I)
COLOR 14
LOCATE 7 + I, 46: PRINT LONH$(I)
LOCATE 7 + I, 57: PRINT LATH$(I)
LOCATE 7 + I, 68: PRINT RS$(I)
NEXT I
COLOR 15
RETURN
:
'redshift2 values
11007 'ARGUMENTS OS PERIHELION -AP- IN DEGREES
11008 DATA 29.1127778,54.5597222,102.5963889,286.415,274.4747222,334.64111111,100.5275,241.1038889,114.3166667
11009 'ORBIT INCLINATION -IN- IN DEGREES
11010 DATA 7.005,3.39472222,0,1.8497222,1.3047222,2.4852778,0.7733333,1.7675,17.1269444
11011 'LONGITUDE OF ASCENDING NODE -LN- IN DEGREES
11012 DATA 48.3080556,76.6636111,0,49.5427778,100.4613889,113.6166667,74.0730556,131.7791667,110.3397222
11013 'ORBIT EXCENTRICITY
11014 DATA 0.205650,0.006824,0.0172,0.093426,0.049282,0.053860,0.042739,0.010691,0.248591
11015 'ORBIT MAJOR AXIS -SA- IN ASTRONOMICAL UNITS
11016 DATA 0.387096,0.723352,1.000798,1.523714,5.207972,9.577868,19.296616,30.252611,39.534723
11017 'LAST PERIHELION JULIAN DATE -JP- IN JULIAN DAYS
11018 DATA 2450797.5312,2450613.6959,2450450.8547,2450132.9594,2446969.0125,2441878.9985,2439656.3974,2401820.168,2447897.1777
:
INTRO1:
PRINT
PRINT : COLOR 14
PRINT "                       P   L   A   N   E   T   A   S"
PRINT
PRINT : COLOR 15
PRINT
PRINT "            Um programa astronomico de Andres Esteban de la Plaza"
PRINT
PRINT "                     Rio de Janeiro ----- Marzo de 1998"
PRINT
PRINT
VIEW (200, 180)-(400, 380), 0, 4
WINDOW (-100, 100)-(100, -100)
CIRCLE (0, 0), 50, 4
FOR JKG = 0 TO 360 STEP 10
JKR = JKG * 3.1416 / 180: V = 100 * COS(JKR): U = 100 * SIN(JKR)
LINE (0, 0)-(V, U), 14
NEXT JKG
FOR JKG = 10 TO 100 STEP 10
CIRCLE (0, 0), JKG, 4
NEXT JKG
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT
PRINT "Pressione uma tecla para continuar..."
DO
LOOP UNTIL INKEY$ <> ""
RETURN
INTRO2:
PRINT "Em 1991 comecei a interessar-me pelo problema da determinacao das trajetorias"
PRINT "dos corpos celestes por causa de uma artigo publicado na revista SKY & TELES-"
PRINT "COPE de maio de 1989 na coluna Astronomical Computing. O titulo do artigo em "
PRINT "questao era 'The Double Polestar of the Past' e tratava do aspecto do ceu em"
PRINT "epocas remotas, principalmente sobre quais as estrelas que no passado cumpri"
PRINT "ram a funcao de estrela polar... O artigo trazia um pequeno listado em Basic "
PRINT "para calcular os efeitos da precessao e os movimentos proprios das estrelas."
PRINT "Apos estuda-lo resolvi incrementar o mesmo e procedi a verificacao de algumas"
PRINT "estrelas do hemisferio sul; porem na epoca tive que fazer os calculos apenas"
PRINT "empregando minha calculadora programavel HP 28S que possui apenas 32 Kbytes."
PRINT "Fiz alguns graficos e mandei-os pelo correio ao endereco do autor do artigo"
PRINT "na Alemanha. Afortunadamente o Andreas (o autor) verificou meus dados..."
PRINT "Tempo depois numa Livraria Pagina Ltda. na rua das Marrecas no centro do Rio"
PRINT "achei um livro russo em espanhol titulado 'Problemas y Ejercicios Practicos"
PRINT "de Astronomia, da conhecida editorial MIR. Este excelente livro me forneceu"
PRINT "algumas formulas para comecar entretanto, nao figuravam neste os procedimen-"
PRINT "tos de resolucao das equacoes diferenciais que governam a mecanica celeste."
PRINT "Principalmente a resolucao da equacao:"
PRINT
PRINT "        F = -GMm/r" + CHR$(253)
PRINT
PRINT "Assim sendo, tive que me sentar e resolver esta equacao diferencial ate chegar"
PRINT "a formulas conhecidas de calculo a partir das quais poderia implementar alguns"
PRINT "algoritmos para que o computador pudesse dar valores numericos. E obvio que a"
PRINT "resolucao da equacao mencionada nao e nada facil, porem os algoritmos sao muito"
PRINT "simples."
PRINT
PRINT "Pressione uma tecla para continuar..."
DO
LOOP UNTIL INKEY$ <> ""
RETURN
INTRO3:
PRINT "Este programa resultou da implementacao de tais conceitos..."
PRINT "-------------------------------------------------------------------------------"
PRINT "Basicamente o programa compoe-se de tres modulos, apresentados em forma de menu:"
PRINT
PRINT " POSICION          GRAFICO        ORBITAS     "
PRINT
PRINT "A opcao POSICION retorna a posicao dos nove planetas do sistema solar para uma"
PRINT "data determinada, fornecida como dia/mes/ano. A posicao do planeta no espaco"
PRINT "e dada em dois sistemas de coordenadas diferentes:as equatoriais geocentricas e"
PRINT "as eclipticas heliocentricas, ou seja:"
PRINT
PRINT "Equatoriais Geocentricas -> AR / Dec =Ascencao Reta[hrs min]/ Declinacao [graus]"
PRINT "Eclipticas Heliocentricas -> LONG / LAT = Longitude e Latitude, ambas em [graus]"
PRINT
PRINT
PRINT "A opcao GRAFICO permite desenhar no mapa do ceu, entre 0 e 24 hrs de AR e -35 a"
PRINT "35 graus de declinacao, as trajetorias dos planetas em forma individual ou con-"
PRINT "junta, para um certo numero de dias. O computo da posicao e diaria."
PRINT
PRINT
PRINT "A opacao ORBITAS permite visualizar o movimento e posicao dos planetas do sis-"
PRINT "tema solar desde o lado norte do mesmo, para um certo numero de dias."
PRINT "A escala de visualizacao pode ser mudada pelo usuario para observar melhor os"
PRINT "planetas do sistema solar interior (Mercurio/Venus/Terra/Marte)."
PRINT
PRINT
PRINT
PRINT
PRINT "Pressione uma tecla para INICIAR O MENU..."
DO
LOOP UNTIL INKEY$ <> ""
RETURN

