de mikelima le Dimanche 20 Janvier 2008 21:14
Effectivement, c'est le même. Je n'avais pas cliqué sur le lien cité par Thiev.
pour répondre à la question plus basique de départ, de comment programmer, ci dessous le source de mon prog en Visual Basic
Private Sub Form_Load()
Dim lat As Double
Dim lon As Double
Dim lejour As Date
Dim cejour As String
Const pi As Double = 3.14159265358979
'par defaut, la date courante et les coordonnees de Carpentras
cejour = Format(Date, "dd/mm/yyyy")
datej.Text = Format(cejour, "dd/mm")
an.Text = Format(cejour, "yyyy")
latitude(1).Text = 1.4
latitude(2).Text = "N"
longitude(0).Text = 5
longitude(1).Text = 5.5
longitude(2).Text = "E"
Me.Show
Call pre_exec
End Sub
Private Sub pre_exec()
Dim d1 As Date, d2 As Date
Dim fractemps As Double, eqtemps As Double, declin As Double, ah As Double
Dim m As Double, c As Double, c1 As Double, l As Double, r As Double, r1 As Double
Const pi As Double = 3.14159265358979
latitude(2).Text = UCase(latitude(2).Text)
longitude(2).Text = UCase(longitude(2).Text)
lejour = datej.Text + "/" + an.Text
'conversion coordonnées en radians
lat = ((latitude(0).Text) + (latitude(1).Text) / 60) * pi / 180
lon = ((longitude(0).Text) + (longitude(1).Text) / 60) * pi / 180
If (longitude(2) = "E") Then lon = lon * -1
d1 = "31/03" 'calcul de date de l'heure d'été
j1 = DatePart("w", d1)
d1 = d1 - j1 + 1
d2 = "31/10" 'calcul de date de l'heure d'hiver
j2 = DatePart("w", d2)
d2 = d2 - j2 + 1
'fraction de l'année en radians
If (Year(lejour) Mod 4 = 0) Then annee = 366 Else annee = 365
fractemps = DatePart("y", lejour) / annee * 2 * pi
'équation du temps en minutes
m = 357.5291 * pi / 180 + 0.95560028 * pi / 180 * DatePart("y", lejour)
c = 1.9148 * pi / 180 * Sin(m) + 0.02 * pi / 180 * Sin(2 * m) + 0.0003 * pi / 180 * Sin(3 * m)
c1 = c * 180 / pi
l = 280.47 * pi / 180 + c + 0.98560028 * pi / 180 * DatePart("y", lejour)
r = -2.468 * pi / 180 * Sin(2 * l) + 0.053 * pi / 180 * Sin(4 * l) - 0.0014 * pi / 180 * Sin(6 * l)
r1 = r * 180 / pi
eqtemps = (c1 + r1) * 4
'déclinaison en radians (obliquité de l'ecliptique 23°27')
declin = Arcsinus(0.397949 * Sin(l))
'angle horaire au lever et au coucher en degres
'6° sous l'horizon pour le calcul direct du jour et nuit aero
ah = (-0.105 - Sin(declin) * Sin(lat)) / (Cos(declin) * Cos(lat))
ah = Arcosinus(ah) * 180 / pi
'heures jour et nuit aeronautique en minutes
jour = 720 + 4 * ((lon * 180 / pi) - ah) + eqtemps
nuit = 720 + 4 * ((lon * 180 / pi) + ah) + eqtemps
'heures jour et nuit pour les heures en UTC en format hh:mm
jour = Format(TimeSerial(Int(jour / 60), jour - (60 * Int(jour / 60)), 0), "hh:mm")
nuit = Format(TimeSerial(Int(nuit / 60), nuit - (60 * Int(nuit / 60)), 0), "hh:mm")
'été ou hiver pour les heures en local
If (lejour < d1) Then
jour1 = Format(DateAdd("h", 1, jour), "hh:mm")
nuit1 = Format(DateAdd("h", 1, nuit), "hh:mm")
periode = "Nous sommes en heure d'hiver"
Else
jour1 = Format(DateAdd("h", 2, jour), "hh:mm")
nuit1 = Format(DateAdd("h", 2, nuit), "hh:mm")
periode = "Nous sommes en heure d'été"
End If
End Sub
Function Arcosinus(x As Double) As Double
Arcosinus = Atn(-x / Sqr(-x * x + 1)) + 2 * Atn(1)
End Function
Function Arcsinus(x As Double) As Double
Arcsinus = Atn(x / Sqr(-x * x + 1))
End Function
Private Sub Calculer_Click()
Call pre_exec
End Sub
Private Sub exit_Click()
Unload Me
End Sub
Private Sub reset_Click()
Call Form_Load
End Sub
Il vaut mieux s'attendre au prévisible que d'être surpris par l'inattendu
Le seul cas ou il y a trop d'essence c'est quand il y a le feu