Lever et coucher du soleil...
2 participants
Page 1 sur 1
Lever et coucher du soleil...
Voilà le code, j'explique dedans, en rouge les variables.
IF ($fh == "") {$fh = date("H") - gmdate("H") ;}$fh est le décalage entre l'heure locale et l'heure TU automatique si non renseigné.
IF ($La == "") { $La = 48.833;}
IF ($Lo == "") { $Lo = -2.333;}
Latitude et longitude, si non renseignées = PARIS
IF ($ville == "") { $ville = "Paris";}
IF ($mois == "") {$mois = date("m") ;}
IF ($jour == "") {$jour = date("d") ;}
Idem pour la date, par défaut = aujourd'hui.
// Fuseau horaire et coordonnées géographiques
$k = 0.0172024;
$jm = 308.67;
$jl = 21.55;
$e = 0.0167;
$ob = 0.4091;
$PI= 3.1415926536;
//Hauteur du soleil au lever et au coucher
$dr = $PI/ 180; Conversion Degrés Radians
$hr = $PI/ 12;
$ht = (-40 / 60);corection de la réfraction
$ht = $ht * $dr;
$La = $La * $dr;
$Lo = $Lo * $dr;Coordonnées en radians
//Date
IF ($mois < 3) {
$mois = $mois + 12;
}Pour ne pas être géné en cas d'année bissextile
//Heure TU du milieu de la journée
$h = 12 + ($Lo / $hr);
//Nombre de jours écoulés depuis le 1 Mars O h TU
$J = floor(30.61 * ($mois + 1)) + $jour + ($h / 24) - 123;
//Anomalie et longitude moyenne
$M = $k * ($J - $jm);
$L = $k * ($J - $jl);
//Longitude vraie
$S =$L + 2 * $e * Sin($M) + 1.25 * $e * $e * Sin(2 * $M);
//Coordonnées rectangulaires du soleil dans le repère équatorial
$X = Cos($S);
$Y = Cos($ob) * Sin($S);
$Z = Sin($ob) * Sin($S);
//Equation du temps et déclinaison
$R = $L;
$rx = Cos($R) * $X + Sin($R) * $Y;
$ry = -Sin($R) * $X + Cos($R) * $Y;
$X = $rx;
$Y = $ry;
$ET = atan($Y / $X); Equation du temps
$DC = atan($Z / Sqrt(1 - $Z * $Z));Déclinaison du soleil
//Angle horaire au lever et au coucher
$cs = (Sin($ht) - Sin($La) * Sin($DC)) / Cos($La) / Cos($DC);
IF ($cs > 1) { $CalculSol = "Ne se lève pas";}
IF ($cs < -1) { $CalculSol = "Ne se couche pas";}
IF ($cs == 0) {
$ah = $PI / 2;
En fonction de la latitude (> 66°) le soleil peut ne pas se lever ou se coucher, ce test pour eviter l'erreur.
}ELSE{
$ah = atan(Sqrt(1 - $cs * $cs) / $cs);
situation normale
}
IF ($cs < 0) { $ah = $ah + $PI;}
//Lever du soleil
$Pm = $h + $fh + ($ET - $ah) / $hr;
Au dessus la formule qui explique tout:
heure du milieu de journée
+ décalage avec TU
+ equation du temps
- la moitié de la durée d'ensoleillement du jour.
IF ($Pm < 0) { $Pm = $Pm + 24;}
IF ($Pm > 24) { $Pm = $Pm - 24;}
$hs = floor($Pm);
$Pm = floor(60 * ($Pm - $hs));
IF (strlen($hs)<2) {$hs = "0".$hs;}
IF (strlen($Pm)<2) {$Pm = "0".$Pm;}
IF ($CalculSol ==""){
$lev = $hs. ":" .$Pm;
}ELSE{
$lev = "---";}
//Coucher du soleil
$Pm = $h + $fh + ($ET + $ah) /$hr;
Pareil...:
heure du milieu de journée
+ décalage avec TU
+ equation du temps
+ la moitié de la durée d'ensoleillement du jour.
IF ($Pm > 24) { $Pm = $Pm - 24;}
IF ($Pm < 0) { $Pm = $Pm + 24;}
$hs = floor($Pm);
$Pm = floor(60 * ($Pm - $hs));
IF (strlen($hs)<2) {$hs = "0".$hs;}
IF (strlen($Pm)<2) {$Pm = "0".$Pm;}
Ca comme en haut pour sortir en heure et minutes
IF ($CalculSol ==""){
$couch = $hs. ":" .$Pm;
}ELSE{
$couch = "---";}
Affichage
ECHO "Horaires du Soleil à ".$ville."
";
ECHO "Lever = " .$lev ;
ECHO "
";
ECHO "Coucher = ". $couch;
?>
Le reste est expliqué derrière les // demander là si vs avez une autre question...
IF ($fh == "") {$fh = date("H") - gmdate("H") ;}$fh est le décalage entre l'heure locale et l'heure TU automatique si non renseigné.
IF ($La == "") { $La = 48.833;}
IF ($Lo == "") { $Lo = -2.333;}
Latitude et longitude, si non renseignées = PARIS
IF ($ville == "") { $ville = "Paris";}
IF ($mois == "") {$mois = date("m") ;}
IF ($jour == "") {$jour = date("d") ;}
Idem pour la date, par défaut = aujourd'hui.
// Fuseau horaire et coordonnées géographiques
$k = 0.0172024;
$jm = 308.67;
$jl = 21.55;
$e = 0.0167;
$ob = 0.4091;
$PI= 3.1415926536;
//Hauteur du soleil au lever et au coucher
$dr = $PI/ 180; Conversion Degrés Radians
$hr = $PI/ 12;
$ht = (-40 / 60);corection de la réfraction
$ht = $ht * $dr;
$La = $La * $dr;
$Lo = $Lo * $dr;Coordonnées en radians
//Date
IF ($mois < 3) {
$mois = $mois + 12;
}Pour ne pas être géné en cas d'année bissextile
//Heure TU du milieu de la journée
$h = 12 + ($Lo / $hr);
//Nombre de jours écoulés depuis le 1 Mars O h TU
$J = floor(30.61 * ($mois + 1)) + $jour + ($h / 24) - 123;
//Anomalie et longitude moyenne
$M = $k * ($J - $jm);
$L = $k * ($J - $jl);
//Longitude vraie
$S =$L + 2 * $e * Sin($M) + 1.25 * $e * $e * Sin(2 * $M);
//Coordonnées rectangulaires du soleil dans le repère équatorial
$X = Cos($S);
$Y = Cos($ob) * Sin($S);
$Z = Sin($ob) * Sin($S);
//Equation du temps et déclinaison
$R = $L;
$rx = Cos($R) * $X + Sin($R) * $Y;
$ry = -Sin($R) * $X + Cos($R) * $Y;
$X = $rx;
$Y = $ry;
$ET = atan($Y / $X); Equation du temps
$DC = atan($Z / Sqrt(1 - $Z * $Z));Déclinaison du soleil
//Angle horaire au lever et au coucher
$cs = (Sin($ht) - Sin($La) * Sin($DC)) / Cos($La) / Cos($DC);
IF ($cs > 1) { $CalculSol = "Ne se lève pas";}
IF ($cs < -1) { $CalculSol = "Ne se couche pas";}
IF ($cs == 0) {
$ah = $PI / 2;
En fonction de la latitude (> 66°) le soleil peut ne pas se lever ou se coucher, ce test pour eviter l'erreur.
}ELSE{
$ah = atan(Sqrt(1 - $cs * $cs) / $cs);
situation normale
}
IF ($cs < 0) { $ah = $ah + $PI;}
//Lever du soleil
$Pm = $h + $fh + ($ET - $ah) / $hr;
Au dessus la formule qui explique tout:
heure du milieu de journée
+ décalage avec TU
+ equation du temps
- la moitié de la durée d'ensoleillement du jour.
IF ($Pm < 0) { $Pm = $Pm + 24;}
IF ($Pm > 24) { $Pm = $Pm - 24;}
$hs = floor($Pm);
$Pm = floor(60 * ($Pm - $hs));
IF (strlen($hs)<2) {$hs = "0".$hs;}
IF (strlen($Pm)<2) {$Pm = "0".$Pm;}
IF ($CalculSol ==""){
$lev = $hs. ":" .$Pm;
}ELSE{
$lev = "---";}
//Coucher du soleil
$Pm = $h + $fh + ($ET + $ah) /$hr;
Pareil...:
heure du milieu de journée
+ décalage avec TU
+ equation du temps
+ la moitié de la durée d'ensoleillement du jour.
IF ($Pm > 24) { $Pm = $Pm - 24;}
IF ($Pm < 0) { $Pm = $Pm + 24;}
$hs = floor($Pm);
$Pm = floor(60 * ($Pm - $hs));
IF (strlen($hs)<2) {$hs = "0".$hs;}
IF (strlen($Pm)<2) {$Pm = "0".$Pm;}
Ca comme en haut pour sortir en heure et minutes
IF ($CalculSol ==""){
$couch = $hs. ":" .$Pm;
}ELSE{
$couch = "---";}
Affichage
ECHO "Horaires du Soleil à ".$ville."
";
ECHO "Lever = " .$lev ;
ECHO "
";
ECHO "Coucher = ". $couch;
?>
Le reste est expliqué derrière les // demander là si vs avez une autre question...
Re: Lever et coucher du soleil...
Bonjour,
Merci beaucoup pour ces éléments. Le script fonctionne très bien mais sauf erreur de ma part, les paramètres ne sont pas pris en compte. Par exemple :
http://olravet.fr/petitsoleil.php?Lo=6.15&La=47.63&ville=Vesoul donne toujours Paris.
Merci et bonne journée
Merci beaucoup pour ces éléments. Le script fonctionne très bien mais sauf erreur de ma part, les paramètres ne sont pas pris en compte. Par exemple :
http://olravet.fr/petitsoleil.php?Lo=6.15&La=47.63&ville=Vesoul donne toujours Paris.
Merci et bonne journée
louis3d- Membre Participant
- Nombre de messages : 8
Age : 41
Date d'inscription : 17/10/2012
Re: Lever et coucher du soleil...
Par ailleurs, comme j'ai toujours une erreur avec la fonction include :
Merci
- Code:
Warning: include(): http:// wrapper is disabled in the server configuration by allow_url_include=0
Merci
louis3d- Membre Participant
- Nombre de messages : 8
Age : 41
Date d'inscription : 17/10/2012
Re: Lever et coucher du soleil...
Bonjour,
en effet il manquait quelques "GET" depuis le passage à un PHP supérieur, c'est corrigé.
Le coup de l'include doit en effet être de plus en plus problématique... c'est quoi un workarround ?
en effet il manquait quelques "GET" depuis le passage à un PHP supérieur, c'est corrigé.
Le coup de l'include doit en effet être de plus en plus problématique... c'est quoi un workarround ?
Re: Lever et coucher du soleil...
Super merci !
Pardon, un workaround, c'est une solution alternative, un palliatif, un contournement du problème.
Et pour le code, j'aimerais bien comprendre celui qui donne aussi le saint du jour (une autre paire de manche !)
Si possible, sinon c'est déjà super avec les heures de lever coucher, l'équation de temps et tout.
Pardon, un workaround, c'est une solution alternative, un palliatif, un contournement du problème.
Et pour le code, j'aimerais bien comprendre celui qui donne aussi le saint du jour (une autre paire de manche !)
Si possible, sinon c'est déjà super avec les heures de lever coucher, l'équation de temps et tout.
louis3d- Membre Participant
- Nombre de messages : 8
Age : 41
Date d'inscription : 17/10/2012
Re: Lever et coucher du soleil...
Olivier a écrit:Bonjour,
en effet il manquait quelques "GET" depuis le passage à un PHP supérieur, c'est corrigé.
Pourriez-vous préciser, car sur mon site distant ça fonctionne, mais sur mon "localhost" ça ne marche pas non plus...
louis3d- Membre Participant
- Nombre de messages : 8
Age : 41
Date d'inscription : 17/10/2012
Re: Lever et coucher du soleil...
Pour le code des saints il s’agit d’une simple base de données.
Pour le codage qu8 marchait avec les versions précédentes de php.... c’est le problème des versions qui évoluent... par sécurité maintenant il faut d3clarer les variables qui peuvent passer de pages en pages, ce n’était pas nécessaire avant et votr3 local host n’est peut être pas compat8ble...
Pour le codage qu8 marchait avec les versions précédentes de php.... c’est le problème des versions qui évoluent... par sécurité maintenant il faut d3clarer les variables qui peuvent passer de pages en pages, ce n’était pas nécessaire avant et votr3 local host n’est peut être pas compat8ble...
Re: Lever et coucher du soleil...
Merci. J'ai trouvé ici les éléments pour corriger et mettre les GET où il faut.
Bonne journée,
et encore merci pour vos scripts / utilitaires d'astronome et de gnomoniste.
Bonne journée,
et encore merci pour vos scripts / utilitaires d'astronome et de gnomoniste.
louis3d- Membre Participant
- Nombre de messages : 8
Age : 41
Date d'inscription : 17/10/2012
Re: Lever et coucher du soleil...
Bon pour le saint du jour je me suis passé de base de données :
Un peu brutal mais ça fonctionne !
- Code:
<?php
$date = date('md');
echo "<strong><a href='http://nominis.cef.fr/'>Nous fêtons</a> : </strong> " ;
if ($date == '0101') { echo 'Sainte Marie, mère de Dieu - (1<sup>er</sup> s.)'; }
if ($date == '0102') { echo 'Saint Basile le Grand - (+ 379) - '; }
if ($date == '0102') { echo 'Saint Grégoire de Nazianze - (+ 390)'; }
if ($date == '0103') { echo 'Sainte Geneviève - (+ 500)'; }
if ($date == '0104') { echo 'Sainte Angèle de Foligno - (+ 1310)'; }
Un peu brutal mais ça fonctionne !
louis3d- Membre Participant
- Nombre de messages : 8
Age : 41
Date d'inscription : 17/10/2012
Sujets similaires
» Lever et coucher du soleil
» soleil france
» Soleil Aero...
» position du soleil
» Calcul, en VBA, du mouvement apparent du soleil
» soleil france
» Soleil Aero...
» position du soleil
» Calcul, en VBA, du mouvement apparent du soleil
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|