Les phases de la lune

Soyez le premier à donner votre avis sur cette source.

Vue 19 786 fois - Téléchargée 856 fois

Description

Calcul des phases de la lune entre le 06/01/2000 et le 31/12/2199.
Controlé sous IE 7 et Opéra 9.26

Source / Exemple :


// Fichier JavaScript LGH

function calcul() {
    if (text3.value == '' || text3.value < 2000 || text3.value > 2199 || text1.value == '' || text1.value < 1 || text1.value > 31 || text2.value == '' || text2.value < 1 || text2.value > 12) alert('Les calculs ne sont faits que pour des dates libéllées normalement et comprises en le 06/01/2000 et le 31/12/2199 !');
    else if (text2.value == 2 && text1.value > 29 || text2.value == 4 && text1.value > 30 || text2.value == 6 && text1.value > 30 || text2.value == 9 && text1.value > 30 || text2.value == 11 && text1.value > 30) alert('Les calculs ne sont faits que pour des dates libéllées normalement et comprises en le 06/01/2000 et le 31/12/2199 !');
    else if (text2.value == 2 && eval(text3.value / 4) != Math.round(eval(text3.value / 4)) && text1.value > 28) alert('Les calculs ne sont faits que pour des dates libéllées normalement et comprises en le 06/01/2000 et le 31/12/2199 !');
    else {
        a = eval(text1.value);
        b = eval(text2.value - 1);
        if (b == 11) c = 334;
        if (b == 10) c = 304;
        if (b == 9) c = 273;
        if (b == 8) c = 243;
        if (b == 7) c = 212;
        if (b == 6) c = 181;
        if (b == 5) c = 151;
        if (b == 4) c = 120;
        if (b == 3) c = 90;
        if (b == 2) c = 59;
        if (b == 1) c = 31;
        if (b < 1) c = 0;
        e = eval(text3.value - 2000);
        f = e / 4;
        if (f == Math.floor(f) && text2.value > 2) f = Math.floor(f) + 1;
        else f = Math.floor(f);
        g = e * 365 + f + a + c;
        if (text2.value > 2 && text3.value >= 2100) g = g - 1; //nbr de jours entiers qui sépare la date en cours du 1er janvier 2000 0h UTC
        h = eval(((g - 5.76) * 86400) / 2551443); //Correction par rapport à la date de la nouvelle lune du 6/01/00, traduction des jours en seconde et calcul du nbr de lunaisons.
        i = Math.round((h - Math.floor(h)) * 100) / 100;
        if (i <= 0.05 || i >= 0.95) i = "Période de nouvelle lune<br\/><br\/><img src=\"lune1.jpg\" name=\"img73\" alt=\"Période de nouvelle lune\">";
        if (i <= 0.55 && i >= 0.45) i = "Période de pleine lune<br\/><br\/><img src=\"lune3.jpg\" name=\"img74\" alt=\"Période de pleine lune\">";
        if (i < 0.45 && i > 0.05) i = "Période de lune ascendante<br\/><br\/><img src=\"lune2.jpg\" name=\"img75\" alt=\"Période de lune ascendante\">";
        if (i < 0.95 && i > 0.55) i = "Période de lune descendante<br\/><br\/><img src=\"lune4.jpg\" name=\"img76\" alt=\"Période de lune descendante\">";
        document.getElementById('div').innerHTML =
        '<P>Somme des jours entiers ou non du mois écoulé à la date visée = ' + a + '</P>' +
        '<P>Somme des mois entiers de la date visée = ' + b + '</P>' +
        '<P>Somme des jours des mois entiers de la date visée sans 29/02 avec étalonnage sur le 06/01/2000 = ' + c + '</P>' +
        '<P>Somme des années depuis 2000 jusqu\'à la date choisie = ' + e + ' ans</P>' +
        '<P>Somme des années bisextiles avant la date visée = ' + Math.floor(f) + ' soit ' + f + ' jours de plus.</P>' +
        '<P>Total des jours entiers ou non de 01/01/2000 jusqu\'à la date visée y compris les 29/02 = ' + g + '</P>' +
        '<P>Nombre de lunaisons = ' + Math.round(h * 100) / 100 + '</P>' +
        '<P>Phase de la lune à la date visée</P>' + i;
    }
}

Conclusion :


Un exemple dans le zip

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

jantosze
Messages postés
72
Date d'inscription
mercredi 29 mai 2013
Statut
Membre
Dernière intervention
15 mai 2009
-
Salut,

Pour faire fonctionner ton script, j'ai:
pour accéder à la fonction calcul(),
<form action="calcul()" >


</form>
Dans la fonction calcul():
function calcul()
{
var t3 = document.getElementById("text3").value;
var t1 = document.getElementById("text1").value;
var t2 = document.getElementById("text2").value;
.... et donc substituer tous les appels textX par tX
}
Bon ca fonctionne ....

cdt
JAN
marcelo71
Messages postés
1
Date d'inscription
vendredi 12 août 2011
Statut
Membre
Dernière intervention
1 octobre 2011
-
Ce script n'est pas valable.
J'ai comparé le résultat à deux site.

Ce script génère des décalage de 1 voire 2 deux jours!!
Dommage.
cs_lgh
Messages postés
41
Date d'inscription
vendredi 23 mai 2003
Statut
Membre
Dernière intervention
8 avril 2009
-
Bonjour,
Merci de vous interesser à cette source.
Le décalage constaté est normal pour ce type de calcul. C'est pour cela que les phases de nouvelle lune et pleine lune sont données en période de trois jours. En effet le calcul des phases de la lune est d'une grande complexité et souvent réduit à une époque (ici 200 ans si je me souviens bien de ce que j'ai fait). l'Institut de mécanique céleste qui m'a servi de référence ne le donne du reste que pour 6500 ans (que, si jose dire). Pour plus d'info voir http://www.imcce.fr/fr/grandpublic/phenomenes/phases_lune/index.php
A bientôt.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.