1 #pragma once 2 3 class SunRiseSet 4 { 5 public: 6 struct _tSubRiseSetResults 7 { 8 double latit; 9 double longit; 10 int year; 11 int month; 12 int day; 13 14 int SunRiseHour; 15 int SunRiseMin; 16 int SunSetHour; 17 int SunSetMin; 18 19 int DaylengthHours; 20 int DaylengthMins; 21 22 int SunAtSouthHour; 23 int SunAtSouthMin; 24 25 int CivilTwilightStartHour; 26 int CivilTwilightStartMin; 27 int CivilTwilightEndHour; 28 int CivilTwilightEndMin; 29 int NauticalTwilightStartHour; 30 int NauticalTwilightStartMin; 31 int NauticalTwilightEndHour; 32 int NauticalTwilightEndMin; 33 int AstronomicalTwilightStartHour; 34 int AstronomicalTwilightStartMin; 35 int AstronomicalTwilightEndHour; 36 int AstronomicalTwilightEndMin; 37 38 }; 39 static bool GetSunRiseSet(const double latit, const double longit, _tSubRiseSetResults &result); 40 static bool GetSunRiseSet(const double latit, const double longit, const int year, const int month, const int day, _tSubRiseSetResults &result); 41 private: 42 static double UtcToLocal(double time, double tz); 43 static double __daylen__( int year, int month, int day, double lon, double lat, double altit, int upper_limb); 44 static int __sunriset__(int year, int month, int day, double lon, double lat, double altit, int upper_limb, double *rise, double *set); 45 static void sunpos(double d, double *lon, double *r); 46 static void sun_RA_dec(double d, double *RA, double *dec, double *r); 47 static double revolution(double x); 48 static double rev180(double x); 49 static double GMST0(double d); 50 static void fixRoundIssue(int* hour, int* minute); 51 }; 52