move from tabs to spaces
This commit is contained in:
55
src/sun.cpp
55
src/sun.cpp
@ -13,7 +13,7 @@ public:
|
||||
double utcHour;
|
||||
int day;
|
||||
int year;
|
||||
|
||||
|
||||
JdTime();
|
||||
void update();
|
||||
std::time_t toStdTime();
|
||||
@ -34,21 +34,21 @@ void Sun::JdTime::update()
|
||||
|
||||
void Sun::JdTime::fromStdTime(std::time_t time)
|
||||
{
|
||||
std::tm ltime = *std::localtime( &time );
|
||||
|
||||
std::tm ltime = *std::localtime( &time );
|
||||
|
||||
localHour = ltime.tm_hour + ltime.tm_min/60.0 + ltime.tm_sec/3600.0;
|
||||
utcHour = localHour - ltime.tm_gmtoff/3600.0;
|
||||
day = ltime.tm_yday;
|
||||
year = ltime.tm_year + 1900;
|
||||
|
||||
|
||||
std::tm millennium = {0,0,0,1,0,100};
|
||||
std::time_t millenniumTime = std::mktime(&millennium) - timezone;
|
||||
|
||||
|
||||
daysSinceY2K = (time - millenniumTime)/(60*60*24.0);
|
||||
//std::cout<<"days since y2k: "<<daysSinceY2K<<std::endl;
|
||||
julianDate = daysSinceY2K + JULIAN_DATEATY2K - JULIAN_OFFSET;
|
||||
//std::cout<<"julianDate: "<<julianDate<<std::endl;
|
||||
|
||||
|
||||
siderialUtcTime = 6.697374558 + 0.06570982441908 * (long)daysSinceY2K + 1.00273790935*utcHour;
|
||||
while(siderialUtcTime < 0) siderialUtcTime+=24;
|
||||
siderialUtcTime = fmod(siderialUtcTime, 24);
|
||||
@ -58,12 +58,13 @@ std::time_t Sun::JdTime::toStdTime()
|
||||
{
|
||||
std::tm millennium = {0,0,0,0,0,100};
|
||||
std::time_t millenniumTime = std::mktime(&millennium)- timezone;
|
||||
|
||||
|
||||
millenniumTime = millenniumTime + (julianDate-JULIAN_DATEATY2K+JULIAN_OFFSET)*(24*60*60);
|
||||
return millenniumTime;
|
||||
}
|
||||
|
||||
Sun::Sun(double latitude, double longitude, double altitude): latitude_(latitude), longetude_(longitude), altitude_(altitude)
|
||||
Sun::Sun(double latitude, double longitude, double altitude): latitude_(latitude), longetude_(longitude),
|
||||
altitude_(altitude)
|
||||
{}
|
||||
|
||||
double Sun::nextMeanSolarNoonJD(const JdTime& time)
|
||||
@ -78,7 +79,8 @@ double Sun::meanSolarAnomaly(double meanSolarNoon)
|
||||
|
||||
double Sun::eqOfCenter(double meanSolarAnomaly)
|
||||
{
|
||||
return 1.9148*sin(meanSolarAnomaly*TO_RADS) + 0.0200*sin(2*meanSolarAnomaly*TO_RADS) + 0.0003*sin(3*meanSolarAnomaly*TO_RADS);
|
||||
return 1.9148*sin(meanSolarAnomaly*TO_RADS) + 0.0200*sin(2*meanSolarAnomaly*TO_RADS) + 0.0003*sin(
|
||||
3*meanSolarAnomaly*TO_RADS);
|
||||
}
|
||||
|
||||
double Sun::eclipticLongitude(double eqOfCenter, double meanSolarAnomaly)
|
||||
@ -102,13 +104,14 @@ double Sun::solarDeclination(double eclipticLongitude)
|
||||
}
|
||||
|
||||
double Sun::hourAngle(double localSolarTime)
|
||||
{
|
||||
{
|
||||
return 360/24 * (localSolarTime - 12);
|
||||
}
|
||||
|
||||
double Sun::hourAngleAtSunset(double solarDeclination)
|
||||
{
|
||||
return TO_DEGS*acos((sin((-0.83-(2.076*sqrt(altitude_)/60.0))*TO_RADS) - sin(solarDeclination*TO_RADS)*sin(latitude_*TO_RADS))/(cos(latitude_*TO_RADS)*cos(solarDeclination*TO_RADS)));
|
||||
{
|
||||
return TO_DEGS*acos((sin((-0.83-(2.076*sqrt(altitude_)/60.0))*TO_RADS) - sin(solarDeclination*TO_RADS)*sin(
|
||||
latitude_*TO_RADS))/(cos(latitude_*TO_RADS)*cos(solarDeclination*TO_RADS)));
|
||||
}
|
||||
|
||||
double Sun::altitude()
|
||||
@ -119,9 +122,10 @@ double Sun::altitude()
|
||||
double eclipticLongitudeValue = eclipticLongitude(eqOfCenter(meanSolarAnomalyValue), meanSolarAnomalyValue);
|
||||
double localSolarTimeValue = localSolarTime(time, equationOfTime(meanSolarAnomalyValue, eclipticLongitudeValue));
|
||||
double declinationValue = solarDeclination(eclipticLongitudeValue);
|
||||
|
||||
double cosZenithAngle = sin(latitude_*TO_RADS)*sin(declinationValue*TO_RADS)+cos(latitude_*TO_RADS)*cos(declinationValue*TO_RADS)*cos(hourAngle(localSolarTimeValue)*TO_RADS);
|
||||
|
||||
|
||||
double cosZenithAngle = sin(latitude_*TO_RADS)*sin(declinationValue*TO_RADS)+cos(latitude_*TO_RADS)*cos(
|
||||
declinationValue*TO_RADS)*cos(hourAngle(localSolarTimeValue)*TO_RADS);
|
||||
|
||||
return TO_DEGS*asin(cosZenithAngle);
|
||||
}
|
||||
|
||||
@ -132,9 +136,10 @@ double Sun::maximumAltitude()
|
||||
double meanSolarAnomalyValue = meanSolarAnomaly(meanSolarNoonValue);
|
||||
double eclipticLongitudeValue = eclipticLongitude(eqOfCenter(meanSolarAnomalyValue), meanSolarAnomalyValue);
|
||||
double declinationValue = solarDeclination(eclipticLongitudeValue);
|
||||
|
||||
double cosZenithAngle = sin(latitude_*TO_RADS)*sin(declinationValue*TO_RADS)+cos(latitude_*TO_RADS)*cos(declinationValue*TO_RADS);
|
||||
|
||||
|
||||
double cosZenithAngle = sin(latitude_*TO_RADS)*sin(declinationValue*TO_RADS)+cos(latitude_*TO_RADS)*cos(
|
||||
declinationValue*TO_RADS);
|
||||
|
||||
return TO_DEGS*asin(cosZenithAngle);
|
||||
}
|
||||
|
||||
@ -152,9 +157,10 @@ std::time_t Sun::riseTime()
|
||||
double eclipticLongitudeValue = eclipticLongitude(eqOfCenter(meanSolarAnomalyValue), meanSolarAnomalyValue);
|
||||
double declinationValue = solarDeclination(eclipticLongitudeValue);
|
||||
double hourAngleValue = hourAngleAtSunset(declinationValue);
|
||||
|
||||
time.julianDate = meanSolarNoonValue + equationOfTime(meanSolarAnomalyValue, eclipticLongitudeValue) - hourAngleValue/360.0;
|
||||
|
||||
|
||||
time.julianDate = meanSolarNoonValue + equationOfTime(meanSolarAnomalyValue,
|
||||
eclipticLongitudeValue) - hourAngleValue/360.0;
|
||||
|
||||
return time.toStdTime();
|
||||
}
|
||||
std::time_t Sun::setTime()
|
||||
@ -165,9 +171,10 @@ std::time_t Sun::setTime()
|
||||
double eclipticLongitudeValue = eclipticLongitude(eqOfCenter(meanSolarAnomalyValue), meanSolarAnomalyValue);
|
||||
double declinationValue = solarDeclination(eclipticLongitudeValue);
|
||||
double hourAngleValue = hourAngleAtSunset(declinationValue);
|
||||
|
||||
time.julianDate = meanSolarNoonValue + equationOfTime(meanSolarAnomalyValue, eclipticLongitudeValue) + hourAngleValue/360.0;
|
||||
|
||||
|
||||
time.julianDate = meanSolarNoonValue + equationOfTime(meanSolarAnomalyValue,
|
||||
eclipticLongitudeValue) + hourAngleValue/360.0;
|
||||
|
||||
return time.toStdTime();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user