
-----------------------------------
Doru Dragan
30 Mai 2008 20:37


-----------------------------------
Programul e adaptat dupa o fotocopie pe care am avut-o a unui articol din revista Ciel et Espace. Liniile nu sunt numerotate. Merge in GWBASIC si TurboBasic. Pe margine sunt si niste comentarii lamuritoare. Daca nu te descurci poti sa mai intrebi. :) Daca gasesti erori sau faci imbunatatiri, m-as bucura sa-mi comunici.

DIM V#(9,9):DEF FNF(X)=60*(X-INT(X)): PI#=4*ATN(1):GR#=PI#/180
DEF FNS(X)=ATN(X/SQR(1-X*X)):DEF FNC(X)=PI#/2-FNS(X)
DEF FNG$(X)=STR$(INT(X))+STR$(INT(FNF(X)))+STR$(INT(FNF(FNF(X))))
DATA MERCUR,.24085,231.2973,77.1442128,.00004253
DATA .2056306,.3870986,7.0043579,48.0941733,.00003244
DATA VENUS,.61521,355.73352,131.289579,.00003757
DATA .0067826,.7233316,.394435,76.4997524,.00002502
DATA TERRA,1.00004,98.83354,102.5964032,0,.016718,1,0,0,0
DATA MARTE,1.88089,126.30783,335.690817,.00005038
DATA .0933865,1.5236883,1.8498011,49.4032001,.00002127
DATA JUPITER,11.86224,146.966365,14.0095493,.00004408
DATA .0484658,5.202561,1.3041819,100.252018,.00002767
DATA SATURN,29.45771,165.322242,92.6653974,.00005362
DATA .0556155,9.554747,2.4893741,113.4888341,.00002391
DATA URANUS,84.01247,228.070855,172.736329,.00004064
DATA .0463232,19.21814,.7729895,73.8768642,.00001365
DATA NEPTUN,164.79558,260.357899,47.8672148,.000039
DATA .0090021,30.10957,1.7716017,131.560649,.00003009
DATA PLUTO,247.686,209.439,222.972,0,.25387,39.78459,17.137,109.941,0
98 FOR P = 1 TO 9: READ P$(P): FOR I = 1 TO 9: READ V#(P, I): NEXT I: NEXT P
100 INPUT "ZI,LUNA,AN:"; Z, L, A: IF L < 3 THEN A = A - 1: L = L + 12
130 J# = INT(365.25 * A) + INT(30.6001 * (L + 1)) + Z + 1720994.5#
140 IF A > 1582 THEN J# = J# - INT(A / 100) + INT(A / 400) + 2
150 NJ# = J# - 2444238.5#                      '  Epoca 1980
200 T# = V#(3, 1): L# = V#(3, 2): S# = V#(3, 3): E# = V#(3, 5): A# = 1: IT = 0: OT = 0
210 GOSUB 700: TL# = I#: RT# = R#                '  Calcul pt. Terra
300 FOR P = 1 TO 9: IF P = 3 THEN 460
302 T# = V#(P, 1): L# = V#(P, 2): S# = V#(P, 3) + NJ# * V#(P, 4): E# = V#(P, 5): A# = V#(P, 6)
304 IP# = GR# * V#(P, 7): OP# = V#(P, 8 ) + NJ# * V#(P, 9)
306 GOSUB 700: PL# = I#: RP# = R#: X# = GR# * (PL# - OP#)'  Calcul pt. planeta
310 HP# = FNS(SIN((PL# - OP#) * GR#) * SIN(IP#))  ' Latitudinea  heliocentrica
320 PL# = ATN(TAN(X#) * COS(IP#))
330 IF COS(X#) < 0 THEN PL# = PL# + PI#
335 IF PL# < 0 THEN PL# = PL# + 2 * PI#
340 PL# = PL# * 180 / PI# + OP#: IF PL# > 360 THEN PL# = PL# - 360 ' Longitudinea heliocentrica
345 RP# = RP# * COS(HP#)                        ' Raza vectoare
347 REM Coordonate ecliptice geocentrice - Longitudine
350 IF P < 3 THEN LE# = ATN(RP# * SIN((TL# - PL#) * GR#) / (RT# - RP# * COS((TL# - PL#) * GR#))) + PI# + TL# * GR#
360 IF P > 3 THEN LE# = ATN(RT# * SIN((PL# - TL#) * GR#) / (RP# - RT# * COS((PL# - TL#) * GR#))) + PL# * GR#
365 REM  Latitudine ecliptica geocentrica
370 LA# = ATN(RP# * TAN(HP#) * SIN((LE# * 180 / PI# - PL#) * GR#) / (RT# * SIN((PL# - TL#) * GR#)))
400 REM Conversie coordonate ecliptice => coordonate ecuatoriale
410 Q# = 23.44133493#: DE# = FNS(SIN(LA#) * COS(Q# * GR#) + COS(LA#) * SIN(Q# * GR#) * SIN(LE#))
420 ZS# = ATN(COS(Q# * GR#) * TAN(LE#) - SIN(Q# * GR#) * TAN(LA#) / COS(LE#))
430 IF COS(LE#) < 0 THEN ZS# = ZS# + PI#
440 IF ZS# < 0 THEN ZS# = ZS# + 2 * PI#
445 DE# = DE# * 180 / PI#: ZS# = ZS# * 12 / PI#
450 PRINT P$(P),"Asc.:";FNG$(ZS#);"  ";"Dec.:";FNG$(DE#)
460 NEXT P
470 END
700 REM   Calculul anomaliei medii si adevarate
710 N#=(360*NJ#)/(365.2422*T#):M#=N#+L#-S#:IF M#<0 THEN M#=M#+360
720 IF M#>360 THEN M#=M#-(360*INT(M#/360))
721 GOTO 740
722 I#=N#+L#+(360*E#*SIN(M#))/PI#:IF I#>360 THEN I#=I#-(360*INT(I#/360))
723 IF V#<0 THEN V#=V#+360
724 V#=I#-S#:GOTO 770
740 M#=M#*GR#:K#=M#
750 FOR W=1 TO 5:K#=M#+E#*SIN(K#):NEXT W
760 V#=SQR((1+E#)/(1-E#))*TAN(K#/2):V#=2*ATN(V#)
770 R#=(A#*(1-E#*E#))/(1+E#*COS(V#)):V#=V#*180/PI#:I#=V#+S#
780 RETURN
