X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FTime%2Fsunsolver.cxx;h=b37112816282f1e061219139f600a770087b47ad;hb=da73dd97d3d0e36b6078728ac39f0b98cae46ff7;hp=b45e0bf2ca52785010ae468605dfe72de73a1e39;hpb=133cfbfa7f4ec62ddc97bd93d4a50fec81b52362;p=flightgear.git diff --git a/src/Time/sunsolver.cxx b/src/Time/sunsolver.cxx index b45e0bf2c..b37112816 100644 --- a/src/Time/sunsolver.cxx +++ b/src/Time/sunsolver.cxx @@ -65,13 +65,9 @@ void fgSunPositionGST(double gst, double *lon, double *lat) { double dec = atan2(ze, sqrt(xs * xs + ye * ye)); tmp = ra - (SGD_2PI/24)*gst; - if (tmp < -SGD_PI) { - do tmp += SGD_2PI; - while (tmp < -SGD_PI); - } else if (tmp > SGD_PI) { - do tmp -= SGD_2PI; - while (tmp < -SGD_PI); - } + + double signedPI = (tmp < 0.0) ? -SGD_PI : SGD_PI; + tmp = fmod(tmp+signedPI, SGD_2PI) - signedPI; *lon = tmp; *lat = dec; @@ -100,8 +96,11 @@ static double sun_angle( const SGTime &t, const SGVec3d& world_up, // << nsun[2] << endl; double sun_angle = acos( dot( nup, nsun ) ); + + double signedPI = (sun_angle < 0.0) ? -SGD_PI : SGD_PI; + sun_angle = fmod(sun_angle+signedPI, SGD_2PI) - signedPI; + double sun_angle_deg = sun_angle * SG_RADIANS_TO_DEGREES; - while ( sun_angle_deg < -180 ) { sun_angle += 360; } SG_LOG( SG_EVENT, SG_DEBUG, "sun angle relative to current location = " << sun_angle_deg );