- * Given the current unix time in seconds, calculate seconds to noon
- */
-time_t fgTimeSecondsUntilNoon( time_t cur_time,
- double lon_rad,
- double lat_rad )
-{
- // cout << "location = " << lon_rad * SG_RADIANS_TO_DEGREES << ", "
- // << lat_rad * SG_RADIANS_TO_DEGREES << endl;
- Point3D geod( lon_rad, lat_rad, 0 );
- Point3D tmp = sgGeodToCart( geod );
- sgVec3 world_up;
- sgSetVec3( world_up, tmp.x(), tmp.y(), tmp.z() );
- SGTime t = SGTime( lon_rad, lat_rad, "", 0 );
-
- double best_angle = 180.0;
- time_t best_time = cur_time;
-
- for ( time_t secs = cur_time - half_day_secs;
- secs < cur_time + half_day_secs;
- secs += step_secs )
- {
- t.update( lon_rad, lat_rad, secs, 0 );
- double angle = sun_angle( t, world_up, lon_rad, lat_rad );
- if ( angle < best_angle ) {
- // cout << "best angle = " << angle << " offset = "
- // << secs - cur_time << endl;
- best_angle = angle;
- best_time = secs;
- }
- }
-
- return best_time - cur_time;
-}
-
-
-/**
- * Given the current unix time in seconds, calculate seconds to midnight
+ * Given the current unix time in seconds, calculate seconds to the
+ * specified sun angle (relative to straight up.) Also specify if we
+ * want the angle while the sun is ascending or descending. For
+ * instance noon is when the sun angle is 0 (or the closest it can
+ * get.) Dusk is when the sun angle is 90 and descending. Dawn is
+ * when the sun angle is 90 and ascending.