begin process at 2010 02 10 02:11:27
  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,5 / 10 - par 2 personnes
9,50 / 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 :42 787

Auteur : koaber

Ecrire un message privé
Commentaire sur cette source (10)
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

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
Source avec Zip Source avec une capture AFFICHER ET DIRE L'HEURE (REPONSE FORUM) par ndubien
Source avec Zip Source avec une capture ARRÊT AUTOMATIQUE DE WINDOWS. par patarotalexandre

 Sources en rapport avec celle ci

PROGRAMME QUI CALCUL LE PPCM ET LE PGCD par AnoSantino
Source avec Zip LA CONSTANTE MRB EN VISUAL C++ par pgl10
Source avec Zip PARSEUR GÉNÉRAL par mehdicherti
Source avec Zip Source avec une capture [C++] HASH FINDER - CALCULATEUR DE HASH par ordiman85
Source avec Zip Source avec une capture OBJET 3D EN CONSOLE par BumpMANN

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.

 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...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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 : 0,296 sec (4)

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