SGTime Class Reference

A class to calculate and manage a variety of time parameters. More...

#include <sg_time.hxx>

List of all members.

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
 
Returns:
current system/unix time in seconds

const char * get_zonename () const
 
Returns:
time zone name for your current position

tm * getGmt () const
 
Returns:
GMT in a "brokent down" tm structure

double getJD () const
 
Returns:
julian date

double getMjd () const
 
Returns:
modified julian date

double getLst () const
 
Returns:
local side real time

double getGst () const
 
Returns:
grenich side real time (lst when longitude == 0)

time_t get_local_offset () const
 
Returns:
offset in seconds to local timezone time


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.


Detailed Description

A class to calculate and manage a variety of time parameters.

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.


Constructor & Destructor Documentation

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).

Parameters:
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.

Parameters:
root root path point to data file location (timezone, etc.)

Definition at line 119 of file sg_time.cxx.


Member Function Documentation

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.

Parameters:
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.

Parameters:
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().


Friends And Related Function Documentation

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).

Parameters:
year current GMT year
month current GMT month
day current GMT day
hour current GMT hour
minute current minute
second current second
Returns:
unix/system time in seconds

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.

Parameters:
the_time the current GMT time in the tm structure
Returns:
unix/system time in seconds

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.

Parameters:
mn month
dy day
yr year
Returns:
modified julian date

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.

Parameters:
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)
Returns:
current modified Julian date (number of days elapsed since 1900 jan 0.5), mjd.

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.

Parameters:
mjd modified julian date
Returns:
greenwich mean sidereal time (gst)

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.

Parameters:
p time specified in a tm struct
buf buffer space to contain the result
Returns:
pointer to character array containt the result

Definition at line 583 of file sg_time.cxx.


The documentation for this class was generated from the following files:
Generated on Mon Dec 17 09:30:58 2007 for SimGear by  doxygen 1.5.1