10 REM "analŠme":'29/07/94 20 DIM N(17): DIM B$(8): DIM DIAM(8): DIM sem$(7): DIM sem1$(7) 21 N(1) = 0: N(2) = 31: N(3) = 59: N(4) = 90: N(5) = 120: N(6) = 151 22 N(7) = 181: N(8) = 212: N(9) = 243: N(10) = 273: N(11) = 304: N(12) = 334 23 N(13) = 365: N(14) = 396: N(15) = 424: N(16) = 455: N(17) = 484 24 B$(1) = "MERCURE": B$(2) = "VENUS": B$(3) = "MARS": B$(4) = "JUPITER" 25 B$(5) = "SATURNE": B$(6) = "URANUS": B$(7) = "NEPTUNE": B$(8) = "PLUTON" 26 DIAMS = 1390000: DIAML = 3475: DIAM(1) = 4878: DIAM(2) = 12104 27 DIAM(3) = 6794: DIAM(4) = 142880: DIAM(5) = 120000: DIAM(6) = 50800 28 DIAM(7) = 48600: DIAM(8) = 3500 29 sem$(1) = "LUNDI ": sem$(2) = "MARDI ": sem$(3) = "MERCREDI" 30 sem$(4) = "JEUDI ": sem$(5) = "VENDREDI": sem$(6) = "SAMEDI " 31 sem$(7) = "DIMANCHE": sem$(0) = "DIMANCHE" 32 DIM ANV0(8): DIM LLO0(8): DIM azim0(8): DIM DIST0(8): DIM LOG0(8): DIM LGS0(8) 35 DIM ANV35(8): DIM LLO35(8): DIM AZIM35(8): DIM DIST35(8): DIM LOG35(8): DIM LGS35(8) 36 DIM ANV7(8): DIM LLO7(8): DIM azim7(8): DIM DIST7(8): DIM LOG7(8): DIM LGS7(8) 37 DIM distl0(8): DIM lol0(8): DIM aziml0(8) 38 DIM losl0(8): DIM lnl0(8) 39 DIM DISTL05(8): DIM LOL05(8): DIM AZIML05(8) 40 DIM LOSL05(8): DIM LNL05(8): GOSUB 200 41 ts0 = 100.58805#: PI = 4 * ATN(1): K = 180 / PI 42 DEF FNASN (X) = ATN(X / SQR(1 - X * X)) 43 DEF FNACS (X) = ATN(SQR(1 - X * X) / X) 49 CLS : PRINT "premier jour de calcul" 50 INPUT "date : jour(jj) "; JJ: JJ = JJ - 1 60 INPUT " mois(mm) "; mm 70 INPUT " ann‚e(aaaa) "; AN 80 hh = 0: 'INPUT "heure TU : hh"; hh 90 mi = 0: 'INPUT " mi"; mi 91 ss = 0: 'INPUT " ss"; ss 92 JJ0 = 367 * AN - INT(1.75 * AN) - INT(.75 * (1 + INT((AN - 1) * .01))) + INT(275 / 9) + 1 + 1721028.5# 101 'PRINT "-1- LUNDI" 102 'PRINT "-2- MARDI" 103 'PRINT "-3- MERCREDI" 104 'PRINT "-4- JEUDI" 105 'PRINT "-5- VENDREDI" 106 'PRINT "-6- SAMEDI" 107 'PRINT "-7- DIMANCHE" 108 'INPUT "quel est le jour du premier janvier de l'ann‚e ?"; jo 109 'FOR i = 1 TO 7 110 'sem1$(i) = sem$(((jo - 1 + i) / 7 - INT((jo - 1 + i) / 7)) * 7): NEXT i 111 'sem1$(0) = sem1$(7) 112 ld = -2: mn = 20: se = 0: lad = 48: lam = 50: las = 0: PRINT USING "longitude : ##d##m##s latitude ##d##m##s"; ld; mn; se; lad; lam; las 113 INPUT "changement de longitude et latitude oui=1 non=0"; quest 114 IF quest <> 1 THEN GOTO 140 115 PRINT "longitude positive vers l'OUEST": INPUT "longitude dd"; ld 120 INPUT " mn"; mn 130 INPUT " ss"; se 131 INPUT "latitude dd"; lad 132 INPUT " mn"; lam 133 INPUT " ss"; las 140 G = (ABS(ld) + mn / 60 + se / 3600) * PI / 180 141 IF ld < 0 THEN G = -1 * G 142 l = (ABS(lad) + lam / 60 + las / 3600) * PI / 180 143 IF lad < 0 THEN l = -1 * l 150 J0 = JJ: M0 = mm 151 CLS : SCREEN 12: LINE (0, 150)-(400, 150): LINE (200, 0)-(200, 300): PREM = -1 152 LINE (195, 150 - 23.5 * 6)-(205, 150 - 23.5 * 6): LINE (195, 150 + 23.5 * 6)-(205, 150 + 23.5 * 6) 160 J0 = J0 + 1: PREM = PREM + 1: GOSUB 1320: GOTO 1570 200 DIM COTAN(32): DIM COTMO(14): DIM COTJO(31): DIM CORAN(32): DIM CORMO(14): DIM CORJO(31): DIM COR(18) 210 COTAN(1) = 179.32: COTAN(2) = 308.95: COTAN(3) = 78.57: COTAN(4) = 220.39: COTAN(5) = 350.01 220 COTAN(6) = 119.63: COTAN(7) = 249.26: COTAN(8) = 31.07: COTAN(9) = 160.69: COTAN(10) = 290.32 230 COTAN(11) = 59.94: COTAN(12) = 201.76: COTAN(13) = 331.38: COTAN(14) = 101.01: COTAN(15) = 230.63 240 COTAN(16) = 12.44: COTAN(17) = 142.07: COTAN(18) = 271.69: COTAN(19) = 41.31: COTAN(20) = 183.13 250 COTAN(21) = 312.75: COTAN(22) = 82.38: COTAN(23) = 212: COTAN(24) = 353.81: COTAN(25) = 123.44 260 COTAN(26) = 253.06: COTAN(27) = 22.68: COTAN(28) = 164.5: COTAN(29) = 294.12: COTAN(30) = 63.75 270 COTAN(31) = 193.37: COTAN(32) = 335.18 280 COTMO(1) = 0: COTMO(2) = 17.91: COTMO(3) = 359.25: COTMO(4) = 17.17: COTMO(5) = 22.89 290 COTMO(6) = 40.8: COTMO(7) = 46.53: COTMO(8) = 64.44: COTMO(9) = 82.35: COTMO(10) = 88.07 300 COTMO(11) = 105.99: COTMO(12) = 111.71: COTMO(13) = 347.81: COTMO(14) = 5.72 310 COTJO(1) = 12.19: COTJO(2) = 24.38: COTJO(3) = 36.57: COTJO(4) = 48.76 320 COTJO(5) = 60.95: COTJO(6) = 73.14: COTJO(7) = 85.34: COTJO(8) = 97.53 330 COTJO(9) = 109.72: COTJO(10) = 121.91: COTJO(11) = 134.1: COTJO(12) = 146.29 340 COTJO(13) = 158.48: COTJO(14) = 170.67: COTJO(15) = 182.86: COTJO(16) = 195.05 350 COTJO(17) = 207.24: COTJO(18) = 219.43: COTJO(19) = 231.62: COTJO(20) = 243.81 360 COTJO(21) = 256.01: COTJO(22) = 268.2: COTJO(23) = 280.39: COTJO(24) = 292.58 370 COTJO(25) = 304.77: COTJO(26) = 316.96: COTJO(27) = 329.15: COTJO(28) = 341.34 380 COTJO(29) = 353.53: COTJO(30) = 5.72: COTJO(31) = 17.91 390 CORAN(1) = .9: CORAN(2) = .7: CORAN(3) = .4: CORAN(4) = 1.1 400 CORAN(5) = .9: CORAN(6) = .6: CORAN(7) = .4: CORAN(8) = 1.1 410 CORAN(9) = .8: CORAN(10) = .6: CORAN(11) = .3: CORAN(12) = 1 420 CORAN(13) = .7: CORAN(14) = .5: CORAN(15) = .2: CORAN(16) = 1 430 CORAN(17) = .7: CORAN(18) = .5: CORAN(19) = .2: CORAN(20) = .9 440 CORAN(21) = .7: CORAN(22) = .4: CORAN(23) = .2: CORAN(24) = .9 450 CORAN(25) = .6: CORAN(26) = .4: CORAN(27) = .1: CORAN(28) = .8 460 CORAN(29) = .6: CORAN(30) = .3: CORAN(31) = .1: CORAN(32) = .8 470 CORMO(1) = 356: CORMO(2) = 26.6: CORMO(3) = 54.2: CORMO(4) = 84.7 480 CORMO(5) = 114.3: CORMO(6) = 144.8: CORMO(7) = 174.4: CORMO(8) = 204.9 490 CORMO(9) = 82.35: CORMO(10) = 265.1: CORMO(11) = 295.6: CORMO(12) = 325.2 500 CORMO(13) = 355: CORMO(14) = 25.6 510 FOR Y = 1 TO 31: CORJO(Y) = Y * .9871: NEXT Y 520 COR(0) = 0: COR(1) = -.4: COR(2) = -.7: COR(3) = -1: COR(4) = -1.3 530 COR(5) = -1.5: COR(6) = -1.7: COR(7) = -1.8: COR(8) = -1.9: COR(10) = -1.9 540 COR(11) = -1.8: COR(12) = -1.6: COR(13) = -1.5: COR(14) = -1.2: COR(15) = -1 550 COR(16) = -.6: COR(17) = -.3: COR(18) = 0 600 RETURN 1300 ' 1310 'CALCUL DE J2, T et TSL 1315 ' 1320 TEST = 0: IF J0 < 0 THEN M0 = M0 - 1: J0 = N(M0 + 1) - N(M0) + J0 1330 IF J0 = 1 AND M0 = 1 THEN GOTO 1451 1340 IF M0 > 2 THEN TEST = 1 1350 J2 = N(M0) + J0 1360 IF J2 < N(M0 + 1) THEN GOTO 1380 1370 M0 = M0 + 1: J0 = J2 - N(M0): GOTO 1360 1380 IF M0 <= 2 OR TEST = 1 THEN GOTO 1440 1390 AA = AN / 4 - INT(AN / 4) 1400 IF AA <> 0 THEN GOTO 1440 1410 aaa = AN / 100 - INT(AN / 100): aaaa = AN / 400 - INT(AN / 400) 1420 IF aaa = 0 AND aaaa <> 0 THEN GOTO 1440 1430 J0 = J0 - 1: TEST = 1 1440 IF J0 = 0 THEN M0 = M0 - 1: J0 = J2 - N(M0) 1450 IF J0 = -1 THEN J0 = 0: GOTO 1320 1451 JJ = 367 * AN - INT(1.75 * (INT((M0 + 9) / 12) + AN)) - INT(.75 * (1 + INT((INT((M0 - 9) / 12) + AN) * .01))) + INT(275 * M0 / 9) + J0 + 1721028.5# 1460 J2 = N(M0) + J0 + (hh + mi / 60 + ss / 3600) * 1.0027379# / 24 - 1 1470 AA = AN / 4 - INT(AN / 4): aaa = AN / 100 - INT(AN / 100) 1475 aaaa = AN / 400 - INT(AN / 400) 1480 IF AA = 0 THEN AA = 1 1490 IF aaa = 0 AND aaaa <> 0 THEN AA = AN / 4 - INT(AN / 4) 1500 IF AA = 1 AND M0 > 2 THEN J2 = J2 + 1 1510 T = ((AN - 2000) * 365.25 + .5 + J2 - AA) / 365250: T1 = T: T = (JJ - 2451545) / 36525 1520 ts1 = ts0 + 360.98564735# * J2 1530 TS = 2 * PI * (ts1 / 360 - INT(ts1 / 360)): TS = (6.69737456# * 3600 + 8640184.812866# * T + .093103 * T * T - .0000062 * T * T * T) / 3600 / 24 * 2 * PI 1540 TSL = TS - G 1550 TSL = TSL / 2 / PI * 24: 'TSL = TSL + .004722 1551 IF TSL < 0 THEN TSL = TSL + 24: GOTO 1551 1552 IF TSL > 24 THEN TSL = TSL - 24: GOTO 1552 1560 TSLH = INT(TSL): TSLM = INT((TSL - TSLH) * 60) 1561 TSLS = ((TSL - TSLH) * 60 - TSLM) * 60: T = T1 1562 jour$ = sem1$(((J2 + 1) / 7 - INT((J2 + 1) / 7)) * 7): jour$ = sem$(JJ - 7 * INT((JJ + 1.5) / 7) + 1.5) 1563 sema = INT((JJ - JJ0) / 7) + 1 1564 IF M0 > 12 AND J0 > 8 THEN PRINT "CHANGEMENT D'ANNEE": END 1565 RETURN 1570 'CLS : PRINT USING "SEMAINE DU &"; jour$; 1571 'PRINT USING " ##/##/#### jour nø ### de l'ann‚e JJ=#######.#"; J0; M0; AN; J2 + 1; JJ 1572 'J0 = J0 + 6: GOSUB 1320: PRINT USING " AU &"; jour$; 1573 'PRINT USING " ##/##/#### jour nø ### de l'ann‚e JJ=#######.#"; J0; M0; AN; J2 + 1; JJ 1575 'J0 = J0 - 6 1576 'GOSUB 1320: PRINT "SEMAINE nø "; sema: PRINT 1577 'PRINT USING "LIEU : LONGITUDE G= ## deg. ## ' ## ''"; ld; mn; se 1578 'PRINT USING " LATITUDE L= ## deg. ## ' ## ''"; lad; lam; las 1579 'PRINT 1580 'PRINT USING "heure sid‚rale locale … 0 h TU le ##/##/####"; J0; M0; AN; 1581 'PRINT USING " = ## h ## mn ##.# s"; TSLH; TSLM; TSLS 1740 ' 1750 ' INCLINAISON ECLIPTIQUE SUR PLAN EQUATORIAL 1770 ' 1780 GOSUB 1790: GOTO 2150 1790 IE = .4090928042# - .0022696552# * T - 2.86E-07 * T * T 1791 IE = IE + 8.789672E-06 * T * T * T 1800 ASS = 1.00000101778# 1810 ' 1820 'PARAMETRES DU SOLEIL 1830 ' 1840 LMS = 4.895062967# + 6283.319663# * T + 5.300181E-04 * T * T 1841 LMS = LMS + .00000036942802# * T * T * T 1850 KAS = -.003740816# - .004793106# * T + .000281128# * T * T 1851 KAS = KAS + 7.3831E-05 * T * T * T 1860 HAS = .016284477# - .001532379# * T - .000720171# * T * T 1861 HAS = HAS + 3.2299E-05 * T * T * T 1870 ' 1880 'COORDONNEES GEOCENTRIQUES ECLIPTIQUES DU SOLEIL 1890 ' 1900 LPS = ATN(HAS / KAS) 1910 ES = ABS(HAS / SIN(LPS)) 1920 AMS = LMS - LPS 1930 AES = AMS 1940 FOR i = 1 TO 30 1950 AES = AMS + ES * SIN(AES) 1960 NEXT i 1970 AVS = 2 * ATN(SQR((1 + ES) / (1 - ES)) * TAN(AES / 2)) 1980 ALS = AVS + LPS 1990 LOS = ALS 2000 IF LOS < 0 THEN LOS = LOS + 2 * PI 2010 ' 2020 ' COORDONNEES EQUATORIALES DU SOLEIL 2030 ' 2040 d = FNASN(SIN(IE) * SIN(LOS)) 2050 AD = ATN(COS(IE) * TAN(LOS)) 2060 IF COS(LOS) < 0 THEN AD = AD + PI 2070 IF AD < 0 THEN AD = AD + 2 * PI 2080 RVS = ASS * (1 - ES * COS(AES)) 2090 XS = RVS * COS(LOS): X2 = XS 2100 YS = RVS * SIN(LOS): Y2 = YS: Z2 = 0 2110 AH = TS - AD - G: LO = LOS 2115 IF AH > PI THEN AH1 = 2 * PI - AH ELSE AH1 = AH 2120 IF AH < 0 THEN AH = AH + 2 * PI 2125 IF AH > PI THEN AH1 = 2 * PI - AH ELSE AH1 = AH 2130 RETURN 2140 ' 2150 'EPHEMERIDES SOLEIL LUNE PLANETES 2160 ' 2180 EPH$ = "S": GOSUB 5710: GOSUB 7000 2181 'PRINT "tapez une touche pour continuer": DO 2182 'LOOP WHILE INKEY$ = "" 2183 'CLS 2190 'EPH$ = "L": BOUC = 0: GOSUB 4170: GOSUB 7000: FOR BOUC = 1 TO 6 2191 'J0 = J0 + 1: GOSUB 1320: GOSUB 4170: GOSUB 7000: NEXT BOUC 2192 'J0 = J0 - 6: GOSUB 1320: GOSUB 1790: GOSUB 4170 2193 'PRINT "tapez une touche pour continuer": DO 2194 'LOOP WHILE INKEY$ = "" 2195 'CLS 2200 'EPH$ = "1": GOSUB 2310 2210 'EPH$ = "2": GOSUB 2430 2220 'EPH$ = "3": GOSUB 2540 2230 'EPH$ = "4": GOSUB 2650 2240 'EPH$ = "5": GOSUB 2920 2250 'EPH$ = "6": GOSUB 3520 2260 'EPH$ = "7": GOSUB 3790 2270 'EPH$ = "8": GOSUB 4060 2280 GOTO 160 2290 ' 2300 'MERCURE 2310 ' 2320 GOSUB 2330: GOSUB 5170: GOSUB 7000: RETURN 2330 A = .38709830982# 2340 LM = 4.402608842# + 26088.14707# * T + 5.305219E-04 * T * T 2345 LM = LM + 3.098E-07 * T * T * T 2350 KA = .044660598# - .054483487# * T - .001806305# * T * T 2355 KA = KA + 6.63185E-04 * T * T * T 2360 HA = .200723314# + .012331538# * T - .007334087# * T * T 2365 HA = HA - .000185002# * T * T * T 2370 Q = .040615634# - .009342389# * T - .000919439# * T * T 2375 Q = Q + 6.5185E-05 * T * T * T 2380 P = .045635505# + 8.527127E-03 * T - .000955642# * T * T 2385 P = P - .000067142# * T * T * T 2390 RETURN 2400 ' 2410 'VENUS 2420 ' 2430 GOSUB 2440: GOSUB 5170: GOSUB 7000: RETURN 2440 A = .72332981996# 2450 LM = 3.171146696# + 10213.52942# * T + .00054210556# * T * T 2455 LM = LM + 2.535E-07 * T * T * T 2460 KA = -.004492821# - 9.23135E-04 * T + .000225036# * T * T 2465 KA = KA - .000001441# * T * T * T 2470 HA = .005066847# - .001456941# * T - .000058477# * T * T 2475 HA = HA + .000022573# * T * T * T 2480 Q = .006824101# - .004512949# * T - .00011843# * T * T 2485 Q = Q + .000017766# * T * T * T 2490 P = .028822858# + .001158456# * T - .000349201# * T * T 2495 P = P - .000008779# * T * T * T 2500 RETURN 2510 ' 2520 'MARS 2530 ' 2540 GOSUB 2550: GOSUB 5170: GOSUB 7000: RETURN 2550 A = 1.52367934191# 2560 LM = 6.203480913# + 3340.856278# * T + .00054274843# * T * T 2565 LM = LM + 2.66E-07 * T * T * T 2570 KA = .085365603# + .013005053# * T + .004287376# * T * T 2575 KA = KA - .000259837# * T * T * T 2580 HA = -.037899732# + .02706276# * T + .002245677# * T * T 2585 HA = HA - .000451825# * T * T * T 2590 Q = .010470426# - .001689431# * T - .000082811# * T * T 2595 Q = Q + .000003613# * T * T * T 2600 P = .012284493# + .001371039# * T - .000107356# * T * T 2605 P = P - .000002604# * T * T * T 2610 RETURN 2620 ' 2630 'JUPITER 2640 ' 2650 GOSUB 2660: GOSUB 5200: GOSUB 7000: RETURN 2660 A = 5.20260319132# + 1.91323E-06 * T 2670 LM = .5595464972# + 529.9348075# * T + .00039049899# * T * T 2675 LM = LM + 4.34E-07 * T * T * T 2680 KA = .046985721# - .001796949# * T - .002042137# * T * T 2685 KA = KA - .000040262# * T * T * T 2690 HA = .012003857# + .013628604# * T + .000042602# * T * T 2695 HA = HA - .000210827# * T * T * T 2700 Q = -.002065611# - .001905724# * T + .000108273# * T * T 2705 Q = Q + .000008934# * T * T * T 2710 P = .011183772# - .000839731# * T - .000159489# * T * T 2715 P = P + .000007916# * T * T * T 2720 ' 2730 'perturbations de Jupiter 2740 ' 2750 LP = ATN(HA / KA) 2760 IF KA < 0 THEN LP = LP + PI 2770 E = ABS(HA / SIN(LP)) 2780 B = 3.08686 + 7.11355 * T 2790 U1 = SIN(B): V1 = COS(B) 2800 DA = 4.5902E-06 * V1 2810 A = A + DA 2820 DLM = 5.78402E-03 * V1 2830 LM = LM + DLM 2840 DE = .0000063 * V1 + 2.2515E-06 * V1 2850 E = E + DE 2860 DLP = (1.2217E-04 * U1 - 3.4906E-04 * V1) / E 2870 LP = LP + DLP 2880 RETURN 2890 ' 2900 'SATURNE 2910 ' 2920 GOSUB 2930: GOSUB 5200: GOSUB 7000: RETURN 2930 A = 9.55490959574# - 2.139E-05 * T 2940 LM = .8740167563# + 213.54295627# * T + .00090673442# * T * T 2945 LM = LM - 5.57E-08 * T * T * T 2950 KA = -.002960036# - .018813138# * T + .001283285# * T * T 2955 KA = KA + .000384811# * T * T * T 2960 HA = .0055429643# - .004477771# * T - .003261143# * T * T 2965 HA = HA + .000200072# * T * T * T 2970 Q = -8.717474E-03 - .002914183# * T + .000157351# * T * T 2975 Q = Q + .000012382# * T * T * T 2980 P = .019891473# - .001633044# * T - .000223323# * T * T 2985 P = P + .000011193# * T * T * T 2990 ' 3000 'perturbations de Saturne 3010 ' 3020 LP = ATN(HA / KA) 3030 IF KA < 0 THEN LP = LP + PI 3040 E = ABS(HA / SIN(LP)) 3050 B = 3.08686 + 7.11355 * T 3060 U1 = SIN(B): U2 = SIN(2 * B): V1 = COS(B) 3070 DA = 8.55E-07 * U1 + .0000512 * V1 3080 A = A + DA 3090 DLM = -.01421 * U1 - 1.91986E-04 * V1 + 1.39626E-04 * U2 3100 LM = LM + DLM 3110 DE = -1.384E-05 * U1 + 2.33874E-05 * V1 3120 E = E + DE 3130 DLP = (.0013613568# * U1 + 8.0285E-04 * V1) / E 3140 LP = LP + DLP 3150 C = 3.525 - 316.57313# * T 3160 U1 = SIN(C): U2 = SIN(2 * C): U3 = SIN(3 * C): U4 = SIN(4 * C) 3170 V1 = COS(C): V2 = COS(2 * C): V3 = COS(3 * C): V4 = COS(4 * C) 3180 C1 = (-.149 * U1 - .041 * U2 - .015 * U3 - .006 * U4) / K 3190 C2 = -.006 - .009 * U1 + .082 * V1 - .017 * U2 + .015 * V2 3195 C2 = (C2 - .006 * U3) / K 3200 C3 = (.086 * U1 + .025 * V1 + .014 * V2) / K 3210 C4 = (.006 * U1 - .005 * V1 + .009 * U2 + .005 * V2) / K 3220 C5 = (-.005 * V1 + .005 * U2 - .008 * V2) / K 3230 GOSUB 3470 3240 LM = LM + DD 3250 C1 = 0 3260 C2 = (.00124 + .00266 * V1 - .00047 * V2 - .00019 * V3) / K 3270 C3 = (-.00127 * U1 - .00042 * U2) / K 3280 C4 = (.00022 * U1 - .00028 * V1 - .00022 * U2 + .0002 * V2) / K 3290 C5 = (.00028 * U1 - .00016 * V1 + .00022 * V2) / K 3300 GOSUB 3470 3310 E = E + DD 3320 C1 = -.007 * U1 / K 3330 C2 = (-.076 * U1 - .025 * U2 - .009 * U3) / K 3340 C3 = (-.073 - .15 * V1 + .027 * V2 + .01 * V3) / K 3350 C4 = (-.014 * U1 - .008 * V1 + .014 * V2) / K 3360 C5 = (-.014 * U1 + .015 * V1 + .012 * U2 - .013 * V2) / K 3370 GOSUB 3470 3380 LP = LP + DD / E 3390 C1 = (.0337 * V1 - .00308 * V2 - .00143 * V3 - .00067 * V4) / K 3400 C2 = (-.00281 * U1 + .00214 * V1 + .00069 * U2 - .001 * V2) / K 3410 C3 = (.0022 * U1 + .00288 * V1 - .00159 * U2 + .00217 * V2) / K 3420 C4 = (-.00027 * U2 - .00078 * V1 + .00049 * V2 + .00025 * V3) / K 3430 C5 = (-.00085 * U1 + .00044 * U2 + .0003 * V2) / K 3440 GOSUB 3470 3450 A = A + DD 3460 RETURN 3470 DD = C1 + C2 * SIN(LM) + C3 * COS(LM) + C4 * SIN(2 * LM) 3475 DD = DD + C5 * COS(2 * LM) 3480 RETURN 3490 ' 3500 'URANUS 3510 ' 3520 GOSUB 3530: GOSUB 5200: GOSUB 7000: RETURN 3530 A = 19.21844606178# - 3.716E-07 * T 3540 LM = 5.481293871# + 75.02543113999999# * T + .00053117108# * T * T 3545 LM = LM + 4.52E-07 * T * T * T 3550 KA = -.045951324# - .001191266# * T + .001544939# * T * T 3555 KA = KA + .000011213# * T * T * T 3560 HA = .005637913# - .011954073# * T - .000135566# * T * T 3565 HA = HA + .000132033# * T * T * T 3570 Q = .001859151# - 5.7132E-04 * T - .000019753# * T * T 3575 Q = Q - .000001193# * T * T * T 3580 P = .00648617# + .000234059# * T + .00001066# * T * T 3585 P = P - .000001193# * T * T * T 3590 ' 3600 'perturbations d'Uranus 3610 ' 3620 LP = ATN(HA / KA) 3630 IF KA < 0 THEN LP = LP + PI 3640 E = ABS(HA / SIN(LP)) 3650 B = 5.10656 + 1.48447 * T 3660 U1 = SIN(B): U2 = SIN(2 * B): V1 = COS(B) 3670 DA = -6.674139E-05 * V1 3680 A = A + DA 3690 DLM = .0150796# * U1 + 1.43117E-03 * V1 + 6.28318E-04 * U2 3700 LM = LM + DLM 3710 DE = -5.8468E-06 * U1 + 3.6652E-05 * V1 3720 E = E + DE 3730 DLP = (2.099631E-03 * U1 + 3.38594E-04 * V1 + 1.04719E-04 * U2) / E 3740 LP = LP + DLP 3750 RETURN 3760 ' 3770 'NEPTUNE 3780 ' 3790 GOSUB 3800: GOSUB 5200: GOSUB 7000: RETURN 3800 A = 30.11038686942# - 1.66E-06 * T 3810 LM = 5.311886286# + 38.37687716# * T + .00053976537# * T * T 3815 LM = LM + 6.89E-07 * T * T * T 3820 KA = .0005999776# - .001623178# * T - .000202253# * T * T 3825 KA = KA + .000014843# * T * T * T 3830 HA = .006692424# + .0001541238# * T - .000192797# * T * T 3835 HA = HA - .000018028# * T * T * T 3840 Q = -.010291478# - .001674378# * T + .000305826# * T * T 3845 Q = Q + .000005675# * T * T * T 3850 P = .0115684# - .002585402# * T - .000118272# * T * T 3855 P = P + .000023739# * T * T * T 3860 ' 3870 'perturbations de Neptune 3880 ' 3890 LP = ATN(HA / KA) 3900 IF KA < 0 THEN LP = LP + PI 3910 E = ABS(HA / SIN(LP)) 3920 B = 5.10656 + 1.48447 * T 3930 U1 = SIN(B): U2 = SIN(2 * B): V1 = COS(B): V2 = COS(2 * B) 3940 DA = -1.431E-05 * U1 + .0001431 * V1 3950 A = A + DA 3960 DLM = -.0103428# * U1 - 9.7913E-04 * V1 - 4.2411E-04 * U2 3970 LM = LM + DLM 3980 DE = 7.679E-06 * U1 + 7.435E-06 * V1 - 1.0472E-04 * V2 3990 E = E + DE 4000 DLP = 4.1888E-04 * U1 - 4.3633E-04 * V1 + 1.0472E-04 * U2 4005 DLP = (DLP - 1.0472 * V2) / E 4010 LP = LP + DLP 4020 RETURN 4030 ' 4040 'PLUTON 4050 ' 4060 GOSUB 4070: GOSUB 5230: GOSUB 7000: RETURN 4070 A = 39.438712# 4080 LM = 4.172280893# + 25.36813 * T 4090 LN = 1.927583 + .2437 * T 4100 LP = 3.909712 4110 E = .250236 4120 IO = .299681 4130 RETURN 4140 ' 4150 'LUNE 4160 ' 4170 T = T * 10 4180 P = 5.19846674# + 7771.377144# * T - .000028509468# * T * T 4190 Q = 1.627905233# + 8433.466157000001# * T - .000059453671# * T * T 4200 AMl = 2.355555898# + 8328.691424000001# * T + .00015696909# * T * T 4210 AMS = 6.240060126# + 628.3019549000001# * T - .0000027198047# * T * T 4220 LML = 3.810344426# + 8399.709112# * T - .000023209485# * T * T 4230 Lnl = LML - Q: Lnl = 2 * PI * (Lnl / 2 / PI - INT(Lnl / 2 / PI)) 4240 PA = .0165937# + 9.0437E-04 * COS(AMl) + 4.9226E-05 * COS(2 * AMl) 4250 PA = PA + 1.36877E-04 * COS(2 * P) + 1.66349E-04 * COS(2 * P - AMl) 4260 DMD = K * .2735 * PA 4270 LO = LML + .10975981# * SIN(AMl) + 3.728314E-03 * SIN(2 * AMl) 4280 LO = LO + 1.751147E-04 * SIN(3 * AMl) + .0114895994# * SIN(2 * P) 4290 LO = LO - .0032390886# * SIN(AMS) - .00060674432# * SIN(P) 4300 LO = LO + .02223564# * SIN(2 * P - AMl) - .0019955415# * SIN(2 * Q) 4310 LO = LO + .0010261566# * SIN(2 * P - 2 * AMl) 4315 LO = LO + .00099852225# * SIN(2 * P - AMl - AMS) 4320 LO = LO + .00093059986# * SIN(2 * P + AMl) 4325 LO = LO + .00080066979# * SIN(2 * P - AMS) 4330 LO = LO + .00071602132# * SIN(AMl - AMS) 4335 LO = LO - .00053169516# * SIN(AMl + AMS) 4340 LO = LO + 2.67471E-04 * SIN(2 * P - 2 * Q) 4345 LO = LO - .00021865097# * SIN(2 * Q - AMl) 4350 LO = LO - .00019164684# * SIN(2 * Q - AMl) 4355 LO = LO + .00018631389# * SIN(4 * P - AMl) 4360 LO = LO + .00014917716# * SIN(4 * P - 2 * AMl) 4365 LO = LO - .00013802645# * SIN(2 * P - AMl + AMS) 4370 LO = LO - 1.183951E-04 * SIN(2 * P + AMS) 4375 LO = LO - .000090223826# * SIN(P - AMl) 4380 LO = LO + 8.736342500000001D-05 * SIN(P + AMl) 4385 LO = LO + 7.068583400000001D-05 * SIN(2 * P + AMl - AMS) 4390 LO = LO + 6.976468799999999D-05 * SIN(2 * P + 2 * AMl) 4395 LO = LO + .000067389101# * SIN(4 * P) 4400 LO = LO + 6.394692E-05 * SIN(2 * P - 3 * AMl) 4410 LO = 2 * PI * (LO / 2 / PI - INT(LO / 2 / PI)) 4420 IF LO < 0 THEN LO = LO + 2 * PI 4430 LA = .0895026105# * SIN(Q) + .0048974908# * SIN(AMl + Q) 4440 LA = LA + .0048466338# * SIN(AMl - Q) + .00030014814# * SIN(2 * AMl + Q) 4450 LA = LA + .00015397682# * SIN(2 * AMl - Q) 4455 LA = LA + .00056849252# * SIN(2 * P + Q) 4460 LA = LA + 3.023589E-03 * SIN(2 * P - Q) 4465 LA = LA + .00096710633# * SIN(2 * P - AMl + Q) 4470 LA = LA + 8.076026200000001D-04 * SIN(2 * P - AMl + Q) 4475 LA = LA + 3.639011E-04 * SIN(2 * P + AMl - Q) 4490 LA = LA + .00014394118# * SIN(2 * P - AMS - Q) 4495 LA = LA + .000075437008# * SIN(2 * P - 2 * AMl - Q) 4500 LA = LA + .000073303828# * SIN(2 * P + AMl + Q) 4505 LA = LA - 5.885638E-05 * SIN(2 * P + AMS - Q) 4510 PA = .0165937# + 9.0437E-04 * COS(AMl) + 4.9226E-05 * COS(2 * AMl) 4515 PA = PA + 1.136877E-04 * COS(2 * P) + 1.66349E-04 * COS(2 * P - AMl) 4516 DISTL = 1 / SIN(PA) * 6378.388: LOL = LO: LOSL = LOS 4520 T = T / 10 4530 d = FNASN(SIN(LA) * COS(IE) + COS(LA) * SIN(IE) * SIN(LO)) 4540 AD = ATN((COS(IE) * SIN(LO) - SIN(IE) * TAN(LA)) / COS(LO)) 4550 IF COS(LO) < 0 THEN AD = AD + PI 4560 IF AD < 0 THEN AD = AD + 2 * PI: GOTO 4560 4570 IF AD > 2 * PI THEN AD = AD - 2 * PI: GOTO 4570 4580 AH = TS - AD - G: IF AH > PI THEN AH1 = 2 * PI - AH ELSE AH1 = AH 4590 IF AH < 0 THEN AH = AH + 2 * PI 4595 IF AH > PI THEN AH1 = 2 * PI - AH ELSE AH1 = AH 4600 RO = .998332 + .0016835# * COS(2 * l) - .0000035 * COS(4 * l) 4610 LG = ATN(.9932773467# * TAN(l)) 4620 DAH = RO * SIN(PA) * COS(LG) * SIN(AH) 4625 DAH = ATN(DAH / (COS(d) - RO * SIN(PA) * COS(LG) * COS(AH))) 4630 AH = AH + DAH: X2 = 0: Y2 = 0: Z2 = 0 4640 GOSUB 5710: RETURN 5140 ' 5150 'CALCUL POSITION HELIOCENTRIQUE DE L'ASTRE 5160 ' 5170 LP = ATN(HA / KA) 5180 IF KA < 0 THEN LP = LP + PI 5190 E = ABS(HA / SIN(LP)) 5200 LN = ATN(P / Q) 5210 IF Q < 0 THEN LN = LN + PI 5220 IO = 2 * FNASN(P / SIN(LN)) 5230 AM = LM - LP 5240 AE = AM 5250 FOR i = 1 TO 30 5260 AE = AM + E * SIN(AE) 5270 NEXT i 5280 AV = 2 * ATN(SQR((1 + E) / (1 - E)) * TAN(AE / 2)) 5320 ARP = LP + AV - LN 5330 LA = FNASN(SIN(IO) * SIN(ARP)) 5340 LO = FNACS(COS(ARP) / COS(LA)) 5350 IF LO < 0 THEN LO = LO + PI: GOTO 5350 5360 IF LO > 2 * PI THEN LO = LO - PI: GOTO 5350 5370 IF LA < 0 THEN LO = 2 * PI - LO 5380 LO = LO + LN 5390 IF LO > 2 * PI THEN LO = LO - 2 * PI: GOTO 5390 5400 R = A * (1 - E * COS(AE)) 5410 X1 = R * COS(LA) * COS(LO) 5420 Y1 = R * COS(LA) * SIN(LO) 5430 Z1 = R * SIN(LA) 5470 ' 5480 'POSITION DE L'ASTRE PAR RAPPORT A LA TERRE 5490 ' 5500 X2 = XS + X1 5510 Y2 = YS + Y1 5520 Z2 = Z1 5540 LLOG = ATN(Y2 / X2) 5550 IF X2 < 0 THEN LLOG = LLOG + PI 5560 IF LLOG < 0 THEN LLOG = LLOG + 2 * PI: GOTO 5560 5570 IF LLOG > 2 * PI THEN LLOG = LLOG - 2 * PI: GOTO 5570 5580 LGS = ATN(YS / XS): IF XS < 0 THEN LGS = LGS + PI 5590 IF LGS < 0 THEN LGS = LGS + 2 * PI: GOTO 5590 5595 IF LGS > 2 * PI THEN LGS = LGS - 2 * PI: GOTO 5595 5630 LAG = ATN(Z2 / SQR(X2 * X2 + Y2 * Y2)) 5640 d = FNASN(SIN(LAG) * COS(IE) + COS(LAG) * SIN(IE) * SIN(LLOG)) 5650 AD = ATN((COS(IE) * SIN(LLOG) - SIN(IE) * TAN(LAG)) / COS(LLOG)) 5660 IF COS(LLOG) < 0 THEN AD = AD + PI 5670 IF AD < 0 THEN AD = AD + 2 * PI: GOTO 5670 5680 IF AD > 2 * PI THEN AD = AD - 2 * PI: GOTO 5680 5690 AH = TS - AD - G: IF AH > PI THEN AH1 = 2 * PI - AH ELSE AH1 = AH 5700 IF AH < 0 THEN AH = AH + 2 * PI 5705 IF AH > PI THEN AH1 = 2 * PI - AH ELSE AH1 = AH 5710 HC = FNASN(SIN(d) * SIN(l) + COS(d) * COS(l) * COS(AH1)) 5720 A1 = SIN(l) * COS(AH) - COS(l) * TAN(d) 5730 AZ = ATN(SIN(AH) / A1) 5740 IF A1 < 0 THEN AZ = AZ + PI 5750 IF AZ < 0 THEN AZ = AZ + 2 * PI 5760 ' 5770 'CORRECTION DE LA REFRACTION ATMOSPHERIQUE 5780 ' 5790 PP = TAN(PI / 2 - ABS(HC)) 5800 QQ = ABS(HC) * K 5810 IF QQ >= 9 THEN GOTO 5840 5820 R = .61 - .15 * QQ + .01546 * QQ * QQ - .00057 * QQ * QQ * QQ 5830 GOTO 5850 5840 R = .016 * PP - 1.858E-05 * PP * PP * PP 5845 R = R + 6.17E-08 * PP * PP * PP * PP * PP 5850 HCC = HC + R / K 5870 RETURN 7000 X = INT(AD * K / 15) 7010 Y = INT(60 * (AD * K / 15 - X) * 100) / 100 7020 DECL = INT(d * K): IF DECL < 0 THEN DECL = DECL + 1 7030 DECL1 = ABS(d * K - DECL) * 60 7034 'IF EPH$ <> "S" THEN GOTO 7039 ELSE PRINT 7035 'PRINT USING "TOUTES VALEURS DONNEES POUR LE ##/##/####"; J0; M0; AN; 7036 'PRINT USING " … ## h ## mn ## s"; hh; mi; ss 7037 'PRINT "sauf pour la LUNE : chaque jour de la semaine … 0h" 7038 'PRINT : PRINT "SOLEIL": GOTO 7041 7039 'IF EPH$ = "L" AND BOUC = 0 THEN PRINT "LUNE": GOTO 7041 7040 'IF EPH$ <> "L" THEN PRINT B$(VAL(EPH$)) 7041 DIST = SQR(X2 * X2 + Y2 * Y2 + Z2 * Z2) 7060 IF EPH$ <> "S" THEN GOTO 7064 7061 DIA = DIAMS: DIA = 2 * 180 * 60 / PI * ATN(DIA / 2 / DIST / 149597870) 7062 GOTO 7075 7064 IF EPH$ <> "L" THEN GOTO 7066 7065 DIA = DIAML: DIA = 2 * 180 / PI * ATN(DIA / 2 / DISTL) * 60: GOTO 7075 7066 DIA = DIAM(VAL(EPH$)) 7070 DIA = 2 * 180 / PI * ATN(DIA / 2 / DIST / 149597870) * 60 * 60 7075 p1$ = " j d‚clin. Asc.D dist. diam longit. azim haut " 7076 p1$ = p1$ + "lever coucher" 7077 p2$ = " j d‚clin. Asc.D dist. diam longit. azim haut " 7078 p2$ = p2$ + "lever coucher" 7079 'IF EPH$ = "L" AND BOUC = 0 THEN PRINT p1$ 7080 'IF EPH$ <> "L" THEN PRINT p2$ 7081 'f1$ = " ##/ ###d##' ##h ##m ##.##UA ##.#''": f1b$ = " ###.#deg ###d ###d " 7082 'f2$ = " ##/ ###d##' ##h ##m ###.##Mm": f2b$ = " ##.#' ###.#deg ###d ###d " 7083 'IF EPH$ <> "L" THEN PRINT USING f1$; J0; DECL; DECL1; X; Y; DIST; DIA; 7084 'IF EPH$ <> "L" THEN PRINT USING f1b$; LO / PI * 180; AZ * K; HCC * K; 7085 'IF EPH$ = "L" THEN PRINT USING f2$; J0; DECL; DECL1; X; Y; DISTL / 1000; 7086 'IF EPH$ = "L" THEN PRINT USING f2b$; DIA; LO / PI * 180; AZ * K; HCC * K; 7090 ' 7100 'HEURES DE LEVER ET DE COUCHER 7110 ' 7120 IF DIA < 999 AND EPH$ <> "L" THEN DIA = DIA / 60 7130 'hauteur sur l'horizon du centre de l'astre au lever 7140 IF EPH$ = "L" THEN H0 = (20.4 - DIA / 2 - 1.93 * SQR(ALT)) / 60 / K 7145 IF EPH$ <> "L" THEN H0 = (-36.6 - DIA / 2 - 1.93 * SQR(ALT)) / 60 / K 7150 CSH = (SIN(H0) - SIN(l) * SIN(d)) / COS(l) / COS(d): ANGLH = FNACS(CSH) 7160 IF CSH < 0 THEN ANGLH = PI + ANGLH 7170 LEV = AD * K / 15 7180 'LEV = (LEV - TSL / 24 * 2 * PI) * .9972696#: LEV = LEV / 2 / PI * 24 7190 'IF LEV < 0 THEN LEV = LEV + 24: GOTO 7190 7200 'IF LEV > 24 THEN LEV = LEV - 24: GOTO 7200 7210 'LEVH = INT(LEV): LEVM = INT((LEV - LEVH) * 60) 7215 'LEVS = INT(((LEV - LEVH) * 60 - LEVM) * 60) 7220 'nouvelle it‚ration pour la LUNE 7230 IF EPH$ = "S" THEN GOTO 7420 ELSE GOTO 7370 7231 hh1 = hh: mi1 = mi: ss1 = ss: hh = LEVH: mi = LEVM: ss = LEVS: LUNE = 1 7232 STSL = TSL: GOSUB 1320: GOSUB 4170: hh = hh1: mi = mi1: ss = ss1 7233 TSL = STSL 7240 H0 = (20.4 - DIA / 2 - 1.93 * SQR(ALT)) / 60 / K 7250 CSH = (SIN(H0) - SIN(l) * SIN(d)) / COS(l) / COS(d): ANGLH = FNACS(CSH) 7260 IF CSH < 0 THEN ANGLH = PI + ANGLH 7270 LEV = AD - ANGLH 7280 LEV = (LEV - TSL / 24 * 2 * PI) * .9972696#: LEV = LEV / 2 / PI * 24 7290 IF LEV < 0 THEN LEV = LEV + 24: GOTO 7290 7300 IF LEV > 24 THEN LEV = LEV - 24: GOTO 7300 7310 LEVH = INT(LEV): LEVM = INT((LEV - LEVH) * 60) 7315 LEVS = INT(((LEV - LEVH) * 60 - LEVM) * 60) 7370 COU = AD + ANGLH 7380 COU = (COU - TSL / 24 * 2 * PI) * .9972696#: COU = COU / 2 / PI * 24 7390 IF COU < 0 THEN COU = COU + 24: GOTO 7390 7400 IF COU > 24 THEN COU = COU - 24: GOTO 7400 7401 COUH = INT(COU): COUM = INT((COU - COUH) * 60) 7402 COUS = INT(((COU - COUH) * 60 - COUM) * 60) 7403 'nouvelle it‚ration pour la LUNE 7404 IF EPH$ = "L" THEN GOTO 7405 ELSE GOTO 7420 7405 ss: hh = COUH: mi = COUM: ss = COUS: LUNE = 1: STSL = TSL: GOSUB 1320 7406 GOSUB 4170: hh = hh1: mi = mi1: ss = ss1: TSL = STSL 7407 H0 = (20.4 - DIA / 2 - 1.93 * SQR(ALT)) / 60 / K 7408 CSH = (SIN(H0) - SIN(l) * SIN(d)) / COS(l) / COS(d): ANGLH = FNACS(CSH) 7409 IF CSH < 0 THEN ANGLH = PI + ANGLH 7410 COU = AD + ANGLH: COU = (COU - TSL / 24 * 2 * PI) * .9972696# 7411 COU = COU / 2 / PI * 24 7412 IF COU < 0 THEN COU = COU + 24: GOTO 7412 7413 IF COU > 24 THEN COU = COU - 24: GOTO 7413 7414 COUH = INT(COU): COUM = INT((COU - COUH) * 60) 7415 COUS = INT(((COU - COUH) * 60 - COUM) * 60) 7420 TS = TS / 2 / PI * 24 7421 IF TS < 0 THEN TS = TS + 24: GOTO 7421 7423 IF TS > 24 THEN TS = TS - 24: GOTO 7423 7425 IF AD * K / 15 > TS THEN COU = AD * K / 15 - TS - 12 ELSE COU = AD * K / 15 - TS + 12 7426 IF PREM <> 0 THEN LINE -(200 + TAN(COU * 15 / K) / TAN(.40928) * 6 * 23.5, 150 - TAN(d) / TAN(.40928) * 6 * 23.5) 7427 IF PREM = 0 THEN PSET (200 + TAN(COU * 15 / K) / TAN(.40928) * 6 * 23.5, 150 - TAN(d) / TAN(.40928) * 6 * 23.5) 7428 IF J0 <> 1 THEN POINTX = 200 + TAN(COU * 15 / K) / TAN(.40928) * 6 * 23.5: POINTY = 150 - TAN(d) / TAN(.40928) * 6 * 23.5 7429 IF J0 = 1 AND M0 <> 1 THEN POINTX1 = 200 + TAN(COU * 15 / K) / TAN(.40928) * 6 * 23.5: POINTY1 = 150 - TAN(d) / TAN(.40928) * 6 * 23.5: LINE -(POINTX1 + 10 * (POINTY1 - POINTY), POINTY1 - 10 * (POINTX1 - POINTX)): LINE -(200 + TAN(COU * 15 / K) / TAN(.40928) * 6 * 23.5, 150 - TAN(d) / TAN(.40928) * 6 * 23.5) 7430 'IF PREM <> 0 THEN LINE -(200 + COU * 15 * 6, 150 - d * K * 6) 7431 'IF PREM = 0 THEN PSET (200 + COU * 15 * 6, 150 - d * K * 6) 7432 'IF J0 <> 1 THEN POINTX = 200 + COU * 15 * 6: POINTY = 150 - d * K * 6 7433 'IF J0 = 1 AND M0 <> 1 THEN POINTX1 = 200 + COU * 15 * 6: POINTY1 = 150 - d * K * 6: LINE -(POINTX1 + 10 * (POINTY1 - POINTY), POINTY1 - 10 * (POINTX1 - POINTX)): LINE -(200 + COU * 15 * 6, 150 - d * K * 6) 7439 'PRINT LEV; : PRINT TS; : PRINT COU * 60 7440 IF EPH$ <> "S" THEN GOTO 7650 7500 H0S = -PI / 10: CSHS = (SIN(H0S) - SIN(l) * SIN(d)) / COS(l) / COS(d) 7510 IF CSHS < -1 THEN GOTO 8090 ELSE ANGLHS = FNACS(CSHS) 7520 IF CSHS < 0 THEN ANGLHS = PI + ANGLHS 7530 LEVSO = AD - ANGLHS 7540 LEVSO = (LEVSO - TSL / 24 * 2 * PI) * .9972696# 7545 LEVSO = LEVSO / 2 / PI * 24 7550 IF LEVSO < 0 THEN LEVSO = LEVSO + 24: GOTO 7550 7560 IF LEVSO > 24 THEN LEVSO = LEVSO - 24: GOTO 7560 7570 LEVH = INT(LEVSO): LEVM = INT((LEVSO - LEVH) * 60) 7575 LEVS = INT(((LEVSO - LEVH) * 60 - LEVM) * 60) 7580 COUSO = AD + ANGLHS 7590 COUSO = (COUSO - TSL / 24 * 2 * PI) * .9972696# 7595 COUSO = COUSO / 2 / PI * 24 7600 IF COUSO < 0 THEN COUSO = COUSO + 24: GOTO 7600 7610 IF COUSO > 24 THEN COUSO = COUSO - 24: GOTO 7610 7620 COUH = INT(COUSO): COUM = INT((COUSO - COUH) * 60) 7625 COUS = INT(((COUSO - COUH) * 60 - COUM) * 60) 7630 'PRINT USING "fin nuit astronomique … ##h ##mn"; LEVH; LEVM 7640 'PRINT USING "d‚but nuit astronomique … ##h ##mn"; COUH; COUM: PRINT 7650 IF EPH$ <> "L" THEN GOTO 7900 ELSE GOTO 7655 7655 IF AN < 1989 OR AN > 2020 THEN GOTO 8090 7660 COT = COTAN(AN - 1988) + COTJO(J0): XCOR = CORAN(AN - 1988) + CORJO(J0) 7670 IF M0 > 2 THEN COT = COT + COTMO(M0): XCOR = XCOR + CORMO(M0): GOTO 7750 7680 IF AA = 1 THEN COT = COT + COTMO(M0 + 12): XCOR = XCOR + CORMO(M0 + 12): GOTO 7750 7690 COT = COT + COTMO(M0): XCOR = XCOR + CORMO(M0) 7750 IF XCOR > 360 THEN XCOR = XCOR - 360: GOTO 7750 7760 IF XCOR > 180 GOTO 7780 7770 XCOR = INT(XCOR / 10): COT = COT + COR(XCOR): GOTO 7790 7780 XCOR = 360 - XCOR: XCOR = INT(XCOR / 10): COT = COT - COR(XCOR) 7790 IF COT < 0 THEN COT = COT + 360: GOTO 7790 7800 IF COT > 360 THEN COT = COT - 360: GOTO 7800 7810 LL = 360 - COT: LC = 180 - COT 7820 IF LL <= 90 THEN PRINT USING "terminateur du lever … ###.##ø E"; LL 7830 IF LL >= 270 THEN PRINT USING "terminateur du lever … ###.##ø W"; 360 - LL 7840 IF LC <= 0 AND LC > -90 THEN PRINT USING "terminateur du coucher … ###.##ø W"; -LC 7850 IF LC > 0 AND LC < 90 THEN PRINT USING "terminateur du coucher … ###.##ø E"; LC 7900 IF VAL(EPH$) <> 4 THEN GOTO 8090 7910 DAYS = JJ - 2451545: CEN = DAYS / 36525 7920 CMA0 = 268.05 - 8.999999E-03 * CEN: CMD0 = 64.49 + .003 * CEN 7930 W0 = 43.3 + 870.27 * DAYS: CMZ = W0 / 360: W0 = W0 - 360 * INT(CMZ) 7940 W1 = W0 - 870.27 * .0057755# * DIST 7950 XSINB = -SIN(CMD0 / K) * SIN(d) - COS(CMD0 / K) * COS(d) * COS((CMA0 - AD * K) / K) 7960 XCOSB = SQR(1 - XSINB * XSINB) 7970 XSINK = (-COS(CMD0 / K) * SIN(d) + SIN(CMD0 / K) * COS(d) * COS((CMA0 - AD * K) / K)) / XCOSB 7980 XCOSK = COS(d) * SIN((CMA0 - AD * K) / K) / XCOSB 7990 CMK = ATN(XSINK / XCOSK) * K 8000 MER = W1 - CMK: IF XCOSK < 0 THEN MER = MER + 180 8005 IF MER < 0 THEN MER = MER + 360: GOTO 8005 8010 IF MER > 360 THEN MER = MER - 360: GOTO 8010 8020 RED = 35: DIFF = RED - MER: IF DIFF < 0 THEN DIFF = DIFF + 360 8025 PRINT USING "W2 … Oh TU = ###.##ø "; MER; : PRINT "transit tƒche rouge … "; 8030 WHILE DIFF < 870.27 8040 TRAN = DIFF / 870.27 * 24: CMH = FIX(TRAN): CMM = FIX(60 * (TRAN - CMH)) 8050 PRINT USING " ###h## - "; CMH; CMM; 8060 DIFF = DIFF + 360 8070 WEND 8080 PRINT 8090 RETURN 10000 ' 10010 'PHENOMENES ASTRONOMIQUES DE LA SEMAINE 10020 ' 10030 'calcul des ‚l‚ments n‚cessaires … j0,j0+3.5,j0+7 10040 ' 10041 PRINT "tapez une touche pour continuer"; : DO 10042 LOOP WHILE INKEY$ = "" 10043 CLS 10045 PRINT : PRINT "PHENOMENES ASTRONOMIQUES DE LA SEMAINE": PRINT 10046 PRINT "! !" 10050 LOS0 = LOS: DISTS0 = SQR(XS * XS + YS * YS) 10052 J0 = J0 + 3.5: GOSUB 1320: PRINT " "; : PRINT ">"; : GOSUB 1790: LOS35 = LOS 10053 DISTS35 = SQR(XS * XS + YS * YS) 10055 J0 = J0 + 3.5: GOSUB 1320: PRINT ">"; : GOSUB 1790: LOS7 = LOS 10056 DISTS7 = SQR(XS * XS + YS * YS) 10058 J0 = J0 - 7: GOSUB 1320: PRINT ">"; : GOSUB 1790 10060 FOR PLA = 1 TO 8 10061 PRINT ">"; 10070 ON PLA GOSUB 2330, 2440, 2550, 2660, 2930, 3530, 3800, 4070 10080 ON PLA GOSUB 5170, 5170, 5170, 5200, 5200, 5200, 5200, 5230 10090 ANV0(PLA) = AV: LLO0(PLA) = LO: azim0(PLA) = AD 10100 DIST0(PLA) = SQR(X2 * X2 + Y2 * Y2 + Z2 * Z2): LOG0(PLA) = LLOG 10110 LGS0(PLA) = LGS: NEXT PLA 10120 J0 = J0 + 3.5: GOSUB 1320: PRINT ">"; : GOSUB 1790 10130 FOR PLA = 1 TO 8 10131 PRINT ">"; 10140 ON PLA GOSUB 2330, 2440, 2550, 2660, 2930, 3530, 3800, 4070 10150 ON PLA GOSUB 5170, 5170, 5170, 5200, 5200, 5200, 5200, 5230 10160 ANV35(PLA) = AV: LLO35(PLA) = LO: AZIM35(PLA) = AD 10170 DIST35(PLA) = SQR(X2 * X2 + Y2 * Y2 + Z2 * Z2): LOG35(PLA) = LLOG 10180 LGS35(PLA) = LGS: NEXT PLA 10190 J0 = J0 + 3.5: GOSUB 1320: PRINT ">"; : GOSUB 1790 10200 FOR PLA = 1 TO 8 10201 PRINT ">"; 10210 ON PLA GOSUB 2330, 2440, 2550, 2660, 2930, 3530, 3800, 4070 10220 ON PLA GOSUB 5170, 5170, 5170, 5200, 5200, 5200, 5200, 5230 10230 ANV7(PLA) = AV: LLO7(PLA) = LO: azim7(PLA) = AD 10240 DIST7(PLA) = SQR(X2 * X2 + Y2 * Y2 + Z2 * Z2): LOG7(PLA) = LLOG 10250 LGS7(PLA) = LGS: NEXT PLA 10260 J0 = J0 - 7: GOSUB 1320: PRINT ">"; : GOSUB 1790 10270 SJ0 = J0: SM0 = M0: SJ = J2: FOR lun = 1 TO 8 10280 J2 = SJ + lun - 1 10290 PRINT ">"; : GOSUB 1510: GOSUB 1790: losl0(lun) = LOS 10300 GOSUB 4170: distl0(lun) = DISTL: lol0(lun) = LO: aziml0(lun) = AD 10310 lnl0(lun) = Lnl 10320 J2 = J2 + .5 10330 PRINT ">"; : GOSUB 1510: GOSUB 1790: LOSL05(lun) = LOS 10340 GOSUB 4170: DISTL05(lun) = DISTL: LOL05(lun) = LO: AZIML05(lun) = AD 10350 LNL05(lun) = Lnl 10360 J2 = J2 - .5 10370 NEXT lun: J0 = SJ0: M0 = SM0: GOSUB 1320: PRINT ">": GOSUB 1790 10400 ' 10410 'aph‚lie, p‚rih‚lie de la Terre - solstices et equinoxes 10420 ' 10430 TESTD = DISTS7 - 4 * DISTS35 + 3 * DISTS0 10440 TESTD = TESTD / (4 * DISTS7 - 8 * DISTS35 + 4 * DISTS0) 10450 IF TESTD < 0 THEN GOTO 10540 10460 IF TESTD > 1 THEN GOTO 10540 10470 IF DISTS35 < 1 THEN GOTO 10480 ELSE GOTO 10510 10480 PRINT "TERRE au p‚rih‚lie"; 10500 GOTO 10520 10510 PRINT "TERRE … l'aph‚lie"; 10520 IF INT(TESTD * 7) = 0 THEN GOTO 10530 10521 FOR ii = 1 TO INT(TEST * 7): J0 = J0 + 1: GOSUB 1320: NEXT ii 10530 PRINT USING " le ##/##/####"; J0; M0; AN 10535 J0 = SJ0: M0 = SM0: GOSUB 1320: GOSUB 1790 10540 IF (LOS0 - PI) * (LOS7 - PI) < 0 THEN PRINT "EQUINOXE"; : GOTO 10580 10550 IF (LOS0 - PI / 2) * (LOS7 - PI / 2) < 0 THEN PRINT "SOLSTICE"; : GOTO 10580 10560 IF (LOS0 - 3 * PI / 2) * (LOS7 - 3 * PI / 2) < 0 THEN PRINT "SOLSTICE"; : GOTO 10580 10570 GOTO 10620 10580 IF M0 < 4 THEN PRINT " de printemps" 10590 IF M0 > 4 AND M0 < 7 THEN PRINT " d'‚t‚" 10600 IF M0 > 7 AND M0 < 10 THEN PRINT " d'automne" 10610 IF M0 > 10 THEN PRINT " d'hiver" 10620 ' 10630 '‚clipses, p‚rig‚e, apog‚e et phases de la lune 10640 ' 10650 FOR lun = 1 TO 7 10660 IF 4 * distl0(lun + 1) - 8 * DISTL05(lun) + 4 * distl0(lun) = 0 THEN GOTO 10751 10670 TESTD = distl0(lun + 1) - 4 * DISTL05(lun) + 3 * distl0(lun) 10680 TESTD = TESTD / (4 * distl0(lun + 1) - 8 * DISTL05(lun) + 4 * distl0(lun)) 10690 IF TESTD < 0 THEN GOTO 10751 10700 IF TESTD > 1 THEN GOTO 10751 10705 TESTD = distl0(lun + 1) - 2 * DISTL05(lun) + distl0(lun) 10710 IF TESTD > 0 THEN GOTO 10720 ELSE GOTO 10730 10720 PRINT "LUNE au p‚rig‚e"; : GOTO 10740 10730 PRINT "LUNE … l'apog‚e"; 10740 IF lun = 1 THEN GOTO 10745 10741 FOR ii = 1 TO lun - 1: J0 = J0 + 1: GOSUB 1320: NEXT ii 10745 PRINT USING " le ##/##/####"; J0; M0; AN 10547 J0 = SJ0: M0 = SM0: GOSUB 1320: GOSUB 1790 10751 TEST1 = losl0(lun + 1) - losl0(lun) 10752 TEST2 = lol0(lun + 1) - lol0(lun) 10770 IF TEST1 < 0 THEN losl0(lun + 1) = losl0(lun + 1) + 2 * PI 10780 IF TEST2 < 0 THEN lol0(lun + 1) = lol0(lun + 1) + 2 * PI 10781 TEST1 = lol0(lun) - losl0(lun): TEST2 = lol0(lun + 1) - losl0(lun + 1) 10790 IF TEST1 * TEST2 >= 0 THEN GOTO 10890 10800 PRINT "NOUVELLE LUNE le"; 10801 IF lun = 1 THEN GOTO 10803 10802 FOR ii = 1 TO lun - 1: J0 = J0 + 1: GOSUB 1320: NEXT ii 10803 PRINT USING " ##/##/####"; J0; M0; AN 10804 J0 = SJ0: M0 = SM0: GOSUB 1320: GOSUB 1790 10830 ECDN = ABS(losl0(lun) - lnl0(lun)) 10840 ECDN = 2 * PI * (ECDN / 2 / PI - INT(ECDN / 2 / PI)) 10850 IF K * ECDN >= 11 AND ABS(K * ECDN - 180) >= 11 THEN GOTO 11230 10855 PRINT "ECLIPSE DE SOLEIL le"; 10856 IF lun = 1 THEN GOTO 10858 10857 FOR ii = 1 TO lun - 1: J0 = J0 + 1: GOSUB 1320: GOSUB 1790: NEXT ii 10858 PRINT USING " ##/##/####"; J0; M0; AN; 10860 heur = (lol0(lun) - losl0(lun)) * 24 / (losl0(lun + 1) - losl0(lun) - lol0(lun + 1) + lol0(lun)) 10861 HEURH = INT(heur): HEURM = (heur - HEURH) * 60 10862 PRINT USING " … ##h##m"; HEURH; HEURM 10863 TERSO = DISTS0 * 149597870: PRINT USING " distance Terre-Soleil : ######### km"; TERSO 10864 TERLU = distl0(lun) + (distl0(lun + 1) - distl0(lun)) / 24 * heur: PRINT USING " distance Terre-Lune : ###### km"; TERLU 10865 lll = losl0(lun) + (losl0(lun + 1) - losl0(lun)) / 24 * heur 10866 PRINT USING " longitude du Soleil : ###d##'"; INT(lll * K); (K * lll - INT(K * lll)) * 60 10867 lll = lol0(lun) + (lol0(lun + 1) - lol0(lun)) / 24 * heur 10868 PRINT USING " longitude de la Lune: ###d##'"; INT(lll * K); (K * lll - INT(K * lll)) * 60 10869 PRINT USING " longitude du noeud ascendant de la Lune : ###d##'"; INT(K * lnl0(lun)); (K * lnl0(lun) - INT(K * lnl0(lun))) * 60: IF ABS(lll - lnl0(lun)) > PI / 2 THEN coef = -1 ELSE coef = 1 10870 PRINT USING " d‚clinaison du Soleil : ##d##'"; INT(d * K); (d * K - INT(d * K)) * 60 10871 llo = (heur - 12) * 15: PRINT USING " longitude du point de dur‚e maxi : ###d##'"; INT(llo); (llo - INT(llo)) * 60 10872 ll1 = d * K + K * FNASN((TERLU + 4670) * SIN(lll - lnl0(lun)) * SIN(5.216 / K) * TERSO / (TERSO - (TERLU + 4670)) / 6378) 10873 PRINT USING " latitude du point de dur‚e maxi : ###d##'"; INT(ll1); (ll1 - INT(ll1)) * 60 10874 xxx = (1390000 * (TERLU + 4670) - 3476 * TERSO) / 1386524 10875 lar = FNASN(3476 / (TERLU + 4670 - xxx)) * (6370 + 4670 - xxx) 10876 PRINT USING " largeur maxi de l'ombre : ### km"; lar 10877 FOR TPS = 1 TO 480: ALPHA = .549 / 3600 * PI / 180 * TPS: TETA = FNASN(-1 * (TERLU + 4670) * SIN(ALPHA) / ((TERLU + 4670) * COS(ALPHA) - TERSO) * TERSO / 6378) 10878 IF TETA < -PI / 2 OR TETA > PI / 2 THEN GOTO 10882 10879 DLAT = FNASN(SIN(TETA) * SIN(d + coef * 5.13 / K)): DLON = FNASN(TAN(DLAT) / TAN(d + coef * 5.13 / K)): DLON = DLON * 180 / PI - 15 / 3600 * TPS 10880 LARG = 2 * SQR(DLON * SIN(PI / 2 - ll1) * PI / 180 * 6378 * DLON * SIN(PI / 2 - ll1) * PI / 180 * 6378 + DLAT * PI / 180 * 6378 * DLAT * PI / 180 * 6378) 10881 IF LARG >= lar THEN GOTO 10883 10882 NEXT TPS 10883 PRINT USING " dur‚e maximale estim‚e : ##'##''"; INT(TPS / 60); TPS - 60 * INT(TPS / 60) 10884 GOSUB 12500 10888 J0 = SJ0: M0 = SM0: GOSUB 1320: GOSUB 1790 10889 GOTO 11230 10890 IF (TEST1 - PI / 2) * (TEST2 - PI / 2) >= 0 THEN GOTO 10940 10900 PRINT "PREMIER QUARTIER le"; 10901 IF lun = 1 THEN GOTO 10903 10902 FOR ii = 1 TO lun - 1: J0 = J0 + 1: GOSUB 1320: NEXT ii 10903 PRINT USING " ##/##/####"; J0; M0; AN 10904 J0 = SJ0: M0 = SM0: GOSUB 1320: GOSUB 1790 10930 GOTO 11230 10940 IF (TEST1 + 3 * PI / 2) * (TEST2 + 3 * PI / 2) >= 0 THEN GOTO 10990 10950 PRINT "PREMIER QUARTIER le"; 10951 IF lun = 1 THEN GOTO 10953 10952 FOR ii = 1 TO lun - 1: J0 = J0 + 1: GOSUB 1320: NEXT ii 10953 PRINT USING " ##/##/####"; J0; M0; AN 10954 J0 = SJ0: M0 = SM0: GOSUB 1320: GOSUB 1790 10980 GOTO 11230 10990 IF (TEST1 - PI) * (TEST2 - PI) >= 0 THEN GOTO 11040 11000 PRINT "PLEINE LUNE le"; 11001 IF lun = 1 THEN GOTO 11003 11002 FOR ii = 1 TO lun - 1: J0 = J0 + 1: GOSUB 1320: NEXT ii 11003 PRINT USING " ##/##/####"; J0; M0; AN 11004 J0 = SJ0: M0 = SM0: GOSUB 1320: GOSUB 1790 11030 GOTO 11080 11040 IF (TEST1 + PI) * (TEST2 + PI) >= 0 THEN GOTO 11140 11050 PRINT "PLEINE LUNE le"; 11051 IF lun = 1 THEN GOTO 11053 11052 FOR ii = 1 TO lun - 1: J0 = J0 + 1: GOSUB 1320: NEXT ii 11053 PRINT USING " ##/##/####"; J0; M0; AN 11054 J0 = SJ0: M0 = SM0: GOSUB 1320: GOSUB 1790 11080 ECDN = ABS(losl0(lun) - lnl0(lun)) 11090 ECDN = 2 * PI * (ECDN / 2 / PI - INT(ECDN / 2 / PI)) 11100 IF K * ECDN >= 15 AND ABS(K * ECDN - 180) >= 15 THEN GOTO 11230 11105 PRINT "ECLIPSE DE LUNE le"; 11106 IF lun = 1 THEN GOTO 11108 11107 FOR ii = 1 TO lun - 1: J0 = J0 + 1: GOSUB 1320: NEXT ii 11108 PRINT USING " ##/##/####"; J0; M0; AN 11109 J0 = SJ0: M0 = SM0: GOSUB 1320: GOSUB 1790 11130 GOTO 11230 11140 IF (TEST1 + PI / 2) * (TEST2 + PI / 2) >= 0 THEN GOTO 11190 11150 PRINT "DERNIER QUARTIER le"; 11156 IF lun = 1 THEN GOTO 11158 11157 FOR ii = 1 TO lun - 1: J0 = J0 + 1: GOSUB 1320: NEXT ii 11158 PRINT USING " ##/##/####"; J0; M0; AN 11159 J0 = SJ0: M0 = SM0: GOSUB 1320: GOSUB 1790 11180 GOTO 11230 11190 IF (TEST1 - 3 * PI / 2) * (TEST2 - 3 * PI / 2) >= 0 THEN GOTO 11230 11200 PRINT "DERNIER QUARTIER le"; 11201 IF lun = 1 THEN GOTO 11203 11202 FOR ii = 1 TO lun - 1: J0 = J0 + 1: GOSUB 1320: NEXT ii 11203 PRINT USING " ##/##/####"; J0; M0; AN 11204 J0 = SJ0: M0 = SM0: GOSUB 1320: GOSUB 1790 11230 IF losl0(lun + 1) > 2 * PI THEN losl0(lun + 1) = losl0(lun + 1) - 2 * PI 11231 IF lol0(lun + 1) > 2 * PI THEN lol0(lun + 1) = lol0(lun + 1) - 2 * PI 11232 NEXT lun 11250 ' 11260 'aph‚lie, p‚rih‚lie, conjonctions, oppositions, p‚rig‚e, apog‚e 11265 'des planŠtes, plus grandes ‚longations de Mercure et V‚nus 11270 ' 11280 'aph‚lie et p‚rih‚lie 11290 FOR PLA = 1 TO 8 11300 IF ANV0(PLA) * ANV7(PLA) >= 0 THEN GOTO 11370 11310 IF ABS(ANV7(PLA)) > PI / 2 THEN PERI$ = " … l'aph‚lie le " ELSE PERI$ = " au p‚rih‚lie le " 11320 PRINT B$(PLA); PERI$; 11330 ECART = 7 - ABS(ANV7(PLA) / (ANV7(PLA) - ANV0(PLA))) * 7 11340 ECART = INT(ECART) 11350 IF ECART = 0 THEN GOTO 11360 11351 FOR ii = 1 TO ECART: J0 = J0 + 1: GOSUB 1320: NEXT ii 11360 PRINT USING "##/##/####"; J0; M0; AN 11361 J0 = SJ0: M0 = SM0: GOSUB 1320 11370 NEXT PLA 11390 'conjonctions et oppositions 11400 IF LOS7 < LOS0 THEN LOS7 = LOS7 + 2 * PI 11410 FOR PLA = 1 TO 8 11420 IF LLO7(PLA) < LLO0(PLA) THEN LLO7(PLA) = LLO7(PLA) + 2 * PI 11430 SIG1 = SGN((LLO0(PLA) - LOS0) * (LLO7(PLA) - LOS7)) 11440 SIG2 = SGN((ABS(LLO0(PLA) - LOS0) - PI) * (ABS(LLO7(PLA) - LOS7) - PI)) 11450 IF SIG1 >= 0 AND SIG2 >= 0 THEN GOTO 11510 11460 IF PLA < 3 THEN GOTO 11490 11470 IF ABS(LLO7(PLA) - LOS7) > PI / 2 THEN PERI$ = " en opposition" ELSE PERI$ = " en conjonction" 11480 GOTO 11500 11490 IF ABS(LLO7(PLA) - LOS7) > PI / 2 THEN PERI$ = " en conjonction inf." ELSE PERI$ = " en conjonction sup." 11500 PRINT B$(PLA); PERI$ 11510 IF LLO7(PLA) > 2 * PI THEN LLO7(PLA) = LLO7(PLA) - 2 * PI 11511 NEXT PLA 11512 IF LOS7 > 2 * PI THEN LOS7 = LOS7 - 2 * PI 11520 'p‚rig‚e et apog‚e 11530 FOR PLA = 1 TO 8 11540 TESTD = 4 * DIST7(PLA) - 8 * DIST35(PLA) + 4 * DIST0(PLA) 11550 IF TESTD = 0 THEN GOTO 11660 11560 TESTD1 = DIST7(PLA) - 4 * DIST35(PLA) + 3 * DIST0(PLA) 11570 TESTD1 = TESTD1 / TESTD 11580 IF TESTD1 < 0 THEN GOTO 11660 11590 IF TESTD1 > 1 THEN GOTO 11660 11600 TESTD = DIST7(PLA) - 2 * DIST35(PLA) + DIST0(PLA) 11610 IF TESTD > 0 THEN PERI$ = " au p‚rig‚e le " 11620 IF TESTD < 0 THEN PERI$ = " … l'apog‚e le " 11630 PRINT B$(PLA); PERI$; 11631 IF INT(TESTD1 * 7) = 0 THEN GOTO 11650 11632 FOR ii = 1 TO INT(TESTD1 * 7): J0 = J0 + 1: GOSUB 1320: NEXT ii 11650 PRINT USING "##/##/####"; J0; M0; AN 11651 J0 = SJ0: M0 = SM0: GOSUB 1320 11660 NEXT PLA 11670 'plus grandes ‚longations de Mercure et V‚nus 11680 FOR PLA = 1 TO 2 11690 IF LGS35(PLA) < LGS0(PLA) THEN LGS35(PLA) = LGS35(PLA) + 2 * PI 11700 IF LGS7(PLA) < LGS35(PLA) THEN LGS7(PLA) = LGS7(PLA) + 2 * PI 11710 IF ABS(LOG35(PLA) - LOG0(PLA)) < PI THEN GOTO 11730 11720 IF LOG35(PLA) < LOG0(PLA) THEN LOG35(PLA) = LOG35(PLA) + 2 * PI ELSE LOG0(PLA) = LOG0(PLA) + 2 * PI 11730 IF ABS(LOG7(PLA) - LOG35(PLA)) < PI THEN GOTO 11750 11740 IF LOG7(PLA) < LOG35(PLA) THEN LOG7(PLA) = LOG7(PLA) + 2 * PI 11750 DELTA1 = LOG0(PLA) - LGS0(PLA) 11760 DELTA2 = LOG35(PLA) - LGS35(PLA) 11770 DELTA3 = LOG7(PLA) - LGS7(PLA) 11780 TESTD = DELTA3 - 4 * DELTA2 + 3 * DELTA1: IF TESTD = 0 THEN GOTO 11870 11790 TESTD = TESTD / (4 * DELTA3 - 8 * DELTA2 + 4 * DELTA1) 11800 IF TESTD < 0 OR TESTD > 1 THEN GOTO 11870 11810 PRINT "plus grande ‚longation "; 11820 IF ABS(LOG0(PLA) - LGS0(PLA)) > PI THEN coef = -1 ELSE coef = 1 11830 IF coef * (LOG0(PLA) - LGS0(PLA)) < 0 THEN PRINT "Ouest de "; ELSE PRINT "Est de "; 11840 PRINT B$(PLA); " le "; 11841 IF INT(TESTD1 * 7) = 0 THEN GOTO 11843 11842 FOR ii = 1 TO INT(TESTD * 7): J0 = J0 + 1: GOSUB 1320: NEXT ii 11843 PRINT USING "##/##/####"; J0; M0; AN 11844 J0 = SJ0: M0 = SM0: GOSUB 1320 11870 NEXT PLA 11880 'conjonctions planŠtes-lune et planŠtes-planŠtes 11890 FOR PLA = 1 TO 8 11900 IF ABS(azim7(PLA) - azim0(PLA)) < PI THEN GOTO 11930 11910 IF azim7(PLA) < azim0(PLA) THEN azim7(PLA) = azim7(PLA) + 2 * PI 11920 IF azim0(PLA) < azim7(PLA) THEN azim0(PLA) = azim0(PLA) + 2 * PI 11930 FOR lun = 1 TO 7 11931 IF aziml0(lun + 1) < aziml0(lun) THEN aziml0(lun + 1) = aziml0(lun + 1) + 2 * PI 11940 TEST1 = azim0(PLA) - aziml0(lun) 11941 TEST2 = azim0(PLA) - aziml0(lun + 1) 11942 IF TEST1 < 0 AND TEST2 > 0 THEN PRINT B$(PLA); " en conjonction avec la lune le "; : GOTO 11960 11943 IF TEST1 > 0 AND TEST2 < 0 THEN PRINT B$(PLA); " en conjonction avec la lune le "; : GOTO 11960 11944 GOTO 11980 11960 IF lun = 1 THEN GOTO 11970 11965 FOR ii = 1 TO lun - 1: J0 = J0 + 1: GOSUB 1320: NEXT ii 11970 PRINT USING "##/##/####"; J0; M0; AN 11975 J0 = SJ0: M0 = SM0: GOSUB 1320: GOTO 11990 11980 NEXT lun 11990 IF azim7(PLA) > 2 * PI THEN azim7(PLA) = azim7(PLA) - 2 * PI 11991 IF azim0(PLA) > 2 * PI THEN azim0(PLA) = azim0(PLA) - 2 * PI 11992 NEXT PLA 12000 FOR PLA1 = 1 TO 7 12001 IF ABS(azim0(PLA1) - azim7(PLA1)) < PI THEN GOTO 12010 12002 IF azim0(PLA1) < azim7(PLA1) THEN azim0(PLA1) = azim0(PLA1) + 2 * PI 12003 IF azim0(PLA1) > azim7(PLA1) THEN azim7(PLA1) = azim7(PLA1) + 2 * PI 12010 FOR PLA2 = PLA1 + 1 TO 8 12011 IF ABS(azim0(PLA2) - azim7(PLA2)) < PI THEN GOTO 12020 12012 IF azim0(PLA2) < azim7(PLA2) THEN azim0(PLA2) = azim0(PLA2) + 2 * PI 12013 IF azim0(PLA2) > azim7(PLA2) THEN azim7(PLA2) = azim7(PLA2) + 2 * PI 12020 IF azim0(PLA1) < azim0(PLA2) AND azim7(PLA1) > azim7(PLA2) THEN PRINT B$(PLA1); " en conjonction avec "; B$(PLA2) 12030 IF azim0(PLA1) > azim0(PLA2) AND azim7(PLA1) < azim7(PLA2) THEN PRINT B$(PLA1); " en conjonction avec "; B$(PLA2) 12040 NEXT PLA2 12050 NEXT PLA1 12060 GOTO 13000 12500 ' 12510 'ECLIPSE DE SOLEIL 12520 ' 12530 XK = (JJ - 2415020.75933#) / 29.53058868#: XK1 = INT(XK): IF XK - XK1 > .5 THEN XK1 = XK1 + 1 ELSE XK1 = XK1 - 1 12540 PRINT "k="; XK1: XT = XK1 / 1236.85: XFA = 1 / 57.2957795# 12550 XJD = 2415020.75933# + 29.53058868# * XK1 + .0001178# * XT * XT - .000000155# * XT * XT * XT + .00033 * SIN(XFA * (166.56 + 132.87 * XT - .009173 * XT * XT)) 12560 PRINT USING "JD=#######.##"; XJD: XM = XFA * (359.2242 + 29.10535608# * XK1 - .0000333# * XT * XT - .00000347# * XT * XT * XT) 12570 PRINT "M="; XM: XMP = XFA * (306.0253 + 385.81691806# * XK1 + .00107306# * XT * XT + .00001236# * XT * XT * XT) 12580 PRINT "M'="; XMP: XF = XFA * (21.2964 + 390.670506# * XK1 - .0016528# * XT * XT - .00000239# * XT * XT * XT) 12590 PRINT "F="; XF: XS = 5.19595 - .0048 * COS(XM) + .02 * COS(2 * XM) - .3283 * COS(XMP) - .006 * COS(XM + XMP) + .0041 * COS(XM - XMP) 12600 PRINT "S="; XS: XC = .207 * SIN(XM) + .0024 * SIN(2 * XM) - .039 * SIN(XMP) + .0115 * SIN(2 * XMP) - .0073 * SIN(XM + XMP) - .0067 * SIN(XM - XMP) + .0117 * SIN(2 * XF) 12610 PRINT "C="; XC: XGA = XS * SIN(XF) + XC * COS(XF) 12620 PRINT "GA="; XGA: XU = .0059 + .0046 * COS(XM) - .0182 * COS(XMP) + .0004 * COS(2 * XMP) - .0005 * COS(XM + XMP) 12630 PRINT "U="; XU: IF ABS(XGA) > 1.5432 + XU THEN RETURN 12640 IF ABS(XGA) < .9972 THEN PRINT "ECLIPSE CENTRALE": GOTO 12700 12650 PRINT "ECLIPSE NON CENTRALE" 12660 IF ABS(XGA) < .9972 + ABS(XU) THEN PRINT "ECLIPSE TOTALE/ANNULAIRE": GOTO 12700 12670 PRINT "ECLIPSE PARTIELLE": XGG = (1.5432 + XU - ABS(XGA)) / (.546 + 2 * XU) 12680 PRINT "grandeur : "; INT(XGG * 100) / 100 12700 IF XU < 0 THEN PRINT "ECLIPSE TOTALE": GOTO 12740 12710 IF XU > .0047 THEN PRINT "ECLIPSE ANNULAIRE": GOTO 12740 12720 IF XU > .00464 + SQR(1 - XGA * XGA) THEN PRINT "ECLIPSE ANNULAIRE": GOTO 12740 12730 PRINT "ECLIPSE ANNULAIRE/TOTALE" 12740 XJD = XJD + (.1734 - .000393 * XT) * SIN(XM) + .0021 * SIN(2 * XM) - .4068 * SIN(XMP) + .0161 * SIN(2 * XMP) - .0051 * SIN(XM + XMP) - .0074 * SIN(XM - XMP) - .0104 * SIN(2 * XF) 12750 PRINT USING "JD=#######.##"; XJD: XH = 24 * (XJD - JJ): PRINT USING "MAXIMUM … ## h ##"; INT(XH); INT(60 * (XH - INT(XH))) 12760 RETURN 13000 ' 13010 'CONFIGURATION DES SATELLITES DE JUPITER 13020 ' 13021 PRINT "tapez une touche pour continuer": DO 13022 LOOP WHILE INKEY$ = "" 13030 SCREEN 12 13040 CLS 13050 PRINT "CONFIGURATION DES SATELLITES DE JUPITER SUR UNE SEMAINE" 13060 PRINT "… partir du "; : PRINT USING "##/##/####"; J0; M0; AN; 13061 PRINT " … 0hTU" 13070 GOSUB 1320: GOSUB 1790: GOSUB 2660: GOSUB 5200 13080 DTJ = SQR(X2 * X2 + Y2 * Y2 + Z2 * Z2) 13090 AB = DTJ * 1.58E-08 13100 LINE (8, 122)-(456, 122) 13110 LINE (8, 128)-(456, 128) 13120 FOR ii = 1 TO 8 13130 LINE (8 + 64 * (ii - 1), 60)-(8 + 64 * (ii - 1), 195) 13140 NEXT ii 13141 LOCATE 7, 60: PRINT "EST": LOCATE 12, 60: PRINT "OUEST" 13142 FOR ii = 1 TO 8: LOCATE 4, 1 + 8 * (ii - 1): PRINT USING "#"; ii - 1; : NEXT ii 13150 ST = T: T = T - AB: LLG = .3147121856# + 1297204.6697# * T 13160 RSA = 5.905: TE = LLG - LLOG + PI: EL = RSA * SIN(TE): PSET (8, 123.5 + 2.5 * EL): YY = 123.5 + 2.5 * EL 13170 FOR ii = 1 TO 224: T = T + 7 / 224 / 365250 13180 LLG = .3147121856# + 1297204.6697# * T 13190 RSA = 5.905: TE = LLG - LLOG + PI: EL = RSA * SIN(TE) 13191 YY1 = 123.5 + 2.5 * EL: IF YY1 > YY THEN LINE -(8 + 2 * ii, 123.5 + 2.5 * EL): GOTO 13200 13192 IF YY1 < YY AND YY1 > 128 THEN LINE -(8 + 2 * ii, 123.5 + 2.5 * EL): GOTO 13200 13193 IF YY1 < YY AND YY1 < 122 THEN LINE (6 + 2 * ii, YY)-(8 + 2 * ii, 123.5 + 2.5 * EL): GOTO 13200 13200 YY = YY1: NEXT ii 13210 T = ST: T = T - AB: LLG = 3.7128912277# + 646245.3628# * T 13220 RSA = 9.3969: TE = LLG - LLOG + PI: EL = RSA * SIN(TE): PSET (8, 123.5 + 2.5 * EL): YY = 123.5 + 2.5 * EL 13230 FOR ii = 1 TO 224: T = T + 7 / 224 / 365250 13240 LLG = 3.7128912277# + 646245.3628# * T 13250 RSA = 9.3969: TE = LLG - LLOG + PI: EL = RSA * SIN(TE) 13251 YY1 = 123.5 + 2.5 * EL: IF YY1 > YY THEN LINE -(8 + 2 * ii, 123.5 + 2.5 * EL): GOTO 13260 13252 IF YY1 < YY AND YY1 > 128 THEN LINE -(8 + 2 * ii, 123.5 + 2.5 * EL): GOTO 13260 13253 IF YY1 < YY AND YY1 < 122 THEN LINE (6 + 2 * ii, YY)-(8 + 2 * ii, 123.5 + 2.5 * EL): GOTO 13260 13260 YY = YY1: NEXT ii 13270 T = ST: T = T - AB: LLG = 3.840528532# + 320765.6891# * T 13280 RSA = 14.989: TE = LLG - LLOG + PI: EL = RSA * SIN(TE): PSET (8, 123.5 + 2.5 * EL): YY = 123.5 + 2.5 * EL 13290 FOR ii = 1 TO 224: T = T + 7 / 224 / 365250 13300 LLG = 3.840528532# + 320765.6891# * T 13310 RSA = 14.989: TE = LLG - LLOG + PI: EL = RSA * SIN(TE) 13311 YY1 = 123.5 + 2.5 * EL: IF YY1 > YY THEN LINE -(8 + 2 * ii, 123.5 + 2.5 * EL): GOTO 13320 13312 IF YY1 < YY AND YY1 > 128 THEN LINE -(8 + 2 * ii, 123.5 + 2.5 * EL): GOTO 13320 13313 IF YY1 < YY AND YY1 < 122 THEN LINE (6 + 2 * ii, YY)-(8 + 2 * ii, 123.5 + 2.5 * EL): GOTO 13320 13320 YY = YY1: NEXT ii 13330 T = ST: T = T - AB: LLG = 1.382313333# + 137511.8375# * T 13340 RSA = 26.341: TE = LLG - LLOG + PI: EL = RSA * SIN(TE): PSET (8, 123.5 + 2.5 * EL): YY = 123.5 + 2.5 * EL 13350 FOR ii = 1 TO 224: T = T + 7 / 224 / 365250 13360 LLG = 1.382313333# + 137511.8375# * T 13370 RSA = 26.341: TE = LLG - LLOG + PI: EL = RSA * SIN(TE) 13371 YY1 = 123.5 + 2.5 * EL: IF YY1 > YY THEN LINE -(8 + 2 * ii, 123.5 + 2.5 * EL): GOTO 13380 13372 IF YY1 < YY AND YY1 > 128 THEN LINE -(8 + 2 * ii, 123.5 + 2.5 * EL): GOTO 13380 13373 IF YY1 < YY AND YY1 < 122 THEN LINE (6 + 2 * ii, YY)-(8 + 2 * ii, 123.5 + 2.5 * EL): GOTO 13380 13380 YY = YY1: NEXT ii 20000 END: GOTO 160