#include <sg_time.hxx>
Public Member Functions | |
| SGTime () | |
| Default constructor. | |
| SGTime (double lon_rad, double lat_rad, const std::string &root, time_t init_time) | |
| Create an instance based on a specified position and data file path. | |
| SGTime (const std::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 std::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 |
| struct 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) |
| time_t | sgTimeGetGMT (struct tm *the_time) |
| double | sgTimeCalcMJD (int mn, double dy, int yr) |
| double | sgTimeCurrentMJD (time_t ct, long int warp) |
| double | sgTimeCalcGST (double mjd) |
| char * | sgTimeFormatTime (const struct tm *p, char *buf) |
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 63 of file sg_time.hxx.
| SGTime::SGTime | ( | double | lon_rad, | |
| double | lat_rad, | |||
| const std::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 |
| SGTime::SGTime | ( | const std::string & | root | ) |
Create an instance given a data file path.
| root | root path point to data file location (timezone, etc.) |
| 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 193 of file sg_time.cxx.
| void SGTime::updateLocal | ( | double | lon_rad, | |
| double | lat_rad, | |||
| const std::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 |
| time_t SGTime::get_cur_time | ( | ) | const [inline] |
| const char* SGTime::get_zonename | ( | ) | const [inline] |
| struct tm* SGTime::getGmt | ( | ) | const [inline, read] |
| double SGTime::getJD | ( | ) | const [inline] |
| double SGTime::getMjd | ( | ) | const [inline] |
| double SGTime::getLst | ( | ) | const [inline] |
| double SGTime::getGst | ( | ) | const [inline] |
Definition at line 189 of file sg_time.hxx.
| time_t SGTime::get_local_offset | ( | ) | const [inline] |
| 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 481 of file sg_time.cxx.
| 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 220 of file sg_time.hxx.
| 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 318 of file sg_time.cxx.
| 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 368 of file sg_time.cxx.
| double sgTimeCalcGST | ( | double | mjd | ) | [related] |
Given an mjd, calculate greenwich mean sidereal time, gst
| mjd | modified julian date |
Definition at line 412 of file sg_time.cxx.
| char * sgTimeFormatTime | ( | const struct tm * | p, | |
| char * | buf | |||
| ) | [related] |
Format time in a pretty form
| p | time specified in a tm struct | |
| buf | buffer space to contain the result |
Definition at line 577 of file sg_time.cxx.
1.5.6