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

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

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

Afficher la suite 
fandeWampas 4 Messages postés vendredi 22 mai 2009Date d'inscription 3 mars 2010 Dernière intervention - 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;
}
tkandel 1 Messages postés jeudi 22 juillet 2010Date d'inscription 6 octobre 2010 Dernière intervention - 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 !
CesiSharp 1 Messages postés jeudi 24 décembre 2009Date d'inscription 8 février 2011 Dernière intervention - 8 févr. 2011 à 11:02
Très bon code, on retrouve les formules sur http://emilie.bodin.free.fr/logiciel/logiciel.html#formules
JLO68 3 Messages postés mercredi 26 août 2009Date d'inscription 18 octobre 2012 Dernière intervention - 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.
Fantastique, conversion en langage Monkey C pour portage sur montre Garmin réussie.
Commenter la réponse de gamemonde

17 réponses

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.