Section courante

A propos

Section administrative du site

Depuis déjà fort longtemps, certaines applications DOS, fournissait la possibilité d'obtenir les phases lunaires lorsqu'on consultait leur calendrier comme en fait fois la capture du MonsterBook :

Calendrier du MonsterBook

Pourtant, même s'il ne s'agit que de convertir une date Julienne en Grégorienne pour ensuite calculer à tous les 30 jours (plus exactement 29,53058) la lune revenant inlassablement, les systèmes d'exploitation ne l'indique pas !Vous trouverez la réponse que vous souhaitez, inspiré du code d'Alan Graff, à l'aide du code source QuickBASIC suivant :

  1. DECLARE FUNCTION MoonPhase! (Year!, Month!, Day!)
  2. FOR I = 1 TO 31
  3.  CircleType = MoonPhase(1999, 11, I)
  4.  IF CircleType > .97 THEN
  5.   PRINT STR$(I) + " novembre 1999, Phase de la lune:Pleine lune"
  6.  ELSE
  7.   IF CircleType < .03 THEN
  8.    PRINT STR$(I) + " novembre 1999, Phase de la lune:Pas de lune"
  9.   ELSE
  10.    IF (CircleType > .46) AND (CircleType < .53) THEN
  11.     PRINT STR$(I) + " novembre 1999, Phase de la lune: Quart de lune"
  12.    END IF
  13.   END IF
  14.  END IF
  15. NEXT
  16. FOR I = 1 TO 31
  17.  CircleType = MoonPhase(2007, 8, I)
  18.  IF CircleType > .97 THEN
  19.   PRINT STR$(I) + " août 2007, Phase de la lune:Pleine lune"
  20.  ELSE
  21.   IF CircleType < .03 THEN
  22.    PRINT STR$(I) + " août 2007, Phase de la lune:Pas de lune"
  23.   ELSE
  24.    IF (CircleType > .46) AND (CircleType < .53) THEN
  25.     PRINT STR$(I) + " août 2007, Phase de la lune: Quart de lune"
  26.    END IF
  27.   END IF
  28.  END IF
  29. NEXT
  30.  
  31. FUNCTION MoonPhase (Year, Month, Day)
  32.  IF Month <= 2 THEN
  33.   Year = Year - 1
  34.   Month = Month + 12
  35.  END IF
  36.  Month = Month - 3
  37.  XYear = Year MOD 100
  38.  Century = INT((INT(Year / 100) * 146097) / 4)
  39.  XYear = INT((XYear * 1461) / 4)
  40.  M = (INT(((((Month * 153) + 2) / 5) + Day) + 1721119 + XYear + Century) + 4.867) / 29.53058
  41.  MoonPhase = ABS(2 * (M - INT(M)) - 1)
  42. END FUNCTION

on obtiendra le résultat suivant :

1 novembre 1999, Phase de la lune: Quart de lune
8 novembre 1999, Phase de la lune:Pas de lune
15 novembre 1999, Phase de la lune: Quart de lune
23 novembre 1999, Phase de la lune:Pleine lune
30 novembre 1999, Phase de la lune: Quart de lune
6 août 2007, Phase de la lune: Quart de lune
13 août 2007, Phase de la lune:Pas de lune
20 août 2007, Phase de la lune: Quart de lune
28 août 2007, Phase de la lune:Pleine lune


Dernière mise à jour : Mercredi, le 14 septembre 2016