78 lines
2.8 KiB
C++
78 lines
2.8 KiB
C++
#include "ephemeride.h"
|
|
#include <math.h>
|
|
#include "Date_heure.h"
|
|
|
|
#define PI (4.0 * atan(1.0))
|
|
//const double PI = 4.0 * atan(1.0);
|
|
|
|
/*______________________________________________________________fonction qui calcule le rang du jour de l'année__________________________*/
|
|
///////////////////////////////////////////////////// N1,N2,K sont des parametre de calcule//////////////////////////////////////////
|
|
|
|
int rangJour(int day,int month,int year){
|
|
|
|
int N1= int((month*275)/9);
|
|
int N2=int((month+9)/12);
|
|
int K;
|
|
|
|
if (bisex(year)==true){
|
|
K=1;
|
|
}
|
|
else{
|
|
K=2;
|
|
|
|
};
|
|
int N=N1-N2*K+day-30;
|
|
return N;
|
|
}
|
|
/*_____________________________________________________________fonction qui calcule l'equation du temps_________________________________*/
|
|
|
|
////////////////////////////////////////////////////////,M,C,L,R sont des parametre de calcule en degré,/////////////////////////////
|
|
//////////////////////////////////////////////////eqt=equation de temps en minute conversion en radian=x*PI/180//////////////////////
|
|
float equationDuTemps(int N){
|
|
|
|
float M=(357+0.9856*N) - 360*int((357+0.9856*N)/360);
|
|
float C= 1.914*sin(M*PI/180)+0.02*sin(2*M*PI/180);
|
|
float L= (280+C+0.9856*N) - 360*int((280+C+0.9856*N)/360);
|
|
float R=-2.466*sin(PI/180*2*L)+0.053*sin(PI/180*4*L);
|
|
float eqt=(C+R)*4;
|
|
return eqt;
|
|
}
|
|
|
|
/*_____________________________________________________________fonction qui calcul la declinaison solaire_______________________________*/
|
|
/////////////////////////////////////////////////////////////////////////calcule de la declinaison solaire dec///////////////////////
|
|
////////////////////////////
|
|
float declinaisonSolaire(int N){
|
|
float M=(357+0.9856*N) - 360*int((357+0.9856*N)/360);
|
|
float C= 1.914*sin(M*PI/180)+0.02*sin(2*M*PI/180);
|
|
float L= (280+C+0.9856*N) - 360*int((280+C+0.9856*N)/360);
|
|
float dec=asin(0.3978*sin(PI/180*L))*180/PI;
|
|
return dec;
|
|
}
|
|
|
|
|
|
/*_____________________________________________________________fonction qui calcul HO l'angle horaire du soeil_______________________________*/
|
|
|
|
|
|
float angleHoraireSoeil(int N, float LATITUDE){
|
|
|
|
float M=(357+0.9856*N) - 360*int((357+0.9856*N)/360);
|
|
float C= 1.914*sin(M*PI/180)+0.02*sin(2*M*PI/180);
|
|
float L= (280+C+0.9856*N) - 360*int((280+C+0.9856*N)/360);
|
|
float R=-2.466*sin(PI/180*2*L)+0.053*sin(PI/180*4*L);
|
|
float eqt=(C+R)*4;
|
|
float dec=asin(0.3978*sin(PI/180*L))*180/PI;
|
|
float ho=acos((-0.01405-sin(PI/180*dec)*sin(PI/180*LATITUDE))/(cos(PI/180*dec)*cos(PI/180*LATITUDE)))*180/PI;
|
|
|
|
return ho;
|
|
}
|
|
|
|
float azimut(int N, float LATITUDE){
|
|
|
|
return (acos((-0.01405*sin(PI/180*LATITUDE )-sin(PI/180*(declinaisonSolaire(N))))/cos(PI/180*LATITUDE)))*180/PI;
|
|
|
|
}
|
|
/*__fonction qui calcul S que fait la trajectoire du Soleil avec l'horizon aux moments des lever/coucher__ */
|
|
float angleS(int N, float LATITUDE){
|
|
return (acos(sin(PI/180*LATITUDE )/cos(PI/180*(declinaisonSolaire(N)))))*180/PI;
|
|
}
|