Astronomie

Soyez le premier à donner votre avis sur cette source.

Vue 10 081 fois - Téléchargée 750 fois

Description

Plusieurs fonctions dans un module astronomie.bas. certaines ont déjà été traitées mais à ma connaissance pas l'ensemble.
Fonctions de conversions radian<->degré décimaux<->degré minutes secondes
Fonctions jours juliens <-> jour du calendrier
Fonction Modulo qui généralise mod à de grands nombres
Fonctions IsBissextile, IsGregorien dont l'intitulé est limpide
Fonctions JourSemaine avec une natrée en jour juline ou en jour du calendrier
Fonction NuméroDuJour, NuméroDeLaSemaine qui renvoie le numéro du jour et de la semaine dans l'année
Fonction Paques qui renvoie la date de Pâques pour une année donnée (à partir de 325)
Fonction DateDelaLune renvoie la phase de la le nombre de jours écoulés depuis la dernière nouvelle lune
Fonction PhaseLune renvoie la phase de la lune et le nombre de jours depuis le début de cette phase
Fonction NombreLunaisons renvoie le nombre de lunaisons depuis le 1er janvier 1900
Fonctions DateNouvelleLune, DatePremierQuartier, DatePleineLune, DateDernierQuartier renvoie le jour julien de la phase correspondante d'une lunaison donnée
Fonction Saison renvoie la date du début des saisons pour une année donnée
Fonctions d'éléments orbitaux : LongitudeApparenteSoleil, LongitudeMoyenne, DemiGrandAxe, Excentricite, Inclinaison, LongitudeNoeudAscendant, AnomalieMoyenne, AnomalieExcentrique, AnomalieVraie, latitude, LongitudeEcliptique, Calcul_Longitude, Calcul_Longitude_Lune

Source / Exemple :


Tout est dans le ZIP garanti sans virus. ce n'est pas un exe mais juste un .bas
Pour vous donner une idée voici le code d'une des fonctions

'cette fonction renvoie la longitude de la planète en radian.
Function Calcul_Longitude(Planete As Long, JJ As Double) As Double
    'Pour calculer la longitude (l) par rapport à l'écliptique, il faut connaître
    'i, l'inclinaison
    'u, la latitude de la planète
    'Omega, la longitude du noeud ascendant
    'tan(l - Omega)=cos(i)*tan(u)   formule 21.4 page 78
    
    'Pour cela on utilise les fonctions correspondantes qui dépendent de la planète et du
    'temps écoulé de puis le 1er janvier 1900 à minuit (T) ainsi que de T^2 et T^3
    
    Dim T As Double
    T = (JJ - 2415020#) / 36525
    
    Dim T_2 As Double
    T_2 = T * T
    
    Dim T_3 As Double
    T_3 = T * T_2
    
    If Planete = Lune Then
        Calcul_Longitude = Calcul_Longitude_Lune(T, T_2, T_3)
        Exit Function
    End If
    
    'L'inclinaison
    'i=a0+a1*T+a2*T_2+a3*T_3 tableau 20a, page 73
    Dim i As Double
    i = Inclinaison(Planete, T, T_2, T_3)
    
    'u, L'argument (?) de la latitude de la planète dépend de
    'LM, la longitude moyenne
    'AV, l'anomalie vraie
    'AM, l'anomalie moyenne
    'Omega, la longitude du noeud ascendant
    'u=LM+AV-AM-Omega   formule 21.3 page 78
    
    'LM, la longitude moyenne
    'LM=a0+a1*T+a2*T_2+a3*T_3 tableau 20a, page 73 (dans le tableau il s'agit de L)
    Dim LM As Double
    LM = LongitudeMoyenne(Planete, T, T_2, T_3)
    
    'AV, l'anomalie vraie dépend de l'excentricité e et de l'anomalie excentrique AE
    'tan(AV/2)=Racine((1+e)/(1-e))*tan(AE/2)    formule 21.1 page 78
    
    'e, l'excentricité
    'e=a0+a1*T+a2*T_2+a3*T_3 tableau 20a, page 73
    Dim e As Double
    e = Excentricite(Planete, T, T_2, T_3)
    
    'AE, l'anomalie excentrique dépend de
    'e, l'excentricité
    'AM, l'anomalie moyenne
    'Elle se trouve en résolvant l'équation de Kepler
    '2ème méthode modifiée pour obtenir des radians, page 69
    'AE1=AE0+(AM+e*sin(AE0)-AE0)/(1-e*cos(AE0))
    
    'AM, l'anomalie moyenne dépend de
    'AM=a0+a1*T+a2*T_2+a3*T_3 page 77 (55 pour la terre)
    
    'Omega, la longitude du noeud ascendant
    'Omega=a0+a1*T+a2*T_2+a3*T_3 tableau 20a, page 73 (dans le tableau il s'agit de grand oméga)
    Dim Omega As Double
    Omega = LongitudeNoeudAscendant(Planete, T, T_2, T_3)
    
    Dim AM As Double
    AM = AnomalieMoyenne(Planete, T, T_2, T_3)
    
    Dim AE As Double
    AE = AnomalieExcentrique(e, AM)
    
    Dim AV As Double
    AV = AnomalieVraie(e, AE)
    
    Dim u As Double
    u = latitude(LM, AV, AM, Omega)
    
    Dim L As Double
    L = LongitudeEcliptique(i, u, Omega)
    
    Calcul_Longitude = L

End Function

Conclusion :


Ce module n'est pas un programme en lui-même mais peut servir à créer :
un calendrier perpétuel
une simulation du mouvement des planètes

et plein d'autres choses.
Attention pour Pluton, les calculs sont faux. Dés que je trouve les vraies valeurs, je modifie.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Patrice H
Messages postés
43
Date d'inscription
dimanche 12 mars 2006
Statut
Membre
Dernière intervention
24 juin 2011
-
Ces modules ont beaucoup évolué depuis six semaines et je vais sans doute poster les nouvelles sources prochainement.
Pour la position des planètes, il s'agit de position sur l'écliptique et cela ne dépend donc d'aucun fuseau horaire. Pour les dates de saison (et de Pâques), la différence d'horaire devrait permettre d'adapter pour avoir les informations sur le fuseau souhaité.
Je précise que seuls les calculs de ces valeurs m'ont intéressé, ainsi que le fait d'en apprendre davantage sur ce sujet, mais l'astronomie en tant que tel ne m'intéresse pas particulièrement.
Je me suis basé pour les premiers calculs sur un livre de MEEUS et pour ceux qui vont venir sur un livre de BOUIGUES.
hplodar
Messages postés
1
Date d'inscription
lundi 25 avril 2005
Statut
Membre
Dernière intervention
1 juin 2008
-
Interessant, mais pour le calcul des dates des saisons, les résultats donnés se semblent pas être en UTC (heure internationales) (heure de Greenwich). Sinon, pour quel fuseau horaire ce code est-il fait?
CmTop
Messages postés
21
Date d'inscription
vendredi 2 avril 2010
Statut
Membre
Dernière intervention
16 juillet 2011
-
Merci, pour la réponse !
Patrice H
Messages postés
43
Date d'inscription
dimanche 12 mars 2006
Statut
Membre
Dernière intervention
24 juin 2011
-
cela signifie que 2415020 est un double. Cela a la même valeur que 2415020.0
CmTop
Messages postés
21
Date d'inscription
vendredi 2 avril 2010
Statut
Membre
Dernière intervention
16 juillet 2011
-
Très interessant ! que je vais m'empresser de convertir dans mon language pour l'avoir sous la main.

Juste une petite question : Je ne connais pas le VB a quoi correspond le '#' dans cette formule
T = (JJ - 2415020#) / 36525

merci encore.

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.