Files
Arduino/SOLAIRE_TRACKER/ephemeride.cpp
Jérôme Delacotte 7b30d6e298 first commit
2025-03-06 11:15:32 +01:00

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