Calcul des heures de passage au méridien / lever / coucher du soleil


RESUME: Dans l'esprit du programme éphéméride pour gnomoniste (calculs épurés sur un nombre minimum de constantes) en voici une adaptation pour calculer les heures de lever, de coucher et de passage au méridien du soleil. Cette dernière heure est une donnée intéressante en gnomonique: il est alors midi vrai. A cet instant, l'ombre d'un fil à plomb sur une surface horizontale donne la direction nord-sud. D'autre part, en ajoutant ou en retirant un nombre entier d'heures à celle-ci on obtient les instants auxquels on peut graduer la table d'un cadran par l'ombre du style correctement placé.
Pour calculer les heures de lever et de coucher du soleil il est nécessaire de définir la hauteur de son centre pour laquelle on considère qu'il se lève ou se couche. Cette hauteur prend différentes valeurs suivant les éphémérides.

I/ Précision des résultats

Elle est de +/- 10 s pour le passage au méridien en tout point du globe. Les levers et couchers sont obtenus à une bonne minute près sous les latitudes de la France. L'imprécision est fonction de la latitude, elle est minimum à l'équateur où elle correspond à celle du passage au méridien, et elle augmente quand on s'en écarte. Elle est imputable à l'erreur sur le calcul de la déclinaison du soleil dont on fournit une valeur moyenne sur le cycle de 4 ans des années bissextiles. Enfin, la déclinaison est calculée vers midi et on ne tient pas compte de sa variation pendant la journée.

II/ Hauteur du soleil à son lever / coucher

C'est la hauteur théorique ht, complément à 90° de la distance zénithale, du centre du soleil pour laquelle on considère qu'il se lève ou se couche. Elle est la somme de plusieurs facteurs qui peuvent ou pas être pris en considération:
  ht = -r ± ½.d - b + e
Avec: Les Ephémérides Astronomiques du Bureau des Longitudes ne tiennent compte que de la réfraction à laquelle elles donnent la valeur r = 36,6'.
Les Ephémérides Astronomiques de la S.A.F. considère le lever comme l'apparition de son bord supérieur. Elles utilisent la valeur ht = -50'.

III/ Le programme

L'écriture proposée ici est faite en Qbasic de Microsoft mais elle est facilement adaptable à tout autre langage.

Remarque: Ce programme est valable en tout point du globe sans aucune modification.


REM Constantes
k = .0172024
jm = 308.67
jl = 21.55
e = .0167
ob = .4091
pi = 3.141593: dr = pi / 180: hr = pi / 12

REM Hauteur du soleil au lever et au coucher
ht = -50 / 60: ht = ht * dr

REM Fuseau horaire et coordonnées géographiques
INPUT "Fuseau horaire"; fh
INPUT "Longitude (en degré, positive à l'ouest)"; lo: lo = lo * dr
INPUT "Latitude (en degré)"; la: la = la * dr

REM Date
INPUT "Jour, Mois"; jo, mo
IF mo < 3 THEN mo = mo + 12

REM Heure TU du milieu de la journée
h = 12 + lo / hr

REM Nombre de jours écoulés depuis le 1 Mars O h TU
j = INT(30.61 * (mo + 1)) + jo + h / 24 - 123

REM Anomalie et longitude moyenne
m = k * (j - jm): l = k * (j - jl)

REM Longitude vrai
s = l + 2 * e * SIN(m) + 1.25 * e * e * SIN(2 * m)

REM Coordonnées rectangulaires du soleil dans le repère équatorial
x = COS(s): y = COS(ob) * SIN(s): z = SIN(ob) * SIN(s)

REM Equation du temps et déclinaison
r = l: GOSUB 1300
et = ATN(y / x)
dc = ATN(z / SQR(1 - z * z))

REM Heure de passage au méridien
pm = h + fh + et / hr
hs = INT(pm): pm = 60 * (pm - hs)
ms = INT(pm): pm = 60 * (pm - ms)
PRINT USING "Heure du passage au méridien (midi vrai): ## h ## m ## s"; hs; ms; pm

REM Angle horaire au lever et au coucher
cs = (SIN(ht) - SIN(la) * SIN(dc)) / COS(la) / COS(dc)
IF cs > 1 THEN PRINT "Le soleil ne se lève pas": END
IF cs < -1 THEN PRINT "Le soleil ne se couche pas": END
IF cs = 0 THEN ah = pi / 2 ELSE ah = ATN(SQR(1 - cs * cs) / cs)
IF cs < 0 THEN ah = ah + pi

REM Lever du soleil
pm = h + fh + (et - ah) / hr
IF pm < 0 THEN pm = pm + 24
hs = INT(pm): pm = 60 * (pm - hs)
PRINT USING "Heure du lever: ## h ## m"; hs; pm

REM Coucher du soleil
pm = h + fh + (et + ah) / hr
IF pm > 24 THEN pm = pm - 24
hs = INT(pm): pm = 60 * (pm - hs)
PRINT USING "Heure du coucher: ## h ## m"; hs; pm

END

1300 REM Rotation de l'angle r autour de l'axe z
rx = COS(r) * x + SIN(r) * y: ry = -SIN(r) * x + COS(r) * y
x = rx: y = ry: RETURN


Télécharger le fichier source

Retour à la page d'accueil -o- Reveno al la akcepta retpagho

Date de création: 21 Février 2000