Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.sys.mac.programmation > #2781
| From | Eric H <prime-alexis@meta-science.fr> |
|---|---|
| Newsgroups | fr.sci.maths, fr.sci.astronomie, fr.comp.sys.mac.programmation |
| Subject | Re: Calculer les dates de Pleine Lune (Re: Mises à Jours : Soft Méta-Science) |
| Followup-To | fr.comp.sys.mac.programmation |
| Date | 2025-03-14 14:06 +0000 |
| Organization | www.meta-science.fr |
| Message-ID | <7bc84766ee49e6b80c603eb730121726e12a3272@i2pn2.org> (permalink) |
| References | (11 earlier) <67d42850$0$16840$426a74cc@news.free.fr> <vr19ha$1bhcj$1@dont-email.me> <67d42bfb$0$12945$426a34cc@news.free.fr> <16307d79f14b4963ff54643d52ce6648b0375da1@i2pn2.org> <07b31908227dac22e8bf68c750ae3b18f70c4499@i2pn2.org> |
Cross-posted to 3 groups.
Followups directed to: fr.comp.sys.mac.programmation
Le vendredi 14 mars 2025 à 14:57 , Eric H, S'est exprimé :
> Le vendredi 14 mars 2025 à 14:45 , Eric H, S'est exprimé :
>
>> Le vendredi 14 mars 2025 à 14:15 , Michel Talon, S'est exprimé :
>>
>>> https://python.jpvweb.com/python/mesrecettespython/doku.php?id=phases_lune
>>
>> super le code a l'air touffue et semble être complexe il doit prendre en
>> compte les nombreuses exceptions des calcules de phases de lune, merci je
>> vous tiens au courant
>>
>
> Eric(Rê) :
>
> calcule des pahses de lune, j'ai ça comme code en python, tu peux refaire
> le code en langage Xojo ?
>
> Loup GPT :
>
> Oui, envoie-moi ton code Python et je le traduirai en Xojo. 😊
>
> Eric(Rê) :
>
> (envoi du code)
>
> Loup GPT :
>
> Oui, je peux traduire ce code Python en Xojo. Voici une version en Xojo
> qui implémente les mêmes calculs :
>
> Loup GPT :
>
> Function Bissextile(An As Integer) As Boolean
> If (An Mod 4) = 0 Then
> If (An Mod 100) = 0 And (An Mod 400) <> 0 Then
> Return False
> Else
> Return True
> End If
> Else
> Return False
> End If
> End Function
>
> Function PostDate(D1 As String, D2 As String) As Boolean
> Dim J1, M1, A1, J2, M2, A2 As Integer
> Dim parts1() As String = D1.Split("/")
> Dim parts2() As String = D2.Split("/")
>
> J1 = Val(parts1(0))
> M1 = Val(parts1(1))
> A1 = Val(parts1(2))
>
> J2 = Val(parts2(0))
> M2 = Val(parts2(1))
> A2 = Val(parts2(2))
>
> If A2 > A1 Then
> Return True
> ElseIf A2 = A1 Then
> If M2 > M1 Then
> Return True
> ElseIf M2 = M1 Then
> If J2 >= J1 Then
> Return True
> End If
> End If
> End If
> Return False
> End Function
>
> Function JJ2Date(JJ As Double) As String
> JJ = JJ + 0.5
> Dim Z As Integer = Floor(JJ)
> Dim F As Double = JJ - Z
> Dim A, B, C, D, E As Integer
> Dim alpha As Integer
>
> If Z < 2299161 Then
> A = Z
> Else
> alpha = Floor((Z - 1867216.25) / 36524.25)
> A = Z + 1 + alpha - Floor(alpha / 4)
> End If
>
> B = A + 1524
> C = Floor((B - 122.1) / 365.25)
> D = Floor(365.25 * C)
> E = Floor((B - D) / 30.6001)
>
> Dim JD As Double = B - D - Floor(30.6001 * E) + F
> Dim J As Integer = Floor(JD)
> Dim M As Integer
> If E < 13.5 Then
> M = E - 1
> Else
> M = E - 13
> End If
>
> Dim Y As Integer
> If M > 2 Then
> Y = C - 4716
> Else
> Y = C - 4715
> End If
>
> Return Format(J, "00") + "/" + Format(M, "00") + "/" + Str(Y)
> End Function
>
> Function CalculPhasesLune(k As Double) As String
> Dim T As Double = k / 1236.85
> Dim JJ As Double = 2415020.75933 + 29.53058868 * k + 0.0001178 * T * T
> - 0.000000155 * T * T * T
>
> Dim M As Double = 359.2242 + 29.10535608 * k - 0.0000333 * T * T -
> 0.00000347 * T * T * T
> Dim MP As Double = 306.0253 + 385.81691806 * k + 0.0107306 * T * T +
> 0.00001236 * T * T * T
> Dim F As Double = 21.2964 + 390.67050646 * k - 0.0016528 * T * T -
> 0.00000239 * T * T * T
>
> Dim kp As Integer = Round((k - Floor(k)) * 100)
>
> If kp = 0 Or kp = 50 Then
> JJ = JJ - 0.4068 * Sin(Radians(MP))
> Else
> JJ = JJ - 0.6280 * Sin(Radians(MP))
> If kp = 25 Then
> JJ = JJ + 0.0028 - 0.0004 * Cos(Radians(M)) + 0.0003 *
> Cos(Radians(MP))
> Else
> JJ = JJ + 0.0028 + 0.0004 * Cos(Radians(M)) - 0.0003 *
> Cos(Radians(MP))
> End If
> End If
>
> Return JJ2Date(JJ)
> End Function
>
> Function PhasesLune(D As String, n As Integer) As String()
> Dim k As Double = (Val(D.Right(4)) - 1900) * 12.3685
> Dim phaseDates() As String
> Dim p As Integer = 0
> Dim d As String = CalculPhasesLune(k)
>
> While Not PostDate(D, d)
> k = k + 0.25
> p = (p + 1) Mod 4
> d = CalculPhasesLune(k)
> Wend
>
> phaseDates.Append(d)
>
> For i As Integer = 1 To n - 1
> k = k + 0.25
> p = (p + 1) Mod 4
> d = CalculPhasesLune(k)
> phaseDates.Append(d)
> Next
>
> Return phaseDates
> End Function
>
> suivi programmation
>
Comparaison de précision :
✅ Avantages du calcul mathématique :
• Facile à implémenter et à exécuter sans dépendre de fichiers
externes.
• Fonctionne pour n’importe quelle date passée ou future.
• Assez précis pour une estimation des phases lunaires.
⚠️ Limites :
• Le cycle lunaire réel varie légèrement (29,27 à 29,83 jours) à cause
des perturbations gravitationnelles.
• Une table astronomique (comme celle de la NASA) tient compte de ces
variations et est plus précise (précision à la minute près).
• Une erreur de 1 jour peut se produire après plusieurs décennies
d’écart.
Alternative : Utilisation d’un tableau de données précalculées
Si tu veux une précision parfaite, une solution serait de stocker une
table des nouvelles et pleines lunes pour plusieurs années et de comparer
la date donnée avec cette table.
👉 Que veux-tu privilégier ?
• Simplicité et rapidité (méthode actuelle, ±1 jour d’erreur possible)
• Précision absolue (chargement d’un fichier avec les vraies dates des
pleines lunes)
Si tu veux la méthode avec un fichier/table, je peux te proposer un
format optimisé en Xojo. 😊
PS : j'ai besoin d'un calcule absolument préci pour mon calendrier, donc
dommage ce code ne fera pas l'affaire j'utilise déjà un tableau de 1801 à
2099
--
\ / Croire c'est le contraire de savoir,
-- o -- si j'y crois, je ne sais pas,
/ \ si je sais, pas la peine d'y croire.
--> Je crois pas, car je sais que c'est faux malgré tout...
"Les grands esprits discutent des idées ; les esprits moyens discutent
des événements ; les petits esprits discutent des gens." (Eleanor Roosevelt)
Ma Fiche Mon Site Voyance (MSV) : <https://miniurl.be/r-5lsx>
Mes Applications : <https://sites.google.com/view/soft-meta-science/accueil>
Dossier DropBox pour voir des documents : <https://urlz.fr/rK5L>
Le Troll(19) : <https://miniurl.be/r-5rzl>
Comme le forgerons qui bat le fer pour obtenir une Épée, j'obtient
toujours un résultat final, même si ça met des années, je sais que ce que
je fait ce n'est pas pour rien./ (C)
Loi 636 :
Il est mal que le mal fasse du mal au bien.
Il est bien que le mal fasse du mal au mal.
Il est bien que le bien fasse du bien au bien.
Il est bien que le mal fasse du bien au bien.
Il est mal que le mal fasse du bien au mal.
Il est mal que le bien fasse du bien au mal.
Il est bien que le mal s’entre-tue.
Back to fr.comp.sys.mac.programmation | Previous | Next — Previous in thread | Next in thread | Find similar
Mises à Jours : Soft Méta-Science Prime Alexis <prime-alexis@meta-science.fr> - 2025-03-03 22:04 +0000
Re: Mises à Jours : Soft Méta-Science Prime Alexis <prime-alexis@meta-science.fr> - 2025-03-04 11:54 +0000
Re: Mises à Jours : Soft Méta-Science DuboisP <patrickr.dubois.don't.spam@free.fr.invalid> - 2025-03-04 15:54 +0100
Calculer les dates de Pleine Lune (Re: Mises à Jours : Soft Méta-Science) Prime Alexis <prime-alexis@meta-science.fr> - 2025-03-04 19:48 +0000
Re: Calculer les dates de Pleine Lune (Re: Mises à Jours : Soft Méta-Science) Eric H <prime-alexis@meta-science.fr> - 2025-03-14 13:57 +0000
Re: Calculer les dates de Pleine Lune (Re: Mises à Jours : Soft Méta-Science) Eric H <prime-alexis@meta-science.fr> - 2025-03-14 14:06 +0000
Re: Calculer les dates de Pleine Lune (Re: Mises à Jours : Soft Méta-Science) Eric H <prime-alexis@meta-science.fr> - 2025-03-14 14:46 +0000
Re: Mises à Jours : Soft Méta-Science Laika <laika@not-for-mail.invalid> - 2025-03-09 21:53 +0100
csiph-web