#include <sg_time.hxx>
Public Member Functions | |
| SGTime () | |
| Default constructor. | |
| SGTime (double lon_rad, double lat_rad, const string &root, time_t init_time) | |
| Create an instance based on a specified position and data file path. | |
| SGTime (const string &root) | |
| Create an instance given a data file path. | |
| ~SGTime () | |
| Destructor. | |
| void | update (double lon_rad, double lat_rad, time_t ct, long int warp) |
| Update the time related variables. | |
| void | updateLocal (double lon_rad, double lat_rad, const string &root) |
| Given lon/lat, update timezone information and local_offset The updateLocal() method is intended to be called less frequently - only when your position is likely to be changed enough that your timezone may have changed as well. | |
| time_t | get_cur_time () const |
| |
| const char * | get_zonename () const |
| |
| tm * | getGmt () const |
| |
| double | getJD () const |
| |
| double | getMjd () const |
| |
| double | getLst () const |
| |
| double | getGst () const |
| |
| time_t | get_local_offset () const |
| |
Related Functions | |
| (Note that these are not member functions.) | |
| time_t | sgTimeGetGMT (int year, int month, int day, int hour, int minute, int second) |
| Return unix time in seconds for the given date (relative to GMT). | |
| time_t | sgTimeGetGMT (struct tm *the_time) |
| this is just a wrapper for sgTimeGetGMT that allows an alternate form of input parameters. | |
| double | sgTimeCalcMJD (int mn, double dy, int yr) |
| Given a date in our form, return the equivalent modified Julian date (number of days elapsed since 1900 jan 0.5), mjd. | |
| double | sgTimeCurrentMJD (time_t ct, long int warp) |
| Given an optional offset from current time calculate the current modified julian date. | |
| double | sgTimeCalcGST (double mjd) |
| Given an mjd, calculate greenwich mean sidereal time, gst. | |
| char * | sgTimeFormatTime (const struct tm *p, char *buf, int size) |
| Format time in a pretty form. | |
The SGTime class provides many real-world time values. It calculates current time in seconds, GMT time, local time zone, local offset in seconds from GMT, Julian date, and sidereal time. All of these operate with seconds as their granularity so this class is not intended for timing sub-second events. These values are intended as input to things like real world lighting calculations and real astronomical object placement.
To properly use the SGTime class there are a couple of things to be aware of. After creating an instance of the class, you will need to periodically (i.e. before every frame) call the update() method. Optionally, if you care about updating time zone information based on your latitude and longitude, you can call the updateLocal() method periodically as your position changes by significant amounts.
Definition at line 67 of file sg_time.hxx.
| SGTime::SGTime | ( | double | lon_rad, | |
| double | lat_rad, | |||
| const string & | root, | |||
| time_t | init_time | |||
| ) |
Create an instance based on a specified position and data file path.
This creates an instance of the SGTime object. When calling the constructor you need to provide a root path pointing to your time zone definition tree. Optionally, you can call a form of the constructor that accepts your current longitude and latitude in radians.
If you don't know your position when you call the SGTime constructor, you can just use the first form (which assumes 0, 0).
| lon_rad | current longitude (radians) | |
| lat_rad | current latitude (radians) | |
| root | root path point to data file location (timezone, etc.) | |
| init_time | provide an initialization time, 0 means use current clock time |
Definition at line 112 of file sg_time.cxx.
| SGTime::SGTime | ( | const string & | root | ) |
Create an instance given a data file path.
| root | root path point to data file location (timezone, etc.) |
Definition at line 119 of file sg_time.cxx.
| void SGTime::update | ( | double | lon_rad, | |
| double | lat_rad, | |||
| time_t | ct, | |||
| long int | warp | |||
| ) |
Update the time related variables.
The update() method requires you to pass in your position and an optional time offset in seconds. The offset (or warp) allows you to offset "sim" time relative to "real" time. The update() method is designed to be called by the host application before every frame.
| lon_rad | current longitude (radians) | |
| lat_rad | current latitude (radians) | |
| ct | specify a unix time, otherwise specify 0 to use current clock time | |
| warp | an optional time offset specified in seconds. This allows us to advance or rewind "time" if we choose to. |
Definition at line 199 of file sg_time.cxx.
References SG_LOG, and sgTimeCurrentMJD().
| void SGTime::updateLocal | ( | double | lon_rad, | |
| double | lat_rad, | |||
| const string & | root | |||
| ) |
Given lon/lat, update timezone information and local_offset The updateLocal() method is intended to be called less frequently - only when your position is likely to be changed enough that your timezone may have changed as well.
In the FlightGear project we call updateLocal() every few minutes from our periodic event manager.
| lon_rad | current longitude (radians) | |
| lat_rad | current latitude (radians) | |
| root | base path containing time zone directory |
Definition at line 275 of file sg_time.cxx.
References SGPath::append(), SGPath::c_str(), SGGeoCoord::getDescription(), SGPath::set(), SG_LOG, SGD_PI_2, sgTimeGetGMT(), and SGPath::str().
| time_t sgTimeGetGMT | ( | int | year, | |
| int | month, | |||
| int | day, | |||
| int | hour, | |||
| int | minute, | |||
| int | second | |||
| ) | [related] |
Return unix time in seconds for the given date (relative to GMT).
| year | current GMT year | |
| month | current GMT month | |
| day | current GMT day | |
| hour | current GMT hour | |
| minute | current minute | |
| second | current second |
Definition at line 487 of file sg_time.cxx.
Referenced by sgTimeGetGMT(), and updateLocal().
| time_t sgTimeGetGMT | ( | struct tm * | the_time | ) | [related] |
this is just a wrapper for sgTimeGetGMT that allows an alternate form of input parameters.
| the_time | the current GMT time in the tm structure |
Definition at line 224 of file sg_time.hxx.
References sgTimeGetGMT().
| double sgTimeCalcMJD | ( | int | mn, | |
| double | dy, | |||
| int | yr | |||
| ) | [related] |
Given a date in our form, return the equivalent modified Julian date (number of days elapsed since 1900 jan 0.5), mjd.
Adapted from Xephem.
| mn | month | |
| dy | day | |
| yr | year |
Definition at line 324 of file sg_time.cxx.
Referenced by sgTimeCurrentMJD().
| double sgTimeCurrentMJD | ( | time_t | ct, | |
| long int | warp | |||
| ) | [related] |
Given an optional offset from current time calculate the current modified julian date.
| ct | specify a unix time, otherwise specify 0 to use current clock time | |
| warp | number of seconds to offset from current time (0 if no offset) |
Definition at line 374 of file sg_time.cxx.
Referenced by update().
| double sgTimeCalcGST | ( | double | mjd | ) | [related] |
Given an mjd, calculate greenwich mean sidereal time, gst.
| mjd | modified julian date |
Definition at line 418 of file sg_time.cxx.
| char * sgTimeFormatTime | ( | const struct tm * | p, | |
| char * | buf, | |||
| int | size | |||
| ) | [related] |
Format time in a pretty form.
| p | time specified in a tm struct | |
| buf | buffer space to contain the result |
Definition at line 583 of file sg_time.cxx.
1.5.1