Listado del programa

1 REM CALCULO ECLIPSE SOLAR (MEEUS) #17   SAVE...ESM17
2 PI=3.14159265#:SCREEN 0:WIDTH 80
3 DEF FN AS(X)=ATN(X/SQR(1-X*X))
4 DEF FN AC(X)=-ATN(X/SQR(1-X*X))+PI/2
10 REM LEER FICHERO ECLIPSE.BIN      SAVE...MEEUS6
20 DEFDBL J,M
30 OPEN "R",#1, "ECLIPSE.BIN",117
40 FIELD #1, 2 AS A$,1 AS M$,1 AS D$,1 AS T$,4 AS F$,4 AS G$,8 AS J$,2 AS K$,1 AS S$,1 AS T0$,4 AS X0$,4 AS X1$,4 AS X2$,4 AS X3$,76 AS Z1$
50 FIELD #1, 41 AS Z2$,4 AS Y0$,4 AS Y1$,4 AS Y2$, 4 AS Y3$,4 AS D0$, 4 AS D1$,4 AS D2$,8 AS M0$,8 AS M1$,32 AS Z3$
60 FIELD #1, 85 AS Z4$,4 AS L10$, 4 AS L11$,4 AS L12$,4 AS L20$,4 AS L21$,4 AS L22$,4 AS F1$, 4 AS F2$
70 FOR S=1 TO 6
80 READ TIPO$
90 TP$(S)=TIPO$
100 NEXT S
110 DATA ECLIPSE PARCIAL,ECLIPSE CENTRAL TOTAL,ECLIPSE CENTRAL ANULAR,ECLIPSE ANULAR NO CENTRAL,ECLIPSE TOTAL NO CENTRAL,ECLIPSE ANULAR-TOTAL
120 CLS:PRINT "ELEMENTOS BESSELIANOS DE UN ECLIPSE SOLAR (PERIODO 1951-2200)"
130 PRINT "============================================================="
140 INPUT "NUMERO DEL ECLIPSE EN EL PERIODO (menor que 571)=";NUM
150 IF NUM>570 THEN 120
160 GET #1,NUM
170 PRINT "AÑO=";CVI(A$);"  MES=";ASC(M$)-64;"   DIA=";ASC(D$)-64
180 DT=29.1+.7026*(CVI(A$)-1950)
190 FE$=STR$(ASC(D$)-64)+"-"+STR$(ASC(M$)-64)+"-"+STR$(CVI(A$))
200 PRINT "TIPO=";TP$(ASC(T$)-64);
210 IF ASC(T$)=65 THEN PRINT "  FASE MAX.=";CVS(F$) ELSE PRINT "  "
220 PRINT "GAMMA=";CVS(G$)
230 PRINT
240 PRINT "JDE=";CVD(J$);"   K=";CVI(K$);"   SAROS=";ASC(S$)
250 PRINT "T0=";ASC(T0$)-64
260 T0=ASC(T0$)-64
270 PRINT
280 PRINT "X0=";CVS(X0$);"   X1=";CVS(X1$);"   X2=";CVS(X2$);"   X3=";CVS(X3$)
290 X0=CVS(X0$):X1=CVS(X1$):X2=CVS(X2$):X3=CVS(X3$)
300 PRINT "Y0=";CVS(Y0$);"   Y1=";CVS(Y1$);"   Y2=";CVS(Y2$);"   Y3=";CVS(Y3$)
310 Y0=CVS(Y0$):Y1=CVS(Y1$):Y2=CVS(Y2$):Y3=CVS(Y3$)
320 PRINT
330 PRINT "d0=";CVS(D0$);"    d1=";CVS(D1$);"    d2=";CVS(D2$)
340 D0=CVS(D0$):D1=CVS(D1$):D2=CVS(D2$)
350 PRINT "M0=";CVD(M0$);"    M1=";CVD(M1$)
360 M0=CVD(M0$):M1=CVD(M1$)
370 PRINT
380 PRINT "L10=";CVS(L10$);"   L11=";CVS(L11$);"   L12=";CVS(L12$)
390 L10=CVS(L10$):L11=CVS(L11$):L12=CVS(L12$)
400 PRINT "L20=";CVS(L20$);"   L21=";CVS(L21$);"   L22=";CVS(L22$)
410 L20=CVS(L20$):L21=CVS(L21$):L22=CVS(L22$)
420 PRINT "TAN f1=";CVS(F1$);"   TAN f2=";CVS(F2$)
430 F1=CVS(F1$):F2=CVS(F2$)
432 LOCATE 4,35:PRINT "DIFERENCIA TD Y TU (SEG) =";:PRINT USING "####.##";DT
434 LOCATE 4,35:INPUT "DIFERENCIA TD Y TU (SEG) =";DT
440 LOCATE 21,5:PRINT "Pulse O para otro eclipse"
450 LOCATE 22,5:PRINT "Pulse C para calcular el eclipse"
460 Z$=INKEY$ :IF Z$="" THEN 460
470 IF Z$="c" OR Z$="C" THEN 490 ELSE 120
480 REM CALCULO DEL ECLIPSE SOLAR (2ø metodo para longitudes dadas)
490 CLS:PRINT "ECLIPSE SOLAR DEL  ";FE$
500 PRINT "================================"
510 PRINT "INGRESAR LA LONGITUD GEOGRAFICA A LA QUE SE QUIEREN HALLAR EL ECLIPSE"
520 INPUT "LONGITUD (+W en grados) =";LG
530 T=0:FI=0: REM INICIACION DE LA ITERACION
540 T2=T*T:T3=T2*T
550 X=X0+X1*T+X2*T2+X3*T3
560 Y=Y0+Y1*T+Y2*T2+Y3*T3
570 D=D0+D1*T+D2*T2
580 M=M0+M1*T
590 REM VARIACIONES DIARIAS
600 VX=X1+2*X2*T+3*X3*T2
610 VY=Y1+2*Y2*T+3*Y3*T2
620 H=M-LG-4.17807E-03*DT
630 REM COORDENADAS GEOCENTRICAS
640 FU=ATN(.99664719#*TAN(FI*PI/180))
650 RSIN=.99664719#*SIN(FU)
660 RCOS=COS(FU)
670 REM CALCULOS DE P,Q,R
680 D=D*PI/180:H=H*PI/180
690 P=RCOS*SIN(H)
700 Q=RSIN*COS(D)-RCOS*COS(H)*SIN(D)
710 R=RSIN*SIN(D)+RCOS*COS(H)*COS(D)
720 VP=1.745329E-02*M1*RCOS*COS(H)
730 VQ=1.745329E-02*(M1*P*SIN(D)-R*D1)
740 U=X-P:V=Y-Q
750 A=VX-VP:B=VY-VQ
760 N=SQR(A*A+B*B)
770 TAU=-(U*A+V*B)/(N*N)
780 T=T+TAU
790 REM CORRECCION PARA LA LATITUD
800 CW=(V*A-U*B)/N
810 CQ=(B*SIN(H)*RSIN+A*(COS(H)*SIN(D)*RSIN+COS(D)*RCOS))/(57.29578*N)
820 CFI=CW/CQ
830 FI=FI+CFI
840 IF ABS(TAU)>.000001 THEN 540
850 IF ABS(CFI)<.00001 THEN 855 ELSE 540
855 AN=FI:GOSUB 3450
860 PRINT "LATITUD GEOGRAFICA=";FI;"=";GR;" ø";MI;" '";INT(SG);" ''"
870 TD=T0+T:TU=TD-DT/3600
875 AN=TD:GOSUB 3450
880 PRINT "INSTANTE (TD)=";TD;"=";GR;" h";MI;" m";INT(SG);" s"
885 AN=TU:GOSUB 3450
888 PRINT "INSTANTE (TU)=";TU;"=";GR;" h";MI;" m";INT(SG);" s"
890 W=1/SQR(1-6.694385E-03*COS(D)*COS(D))
900 YP=W*Y
910 IF 1-X*X-YP*YP<0 THEN 1030
920 BT=SQR(1-X*X-YP*YP)
930 L2=L20+L21*T+L22*T2
940 L2P=L2-BT*F2
950 IF L2P>0 THEN TP$="ANULAR"
960 IF L2P<0 THEN TP$="TOTAL"
970 DUR=7200*ABS(L2P)/N
980 PRINT "DURACION DE LA FASE ";TP$;" = ";DUR;" SEG"
990 K=SQR(BT*BT+(X*A+Y*B)*(X*A+Y*B)/(N*N))
1000 ANCH=12756*ABS(L2P)/K
1010 PRINT "ANCHURA DEL CAMINO (KM.)=";ANCH
1020 GOTO 1040
1030 PRINT "NO HAY ECLIPSE CENTRAL A ESTA LONGITUD"
1040 END
3450 REM conversion a sistema sexagesimal
3460 A1=ABS(AN)
3470 GR=SGN(AN)*INT (A1)
3480 MI=INT((A1-INT(A1))*60)
3490 SG=((A1-INT(A1))*60-MI)*60
3500 RETURN


This HTML document was created by GT_HTML 6.0d 16/07/98 12:48.