first commit
This commit is contained in:
77
SOLAIRE_TRACKER/ephemeride.cpp
Normal file
77
SOLAIRE_TRACKER/ephemeride.cpp
Normal file
@@ -0,0 +1,77 @@
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user