CALCUL DE LA POSITION DU SOLEIL (DÉCLINAISON, ANGLE HORAIRE, ALTITUDE ET AZIMUT)

gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 - 2 juin 2005 à 17:04
 mtkb - 7 juin 2017 à 08:09
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/31774-calcul-de-la-position-du-soleil-declinaison-angle-horaire-altitude-et-azimut-altaz-solaire

Fantastique, conversion en langage Monkey C pour portage sur montre Garmin réussie.
JLO68 Messages postés 3 Date d'inscription mercredi 26 août 2009 Statut Membre Dernière intervention 18 octobre 2012
18 oct. 2012 à 11:58
Bonjour,
Ce développement est génial, mais pourriez-vous me dire où je pourrais trouver son équivalent en VBA.
J'essaie depuis un moment et je bloque quant à la compréhension de certaines manip.
En regardant votre code je ne sais pas si cela est possible de le transcrire en VBA.

Merci d'avance.
CesiSharp Messages postés 1 Date d'inscription jeudi 24 décembre 2009 Statut Membre Dernière intervention 8 février 2011
8 févr. 2011 à 11:02
Très bon code, on retrouve les formules sur http://emilie.bodin.free.fr/logiciel/logiciel.html#formules
tkandel Messages postés 1 Date d'inscription jeudi 22 juillet 2010 Statut Membre Dernière intervention 6 octobre 2010
6 oct. 2010 à 18:22
Bonjour,
Je sais que c'est peux être un peu loin maintenant mais est-ce que tu pourrais citer tes sources par hasard ? Notamment pour le calcul précis de calcul de la position du soleil ... Merci !
fandeWampas Messages postés 4 Date d'inscription vendredi 22 mai 2009 Statut Membre Dernière intervention 3 mars 2010
3 mars 2010 à 20:12
J'ai fait une petite amélioration au programme:

Actuellement le programme demande si on est en heure d'été ou d'hiver.

Mon module supplémentaire prend la date du jour, calcul la date des changements d'horaire automatiquement et compare les dates de changements avec la date du jour.

En code sa donne:

//---------------------Recuperation date du jour-------------------------------
//-----------------------------------------------------------------------------

struct tm Today;
time_t now;

time(&now);

Today = *localtime(&now);
printf("%4.4d/%2.2d/%2.2d\n",Today.tm_year + 1900, Today.tm_mon + 1, Today.tm_mday);

//---------------Calculer date heure d'été ou heure d'hiver--------------------
//-----------------------------------------------------------------------------

int a = Today.tm_year + 1900;
int y1; //Jour entre 0 et 6 du 31 mars
int z1; //date dernier dimanche de mars
int y2; //Jour entre 0 et 6 du 31 octobre
int z2; //date dernier dimanche de octobre

y1 = (5+ a+ int(a/4)- int(a/100)+ int(a/400))%7;
y2 = (2+ a+ int(a/4)- int(a/100)+ int(a/400))%7;

z1 = 31-y1;
z2 = 31-y2;

//Deux lignes permettant de verifier si la date calculé correspond bien a la réalité
//cout << "Date de l'heure d'été: " << z1 << " mars " << a << "\n";
//cout << "Date de l'heure d'hiver: "<< z2 <<" octobre " << a <<"\n";

struct tm Hiver; //Enregistrement des dates calculés dans structure pour les comparés

Hiver.tm_year = a;
Hiver.tm_mon = 10;
Hiver.tm_mday = z2;

struct tm Ete;

Ete.tm_year = a;
Ete.tm_mon = 3;
Ete.tm_mday = z1;

//-----------------------------heure d'hiver ou d'été---------------------------
//------------------------------------------------------------------------------

correction_heure=0;
while(correction_heure!=1 && correction_heure!=2)
{
CouleurTexte(FOREGROUND_GREEN);
if ((Today.tm_mon<=3 && Today.tm_mday<=Ete.tm_mday)||(11<=Today.tm_mon && Hiver.tm_mday<=Today.tm_mday))
{
cout << "vous etes a l'heure d'hiver\n";
correction_heure = 1;
}
else if ((3<=Today.tm_mon && Ete.tm_mday<=Today.tm_mday)||(Today.tm_mon<=11 && Today.tm_mday<=Hiver.tm_mday))
{
cout << "Vous etes a l'heure d'été\n";
correction_heure = 2;
Today.
}
else
{
cout << "Vous avez un probleme";
}

char continuer;

cout << "Appuyer sur une Y pour continuer";
cin >> continuer;
}
fandeWampas Messages postés 4 Date d'inscription vendredi 22 mai 2009 Statut Membre Dernière intervention 3 mars 2010
2 mars 2010 à 15:11
Merci, j'ai besoin de faire ce genre de chose pour mon projet de 2eme année d'IRIS, j'ai du faire des modification pour qu'il fonctionne sous visual:

D'abord, un soucis avec M_PI donc voici la solution:

#define M_PI 3.14159265358979323846

Ensuite un probleme du a time(&start) m'a fait changer

long start, courante;

en

time_t start, courante;
RaphAstronome Messages postés 104 Date d'inscription samedi 7 décembre 2002 Statut Membre Dernière intervention 17 août 2009
15 juil. 2009 à 13:40
Utilise plutôt un logiciel d'astronomie déjà tout fait.
Il y en à des quantités et souvent gratuits comme SkyChart.
Sinon fait attention à l'heure : elle peut être locale ou TU.
dailledrime Messages postés 1 Date d'inscription mercredi 15 juillet 2009 Statut Membre Dernière intervention 15 juillet 2009
15 juil. 2009 à 12:53
Bonjour, absolument pas programmatrice, j'ai besoin de calculer la position du soleil pour préparation d'un tournage...
Que fait-on du fichier pour pouvoir l'utiliser, une fois téléchargé? (je suis sous windows vista :(
RodrigueC Messages postés 2 Date d'inscription lundi 9 juin 2003 Statut Membre Dernière intervention 27 août 2007
27 août 2007 à 17:07
Très instructif comme code :)
Néanmoins, est-ce que tu ne devrais pas tenir compte de la hauteur du lieu géographique?
RemyFR Messages postés 5 Date d'inscription dimanche 3 novembre 2002 Statut Membre Dernière intervention 4 mars 2007
4 mars 2007 à 13:54
Très bon code, je m'en suis servi comme base pour une application en développée en Qt.
sdurand84 Messages postés 2 Date d'inscription vendredi 17 février 2006 Statut Membre Dernière intervention 19 février 2006
19 févr. 2006 à 05:50
J'ai trouvé d'où venait le problème, PHP utilise les angles en radians.

Merci pour votre script, à bientôt.
sdurand84 Messages postés 2 Date d'inscription vendredi 17 février 2006 Statut Membre Dernière intervention 19 février 2006
18 févr. 2006 à 01:42
Bonjour,

Je cherchais justement un script à ce sujet... En effet, je cherche à calculer automatiquement la déclinaison du soleil.

J'ai donc essayé d'adapter votre script au langage PHP, cependant, le résultat est erronné... Peut-être pourriez-vous m'aider ?

Voici mon code :

// DEBUT CODE.

<?php

$seconde = date("s");
$minute = date("i");
$heure = date("G");
$jour = date("j");
$mois = date("n");
$annee = date("Y");
$jourJulien = calculJourJulien($jour, $mois, $annee, $heure, $minute, $seconde);

// Calcul jour julien. <- Résultat correct.
function calculJourJulien($jour, $mois, $annee, $heure, $minute, $seconde) {
$jour = $jour + $heure / 24.0 + $minute / 1440.0 + $seconde / 86400.0;
$i = round($annee / 100.0);
$j = 2.0 - $i + round($i / 4.0);
return round(365.25 * ($annee + 4716.0)) + round(30.6001 * ($mois + 1.0)) + $jour + $j - 1524.5;
}

// Calcul de la déclinaison du Soleil. <- Résultat incorrect.
function declinaison($jourJulien) {
$jourJulienNouveau = $jourJulien - 2.0 / 24.0 - 2451545.0; // Ici, le 2.0 correspond à la correction de l'heure.
$e= 23.439 - 0.00000036 * $jourJulienNouveau;
$declinaison = asin(sin($e * M_PI / 180.0) * sin(1 * M_PI /180.0)) * 180.0 / M_PI;
return $declinaison;
}

echo calculJourJulien($jour, $mois, $annee, $heure, $minute, $seconde); // <- Résultat correct.
echo "
";
echo declinaison($jourJulien); // <- Erreur.

?>

// FIN CODE.

Le résultat du calcul de la déclinaison est faux, cependant la conversion en jour julien se fait correctement.

Est-ce que vous voyez où se situe l'erreur ? Merci beaucoup, à bientôt.
koaber Messages postés 5 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 6 juin 2005
6 juin 2005 à 13:58
merci, j'essaierai si j'ai le temps et de ces 4. en ce moment, je suis overbooké!

à bientôt!
RaphAstronome Messages postés 104 Date d'inscription samedi 7 décembre 2002 Statut Membre Dernière intervention 17 août 2009
6 juin 2005 à 13:08
Bon code mais au lieu de void wait(long sec) utilise plutôt sleep ça évitera d'utiliser tout le temps CPU.
Sinon j'ai comparé ton programme avec Redshift 4 il est bien précis il n'y avait que 1.5" d'arc d'écart sur l'AD et 3" sur la déclinaison.
koaber Messages postés 5 Date d'inscription mercredi 8 novembre 2000 Statut Membre Dernière intervention 6 juin 2005
3 juin 2005 à 10:45
merci. j'ai fait les modifications...
à plus!
gamemonde Messages postés 336 Date d'inscription samedi 9 août 2003 Statut Membre Dernière intervention 9 juillet 2011 2
2 juin 2005 à 17:04
bon code cela peux être plus ou moin utile mais ne le met pas en .txt
Rejoignez-nous