10 REM programme poursuite calcule les ephemerides du soleil 20 REM a partir de la date donnee 30 REM constantes pi = 3.14159265359# unitastro = 1.496E+08 latitude = 44.83 latitude = latitude* pi / 180 longitude = -0.56 50 REM page d'entr‚e CLS PRINT "***************************************************" PRINT "* *" PRINT "* PROGRAMME *" PRINT "* POURSUITE DU SOLEIL *" PRINT "* *" PRINT "* DE 10 MIN EN 10 MIN *" PRINT "***************************************************" PRINT " " 60 REM entrees des donnees INPUT "ENTREZ LA DATE DU DEBUT (JJ MM AAAA) :"; jour, mois, annee INPUT "HEURE TU (HH MM) :"; heure, minutes 70 REM calcul nombre jours depuis 1/1/1900 150 h8 = (heure + minutes / 60) / 24 j = jour + h8 n = annee * 365 + 31 * (mois - 1) + j IF mois > 2 GOTO 160 annee = annee - 1 160 n = n + INT(annee / 4) - INT(annee / 100) + INT(annee / 400) IF mois < 2 GOTO 190 n = n - INT((mois - 1) * .4 + 2.7) 190 REM nj=nombre de jours depuis 1/1/1901 nj = n - 694325 PRINT "nombre de jours depuis le 1/1/1901 :", nj 210 REM position soleil l0 = 4.8689 l1 = .0172027914# p0 = 4.9085 p1 = 8.1856E-07 e = .01675104# k = 7 a = 1.00000023# p = p0 + p1 * nj l2 = l0 + l1 * nj m = l2 - p m2 = m 220 REM equation de kepler u = m FOR kk = 0 TO k u = m + e * SIN(u) NEXT kk v = 2 * ATN(TAN(u / 2) * SQR((1 + e) / (1 - e))) REM r=rayon vecteur du soleil r = a * (1 - e * COS(u)) PRINT "rayon vecteur du soleil :", r PRINT "soit: ", r * unitastro, "; km'" l = v + p xs = r * COS(l) ys = r * SIN(l) ld = l * 180 / pi ld = (ld / 360 - INT(ld / 360)) * 360 IF ld < 0 THEN ld = ld + 360 REM ld=longitude du soleil ld = INT(ld * 10 + .5) / 10 PRINT "longitude du soleil :", ld REM calcul temps sideral rd = 1.7273 + .0172027914# * nj + h8 * 2 * pi - longitude * pi / 180 rd = (rd / 2 / pi - INT(rd / 2 / pi)) * 2 * pi IF rd < 0 THEN rd = rd + 2 * pi ts = rd REM calcul asc droite et declinaison b = 0 ep = .40927971# sd = COS(ep) * SIN(b) + SIN(ep) * COS(b) * SIN(l) REM de=declinaison de = ATN(sd / SQR(1 - sd * sd)) sr = -SIN(ep) * SIN(b) + COS(ep) * COS(b) * SIN(l) rd = ATN(sr / COS(b) / COS(l)) IF COS(b) * COS(l) < 0 THEN rd = rd + pi IF rd < 0 THEN rd = rd + (2 * pi) REM ar=asc droite ar = rd h = INT(rd / pi * 12) mm = INT((rd - h * pi / 12) * 720 / pi) s = INT((rd - h * pi / 12 - m * pi / 720) * 43200 / pi) PRINT "ascension droite :", h, mm, s PRINT "declinaison :", INT(de * 18000 / pi + .5) / 100 REM calcul azimut elevation anghor = ts - ar cosdiszen = SIN(latitude) * SIN(de) + COS(latitude) * COS(de) * COS(anghor) elev = ATN(cosdiszen / SQR(-cosdiszen * cosdiszen + 1)) elev = elev * 180 / pi ass = COS(de) * SIN(anghor) ac = (-COS(latitude) * SIN(de) + SIN(latitude) * COS(de) * COS(anghor) / COS(elev)) azim = ATN(ass / ac) IF ac < 0 THEN azim = azim + pi azim = azim * 180 / pi azim = (azim / 360 - INT(azim / 360)) * 360 IF azim < 0 THEN azim = azim + 360 PRINT "azimut :", azim PRINT "elevation :", elev REM incrementation minutes = minutes + 10 IF minutes > 60 THEN heure = heure + 1 IF minutes > 60 THEN minutes = minutes - 60 IF heure > 20 GOTO 300 PRINT "***********************************************************" PRINT " " GOTO 150 300 PRINT "FIN DE LA JOURNEE" 400 END