begin process at 2012 02 10 06:17:57
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

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

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


 Information sur la source

Note :
9 / 10 - par 3 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date / Heure Classé sous :éphéméride, soleil, azimut, calcul, déclinaison Niveau :Débutant Date de création :02/06/2005 Date de mise à jour :31/07/2009 18:56:43 Vu :64 394

Auteur : koaber

Ecrire un message privé
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

 Description

Salut,

il s'agit d'un code qui peut vous aider si vous aimez l'astronomie et plus particulièrement le soleil.
Il permet de connaître à la seconde près la position du soleil.
Je vous laisse essayer.
Il a été fait sous Borland C++builder6.

A+!

Source

  • //-----------------------------bibliothèques------------------------------------
  • //------------------------------------------------------------------------------
  • #include <iostream.h>
  • #include <conio.h>
  • #include <math.h>
  • #include <iomanip>
  • #include <windows.h>
  • //-----------------------------déclaration--------------------------------------
  • //------------------------------------------------------------------------------
  • const HANDLE MaConsoleEcran=GetStdHandle(STD_OUTPUT_HANDLE);
  • //-----------------------------fonction d'attente-------------------------------
  • //------------------------------------------------------------------------------
  • void wait(long sec)
  • {
  • long start, courante;
  • time(&start) ;
  • time(&courante) ;
  • while((courante-start)<sec)
  • {
  • time(&courante) ;
  • }
  • }
  • //-----------------------------calcul du jour julien----------------------------
  • //------------------------------------------------------------------------------
  • long double calcul_jour_julien(long double jour, long double mois, long double annee, long double heure, long double minute, long double seconde)
  • {
  • long double month, year, day, a, b, jour_julien;
  • day=jour+heure/24.0+minute/1440.0+seconde/86400.0;
  • year=annee;
  • month=mois;
  • if(month==1 || month==2)
  • {
  • year=year-1.0;
  • month=month+12.0;
  • }
  • a=int(year/100.0);
  • b=2-a+int(a/4.0);
  • jour_julien=int(365.25*(year+4716.0))+int(30.6001*(month+1.0))+day+b-1524.5;
  • return jour_julien;
  • }
  • int texte;
  • int fond;
  • void CouleurTexte( int CouleurTexte )
  • {
  • texte = CouleurTexte;
  • SetConsoleTextAttribute (MaConsoleEcran, texte | fond);
  • }
  • void CouleurFond(int CouleurFond)
  • {
  • fond = CouleurFond << 4 ;
  • SetConsoleTextAttribute (MaConsoleEcran, texte | fond);
  • }
  • void AfficherCurseur(int mode)
  • {
  • CONSOLE_CURSOR_INFO curseur;
  • GetConsoleCursorInfo(MaConsoleEcran, &curseur);
  • if (mode == TRUE)
  • curseur.bVisible = TRUE;
  • else
  • curseur.bVisible = FALSE;
  • SetConsoleCursorInfo(MaConsoleEcran, &curseur);
  • }
  • void EffaceEcran()
  • {
  • CONSOLE_SCREEN_BUFFER_INFO MesInfosEcran;
  • if (GetConsoleScreenBufferInfo (MaConsoleEcran, &MesInfosEcran))
  • {
  • COORD origine = { 0, 0 };
  • DWORD nbCaractEcrit;
  • DWORD taille = MesInfosEcran.dwSize.X * MesInfosEcran.dwSize.Y;
  • FillConsoleOutputCharacter (MaConsoleEcran, ' ', taille, origine, &nbCaractEcrit);
  • FillConsoleOutputAttribute (MaConsoleEcran, MesInfosEcran.wAttributes, taille, origine, &nbCaractEcrit);
  • SetConsoleCursorPosition (MaConsoleEcran, origine);
  • }
  • }
  • //-----------------------------programme principal------------------------------
  • //------------------------------------------------------------------------------
  • main()
  • {
  • SYSTEMTIME si;
  • long double sd, jour2, mois2, heure2, minute2, annee2, seconde2, correction_heure;
  • long double jour_nouveau, g, q, l, e, ascension_droite, declinaison, heure_siderale1, heure_siderale2, nb_siecle;
  • long double latitude, longitude, angle, angleT, angleH, angle_horaire, altitude, azimut, sinazimut;
  • CouleurFond(FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  • EffaceEcran();
  • AfficherCurseur(0);
  • //-----------------------------en-tête de la fenêtre----------------------------
  • //------------------------------------------------------------------------------
  • COORD dwTaille = {80, 25};
  • HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  • SetConsoleScreenBufferSize(hConsole, dwTaille);
  • SetConsoleTitle("AltAz Solaire - version 2 ------ --------");
  • //-----------------------------avertissement------------------------------------
  • //------------------------------------------------------------------------------
  • CouleurTexte(FOREGROUND_RED | FOREGROUND_INTENSITY);
  • cout<<" Attention! Vous ne pourrez plus me contacter pour avoir des infos sur les calculs."<<endl;
  • cout<<" Merci d'avoir choisi AltAz Solaire !"<<endl;
  • cout<<"----------------------------------------------------------------------------------------------------------------------------------------------------------------"<<endl;
  • //-----------------------------coordonnées du lieu d'observation----------------
  • //------------------------------------------------------------------------------
  • CouleurTexte(FOREGROUND_RED |FOREGROUND_BLUE);
  • cout<<" "<<endl;
  • cout<<"Entrez la latitude du lieu d'observation (positive vers le Nord): ";
  • cin>>latitude; //42.93627 ° N pour la LJR
  • cout<<"Entrez sa longitude (positive vers l'Est) : ";
  • cin>>longitude; //0.14291 ° E pour la LJR
  • //-----------------------------heure d'hiver ou d'été---------------------------
  • //------------------------------------------------------------------------------
  • correction_heure=0;
  • while(correction_heure!=1 && correction_heure!=2)
  • {
  • CouleurTexte(FOREGROUND_GREEN);
  • cout<<" "<<endl;
  • cout<<"Tapez 1 si vous etes a l'heure d'hiver, et 2 si vous etes a l'heure d'ete : ";
  • cin>>correction_heure;
  • }
  • //-----------------------------boucle de calculs--------------------------------
  • //------------------------------------------------------------------------------
  • while(1)
  • {
  • GetLocalTime(&si);
  • jour2 = si.wDay;
  • mois2 = si.wMonth;
  • annee2 = si.wYear;
  • heure2 = si.wHour;
  • minute2 = si.wMinute;
  • seconde2 = si.wSecond;
  • //-----------------------------affichages date et heure-------------------------
  • //------------------------------------------------------------------------------
  • CouleurFond(FOREGROUND_BLUE);
  • EffaceEcran();
  • AfficherCurseur(0);
  • CouleurTexte(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  • cout<<"Date : "<<int(jour2)<<" "<<int(mois2)<<" "<<int(annee2)<<endl;
  • cout<<"Heure : "<<int(heure2)<<":";
  • if(minute2<10) cout<<"0";
  • cout<<int(minute2)<<":";
  • if(seconde2<10) cout<<"0";
  • cout<<int(seconde2)<<endl<<endl<<endl;
  • //-----------------------------affichages jour julien et jour julien nouveau----
  • //------------------------------------------------------------------------------
  • CouleurTexte(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
  • cout<<"Jour julien : "<<setiosflags(std::ios::fixed)<<calcul_jour_julien(jour2, mois2, annee2, heure2, minute2, seconde2)-correction_heure/24.0<<endl;
  • jour_nouveau=calcul_jour_julien(jour2, mois2, annee2, heure2, minute2, seconde2)-correction_heure/24.0-2451545.0;
  • cout<<"Jour julien nouveau : "<<jour_nouveau<<endl<<endl<<endl;
  • //-------------calculs et affichages ascension droite et délinaison-------------
  • //------------------------------------------------------------------------------
  • g=357.529+0.98560028*jour_nouveau;
  • q=280.459+0.98564736*jour_nouveau;
  • l=q+1.915*sin(g*M_PI/180.0)+0.020*sin(2*g*M_PI/180.0);
  • e=23.439-0.00000036*jour_nouveau;
  • ascension_droite=atan(cos(e*M_PI/180.0)*sin(l*M_PI/180.0)/cos(l*M_PI/180.0))*(180.0/M_PI)/15.0;
  • if(cos(l*M_PI/180.0)<0)
  • {
  • ascension_droite=12.0+ascension_droite;
  • }
  • if(cos(l*M_PI/180.0)>0 && sin(l*M_PI/180.0)<0)
  • {
  • ascension_droite=ascension_droite+24.0;
  • }
  • CouleurTexte(FOREGROUND_RED | FOREGROUND_INTENSITY);
  • cout<<"Ascension droite : "<<ascension_droite<<" h"<<endl;
  • cout<<" ou "<<int(ascension_droite)<<" h "<<int((ascension_droite-int(ascension_droite))*60)<<" min "<<((ascension_droite-int(ascension_droite))*60-int((ascension_droite-int(ascension_droite))*60))*60<<" s"<<endl<<endl;
  • declinaison=asin(sin(e*M_PI/180.0)*sin(l*M_PI/180.0))*180.0/M_PI;
  • cout<<"Declinaison : "<<declinaison<<" deg"<<endl;
  • cout<<" ou "<<int(declinaison)<<" deg "<<int((declinaison-int(declinaison))*60)<<" min "<<((declinaison-int(declinaison))*60-int((declinaison-int(declinaison))*60))*60<<" s"<<endl<<endl<<endl;
  • //-----------------------------calculs heure sidérale et angle horaire----------
  • //------------------------------------------------------------------------------
  • nb_siecle=jour_nouveau/36525.0;
  • heure_siderale1=(24110.54841+(8640184.812866*nb_siecle)+(0.093104*(nb_siecle*nb_siecle))-(0.0000062*(nb_siecle*nb_siecle*nb_siecle)))/3600.0;
  • heure_siderale2=((heure_siderale1/24.0)-int(heure_siderale1/24.0))*24.0;
  • angleH=360.0*heure_siderale2/23.9344;
  • angleT=(heure2-correction_heure-12.0+minute2/60.0+seconde2/3600.0)*360.0/23.9344;
  • angle=angleT+angleH;
  • angle_horaire=angle-ascension_droite*15.0+longitude;
  • //-------------calculs et affichages altitude et azimut-------------------------
  • //------------------------------------------------------------------------------
  • altitude=asin(sin(declinaison*M_PI/180.0)*sin(latitude*M_PI/180.0)-cos(declinaison*M_PI/180.0)*cos(latitude*M_PI/180.0)*cos(angle_horaire*M_PI/180.0))*180.0/M_PI;
  • CouleurTexte(FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY);
  • cout<<"Altitude : "<<altitude<<" deg"<<endl;
  • cout<<" ou "<<int(altitude)<<" deg "<<int((altitude-int(altitude))*60)<<" min "<<int(((altitude-int(altitude))*60-int((altitude-int(altitude))*60))*60)<<" s"<<endl<<endl;
  • azimut=acos((sin(declinaison*M_PI/180.0)-sin(latitude*M_PI/180.0)*sin(altitude*M_PI/180.0))/(cos(latitude*M_PI/180.0)*cos(altitude*M_PI/180.0)))*180.0/M_PI;
  • sinazimut=(cos(declinaison*M_PI/180.0)*sin(angle_horaire*M_PI/180.0))/cos(altitude*M_PI/180.0);
  • if(sinazimut<0)
  • {
  • azimut=360-azimut;
  • }
  • cout<<"Azimut : "<<azimut<<" deg"<<endl;
  • cout<<" ou "<<int(azimut)<<" deg "<<int((azimut-int(azimut))*60)<<" min "<<int(((azimut-int(azimut))*60-int((azimut-int(azimut))*60))*60)<<" s"<<endl<<endl;
  • wait(1);
  • }
  • }
//-----------------------------bibliothèques------------------------------------
//------------------------------------------------------------------------------

#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <iomanip>
#include <windows.h>

//-----------------------------déclaration--------------------------------------
//------------------------------------------------------------------------------

const HANDLE MaConsoleEcran=GetStdHandle(STD_OUTPUT_HANDLE);

//-----------------------------fonction d'attente-------------------------------
//------------------------------------------------------------------------------

void wait(long sec)
{
    long start, courante;
    time(&start) ;
    time(&courante) ;

    while((courante-start)<sec)
    {
        time(&courante) ;
    }
}

//-----------------------------calcul du jour julien----------------------------
//------------------------------------------------------------------------------

long double calcul_jour_julien(long double jour, long double mois, long double annee, long double heure, long double minute, long double seconde)
{
        long double month, year, day, a, b, jour_julien;

        day=jour+heure/24.0+minute/1440.0+seconde/86400.0;
        year=annee;
        month=mois;

        if(month==1 || month==2)
        {
                year=year-1.0;
                month=month+12.0;
        }

        a=int(year/100.0);
        b=2-a+int(a/4.0);

        jour_julien=int(365.25*(year+4716.0))+int(30.6001*(month+1.0))+day+b-1524.5;
        return jour_julien;
}



int texte;
int fond;

void CouleurTexte( int CouleurTexte )
{
	texte = CouleurTexte;
	SetConsoleTextAttribute (MaConsoleEcran, texte | fond);
}

void CouleurFond(int CouleurFond)
{

	fond = CouleurFond << 4 ;

	SetConsoleTextAttribute (MaConsoleEcran, texte | fond);
}

void AfficherCurseur(int mode)
{
 	CONSOLE_CURSOR_INFO curseur;

	GetConsoleCursorInfo(MaConsoleEcran, &curseur);

		if (mode == TRUE)
		curseur.bVisible = TRUE;
		else
		curseur.bVisible = FALSE;

	SetConsoleCursorInfo(MaConsoleEcran, &curseur);
}

void EffaceEcran()
{
	CONSOLE_SCREEN_BUFFER_INFO MesInfosEcran;

	if (GetConsoleScreenBufferInfo (MaConsoleEcran, &MesInfosEcran))

	{
		COORD origine = { 0, 0 };

		DWORD nbCaractEcrit;

		DWORD taille = MesInfosEcran.dwSize.X * MesInfosEcran.dwSize.Y;

		FillConsoleOutputCharacter (MaConsoleEcran, ' ', taille, origine, &nbCaractEcrit);

		FillConsoleOutputAttribute (MaConsoleEcran, MesInfosEcran.wAttributes, taille, origine, &nbCaractEcrit);

		SetConsoleCursorPosition    (MaConsoleEcran, origine);
          }
}

//-----------------------------programme principal------------------------------
//------------------------------------------------------------------------------

main()
{
SYSTEMTIME    si;
long double sd, jour2, mois2, heure2, minute2, annee2, seconde2, correction_heure;
long double jour_nouveau, g, q, l, e, ascension_droite, declinaison, heure_siderale1, heure_siderale2, nb_siecle;
long double latitude, longitude, angle, angleT, angleH, angle_horaire, altitude, azimut, sinazimut;

CouleurFond(FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
EffaceEcran();
AfficherCurseur(0);

//-----------------------------en-tête de la fenêtre----------------------------
//------------------------------------------------------------------------------

COORD         dwTaille = {80, 25};
HANDLE        hConsole = GetStdHandle(STD_OUTPUT_HANDLE);

SetConsoleScreenBufferSize(hConsole, dwTaille);
SetConsoleTitle("AltAz Solaire - version 2                                                                            ------ --------");

//-----------------------------avertissement------------------------------------
//------------------------------------------------------------------------------

CouleurTexte(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<" Attention! Vous ne pourrez plus me contacter pour avoir des infos sur les calculs."<<endl;
cout<<" Merci d'avoir choisi AltAz Solaire !"<<endl;
cout<<"----------------------------------------------------------------------------------------------------------------------------------------------------------------"<<endl;

//-----------------------------coordonnées du lieu d'observation----------------
//------------------------------------------------------------------------------

CouleurTexte(FOREGROUND_RED |FOREGROUND_BLUE);
cout<<"                                                                               "<<endl;
cout<<"Entrez la latitude du lieu d'observation (positive vers le Nord):      ";
cin>>latitude; //42.93627 ° N pour la LJR
cout<<"Entrez sa longitude (positive vers l'Est)                       :       ";
cin>>longitude; //0.14291 ° E pour la LJR

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

correction_heure=0;
while(correction_heure!=1 && correction_heure!=2)
{
        CouleurTexte(FOREGROUND_GREEN);
        cout<<"                                                                               "<<endl;
        cout<<"Tapez 1 si vous etes a l'heure d'hiver, et 2 si vous etes a l'heure d'ete :   ";
        cin>>correction_heure;
}

//-----------------------------boucle de calculs--------------------------------
//------------------------------------------------------------------------------

while(1)
{

 GetLocalTime(&si);
  jour2 = si.wDay;
  mois2 = si.wMonth;
  annee2 = si.wYear;
  heure2 = si.wHour;
  minute2 = si.wMinute;
  seconde2 = si.wSecond;

//-----------------------------affichages date et heure-------------------------
//------------------------------------------------------------------------------

CouleurFond(FOREGROUND_BLUE);
EffaceEcran();
AfficherCurseur(0);
CouleurTexte(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<"Date                                     : "<<int(jour2)<<" "<<int(mois2)<<" "<<int(annee2)<<endl;
cout<<"Heure                                    : "<<int(heure2)<<":";
if(minute2<10) cout<<"0";
cout<<int(minute2)<<":";
if(seconde2<10) cout<<"0";
cout<<int(seconde2)<<endl<<endl<<endl;

//-----------------------------affichages jour julien et jour julien nouveau----
//------------------------------------------------------------------------------

CouleurTexte(FOREGROUND_GREEN | FOREGROUND_INTENSITY);
cout<<"Jour julien                              : "<<setiosflags(std::ios::fixed)<<calcul_jour_julien(jour2, mois2, annee2, heure2, minute2, seconde2)-correction_heure/24.0<<endl;
jour_nouveau=calcul_jour_julien(jour2, mois2, annee2, heure2, minute2, seconde2)-correction_heure/24.0-2451545.0;
cout<<"Jour julien nouveau                      : "<<jour_nouveau<<endl<<endl<<endl;

//-------------calculs et affichages ascension droite et délinaison-------------
//------------------------------------------------------------------------------

g=357.529+0.98560028*jour_nouveau;
q=280.459+0.98564736*jour_nouveau;
l=q+1.915*sin(g*M_PI/180.0)+0.020*sin(2*g*M_PI/180.0);
e=23.439-0.00000036*jour_nouveau;

ascension_droite=atan(cos(e*M_PI/180.0)*sin(l*M_PI/180.0)/cos(l*M_PI/180.0))*(180.0/M_PI)/15.0;
if(cos(l*M_PI/180.0)<0)
{
        ascension_droite=12.0+ascension_droite;
}
if(cos(l*M_PI/180.0)>0 && sin(l*M_PI/180.0)<0)
{
        ascension_droite=ascension_droite+24.0;
}

CouleurTexte(FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"Ascension droite                         : "<<ascension_droite<<" h"<<endl;
cout<<"                                        ou "<<int(ascension_droite)<<" h "<<int((ascension_droite-int(ascension_droite))*60)<<" min "<<((ascension_droite-int(ascension_droite))*60-int((ascension_droite-int(ascension_droite))*60))*60<<" s"<<endl<<endl;

declinaison=asin(sin(e*M_PI/180.0)*sin(l*M_PI/180.0))*180.0/M_PI;
cout<<"Declinaison                              : "<<declinaison<<" deg"<<endl;
cout<<"                                        ou "<<int(declinaison)<<" deg "<<int((declinaison-int(declinaison))*60)<<" min "<<((declinaison-int(declinaison))*60-int((declinaison-int(declinaison))*60))*60<<" s"<<endl<<endl<<endl;

//-----------------------------calculs heure sidérale et angle horaire----------
//------------------------------------------------------------------------------

nb_siecle=jour_nouveau/36525.0;
heure_siderale1=(24110.54841+(8640184.812866*nb_siecle)+(0.093104*(nb_siecle*nb_siecle))-(0.0000062*(nb_siecle*nb_siecle*nb_siecle)))/3600.0;
heure_siderale2=((heure_siderale1/24.0)-int(heure_siderale1/24.0))*24.0;

angleH=360.0*heure_siderale2/23.9344;
angleT=(heure2-correction_heure-12.0+minute2/60.0+seconde2/3600.0)*360.0/23.9344;
angle=angleT+angleH;

angle_horaire=angle-ascension_droite*15.0+longitude;

//-------------calculs et affichages altitude et azimut-------------------------
//------------------------------------------------------------------------------

altitude=asin(sin(declinaison*M_PI/180.0)*sin(latitude*M_PI/180.0)-cos(declinaison*M_PI/180.0)*cos(latitude*M_PI/180.0)*cos(angle_horaire*M_PI/180.0))*180.0/M_PI;

CouleurTexte(FOREGROUND_BLUE | FOREGROUND_GREEN  | FOREGROUND_RED | FOREGROUND_INTENSITY);
cout<<"Altitude                                 : "<<altitude<<" deg"<<endl;
cout<<"                                        ou "<<int(altitude)<<" deg "<<int((altitude-int(altitude))*60)<<" min "<<int(((altitude-int(altitude))*60-int((altitude-int(altitude))*60))*60)<<" s"<<endl<<endl;

azimut=acos((sin(declinaison*M_PI/180.0)-sin(latitude*M_PI/180.0)*sin(altitude*M_PI/180.0))/(cos(latitude*M_PI/180.0)*cos(altitude*M_PI/180.0)))*180.0/M_PI;
sinazimut=(cos(declinaison*M_PI/180.0)*sin(angle_horaire*M_PI/180.0))/cos(altitude*M_PI/180.0);
if(sinazimut<0)
        {
        azimut=360-azimut;
        }

cout<<"Azimut                                   : "<<azimut<<" deg"<<endl;
cout<<"                                        ou "<<int(azimut)<<" deg "<<int((azimut-int(azimut))*60)<<" min "<<int(((azimut-int(azimut))*60-int((azimut-int(azimut))*60))*60)<<" s"<<endl<<endl;

wait(1);

}

}



 Historique

02 juin 2005 17:12:18 :
j'ai remplacé le .txt par un .cpp
03 juin 2005 10:21:03 :
j'ai ajouté le code...
03 juin 2005 10:23:23 :
mise à jour quoi...
07 septembre 2006 18:53:53 :
changement du mail indiqué dans le programme
31 juillet 2009 18:56:43 :
suppression d'infos personnelles (mail, etc.)

 Sources de la même categorie

DATETIMECONVERTER par guill76
Source avec Zip CLASSE DE DATE LOCALISÉE (20 LANGUES) par exar
Source avec Zip CLASSE MOMENT V2.0 par le_duche
CALCUL DATE DE PAQUES (DATE MOBILE) par steph12358
Source avec une capture VACCATION (AVEC FONCTION) CONSOLERIE, REMIX GCC par sebman

 Sources en rapport avec celle ci

Source avec une capture CONVERTISSEUR par smartties
Source avec une capture CALCUL DE VARIANCE par Minilogus
Source avec une capture CALCUL D'INCERTITUDE par Minilogus
PROGRAMME QUI CALCUL LE PPCM ET LE PGCD par AnoSantino
Source avec Zip LA CONSTANTE MRB EN VISUAL C++ par pgl10

Commentaires et avis

Commentaire de gamemonde le 02/06/2005 17:04:06

bon code cela peux être plus ou moin utile mais ne le met pas en .txt

Commentaire de koaber le 03/06/2005 10:45:08

merci. j'ai fait les modifications...
à plus!

Commentaire de RaphAstronome le 06/06/2005 13:08: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.

Commentaire de koaber le 06/06/2005 13:58:46

merci, j'essaierai si j'ai le temps et de ces 4. en ce moment, je suis overbooké!

à bientôt!

Commentaire de sdurand84 le 18/02/2006 01:42:33

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 "<br>";
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.

Commentaire de sdurand84 le 19/02/2006 05:50:09

J'ai trouvé d'où venait le problème, PHP utilise les angles en radians.

Merci pour votre script, à bientôt.

Commentaire de RemyFR le 04/03/2007 13:54:31

Très bon code, je m'en suis servi comme base pour une application en développée en Qt.

Commentaire de RodrigueC le 27/08/2007 17:07:54

Très instructif comme code :)
Néanmoins, est-ce que tu ne devrais pas tenir compte de la hauteur du lieu géographique?

Commentaire de dailledrime le 15/07/2009 12:53:22

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 :(

Commentaire de RaphAstronome le 15/07/2009 13:40:00

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.

Commentaire de fandeWampas le 02/03/2010 15:11:41 8/10

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;




Commentaire de fandeWampas le 03/03/2010 20:12:44

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;
}

Commentaire de tkandel le 06/10/2010 18:22:21

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 !

Commentaire de CesiSharp le 08/02/2011 11:02:07

Très bon code, on retrouve les formules sur http://emilie.bodin.free.fr/logiciel/logiciel.html#formules

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Calcul du temps de chargement d'un prog... [ par MorZong ] Salut,Encore moi, je suis partout, là c'est pour me dire comment faire pour calculer le temps (en millisecondes si c'est possible) qu'a prit un progr Librairies mathématiques VS matlab [ par devilinside ] Devant coder une interface graphique en visual C++ pour un logiciel de calcul, je suis fort dépourvu.Le code original du coeur de calcul tourne sous m Probleme de duree de calcul [ par Stubbornman ] Je suis actuellement, et maintenant depuis presque deux mois (je suis un debutant alors c'est long!!) sur une source sencee resoudre les carres magiqu implicit declaration of function `int getchar(...)' [ par cognac ] À chaque fois que j'utilise getch(); j'obtien le message suivant:getch();Voici mon programme (en fait mon exercice):#include &lt;iostream.h&gt; //bib Calcul d'une opération en millisecondes [ par Thanatos ] Bonjour,Comment peut-on estimer le temps d'un calcul en millisecondes sous Borland C++ ?Je fais un programme qui compare les différents tris et j'aime calcul d'un modulo [ par cabarrus ] Qui peu m'aidé s.v.p pour ce problème...Ecrire un prog qui demande 2 nbres à l'utilisateur et qui affiche le reste de la division du 1er par le second Les «class» pour débutant [ par cognac ] Voici un petit programme:|||||||||||||| constante.h||||||||||||#ifndef CONSTANTES#define CONSTANTES#include &lt;iostream&gt;#include &lt;stdio.h&gt;us Pb de calcul de la visibilité d'1 objet [ par ngryman ] Salut, bon g un petit pb pr calculer si une bounding box se trouve affichée à l'écran, je sais qu'il fo faire ca par rapport aux plans du champ de vis calcul [ par coockiesch ] Hello.Je cherche a faire un prog qui calcule des ptits trucs dans le style 2.5+4.6*3-2*3. Il faut qu'il respecte l'ordre des ops.Je ne sais pas commen Prog de calcul matriciels [ par tchoumi ] Salut ! Je débute en prog et j'ai un petit problème pour réaliser un prog de calcul de matrice.Il faut que face comme calcul---&gt; Produit=MatriceA*M


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,385 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales