CppEphem
Public Member Functions | Private Member Functions | Private Attributes | List of all members
CEObserver Class Reference

CEObserver class is a self contained object for describing an observer. Information relevant to the observer includes:

The above are used in the SOFA software to more accurately calculate the affect of refraction through the atmosphere.

Definition at line 28 of file CEObserver.h.

Public Member Functions

 CEObserver (const CEObserver &other)
 Copy constructor. More...
 
 CEObserver (const double &longitude, const double &latitude, const double &elevation, const CEAngleType &angle_type=CEAngleType::DEGREES)
 Constructor from a geographic position (latitude, longitude, altitude) Note that altitude defaults to sea-level. More...
 
 CEObserver (void)
 Default constructor. More...
 
double Elevation_m () const
 Return altitude in meters above sea level. More...
 
double Latitude_Deg () const
 Return geographic latitude in degrees. More...
 
double Latitude_Rad () const
 Return geographic latitude in radians. More...
 
double Longitude_Deg () const
 Return observer geographic longitude in degrees. More...
 
double Longitude_Rad () const
 Return observer geographic longitude in radians. More...
 
CEObserveroperator= (const CEObserver &other)
 Copy assignment operator. More...
 
std::vector< double > PositionCIRS (const CEDate &date) const
 Get the position vector for this observer relative to CIRS (Earth center) More...
 
std::vector< double > PositionGeo (void) const
 Returns the observers geocentric position in meters. More...
 
std::vector< double > PositionICRS (const CEDate &date) const
 Get the position vector for this observer relative to ICRS (solar system barycenter) More...
 
double Pressure_hPa () const
 Return atmospheric pressure in units of hPa. More...
 
std::string print (void) const
 Returns a string containing information about this object. More...
 
double RelativeHumidity () const
 Return relative humidity. More...
 
void SetElevation (const double &elevation=0.0)
 Set elevation in meters above sea level. More...
 
void SetGeoCoordinates (const double &longitude, const double &latitude, const CEAngleType &angle_type=CEAngleType::RADIANS)
 Set the observer's longitude and latitude. More...
 
void SetLatitude (const double &latitude, const CEAngleType &angle_type=CEAngleType::RADIANS)
 Set the observer's latitude. More...
 
void SetLongitude (const double &longitude, const CEAngleType &angle_type=CEAngleType::RADIANS)
 Set the observer's longitude. More...
 
void SetPressure_hPa (const double &pressure=CppEphem::EstimatePressure_hPa(CppEphem::SeaLevelTemp_C()))
 Set the observer's pressure. More...
 
void SetRelativeHumidity (const double &humidity=0.0)
 Set the observer's relative humidity. More...
 
void SetTemperature_C (const double &temp_C=CppEphem::SeaLevelTemp_C())
 Set the observer's temperature (Celsius) More...
 
void SetTemperature_F (const double &temp_F=CppEphem::SeaLevelTemp_F())
 Set the observer's temperature (Fahrenheit) More...
 
void SetTemperature_K (const double &temp_K=CppEphem::SeaLevelTemp_K())
 Set the observer's temperature (Kelvin) More...
 
void SetUTCOffset (const double &utc_offset)
 Set the UTC offset for the observers time. More...
 
void SetWavelength_um (const double &new_wavelength_um)
 Set the observer's observing wavelength (micrometers) More...
 
double Temperature_C () const
 Return temperature in degrees Celsius. More...
 
double Temperature_F () const
 Return temperature in degrees Fahrenheit. More...
 
double Temperature_K () const
 Return temperature in Kelvin. More...
 
std::vector< double > Time (const CEDate &date)
 Get the current local time information (see CETime) More...
 
std::vector< double > Time_UTC (const CEDate &date)
 Get the current local time information (see CETime) More...
 
double UTCOffset () const
 
std::vector< double > VelocityCIRS (const CEDate &date) const
 Get the velocity vector for this observer relative to CIRS (solar system barycenter) More...
 
std::vector< double > VelocityICRS (const CEDate &date) const
 Get the velocity vector for this observer relative to ICRS (solar system barycenter) More...
 
double Wavelength_um () const
 Return the wavelength in units of micrometers. More...
 
virtual ~CEObserver (void)
 Destructor. More...
 

Private Member Functions

void copy_members (const CEObserver &other)
 Copy data members from another CEObserver object. More...
 
void free_members (void)
 Initialize the data members. More...
 
void init_members (void)
 Initialize the data members. More...
 
void UpdatePosVel (const CEDate &date) const
 Update cached position/velocity vectors. More...
 

Private Attributes

double cache_date_
 Date used to copute pos/vel vectors. More...
 
double elevation_m_
 Elevation (in meters) above sea-level. More...
 
double latitude_
 Geographic latitude (radians) More...
 
double longitude_
 Geographic longitude (radians) More...
 
std::vector< double > pos_cirs_
 XYZ position (AU) relative to Earth center. More...
 
std::vector< double > pos_icrs_
 XYZ position (AU) relative to solar system barycenter. More...
 
double pressure_hPa_
 Atmospheric pressure (in units of hPa) More...
 
double relative_humidity_
 Relative humidity (in range 0-1) More...
 
double temperature_celsius_
 Temperature in degrees celsius. More...
 
double utc_offset_
 UTC offset in hours (set by default to system offset) More...
 
std::vector< double > vel_cirs_
 XYZ velocity (AU) relative to Earth center. More...
 
std::vector< double > vel_icrs_
 XYZ veloicty (AU) relative to solar system barycenter. More...
 
double wavelength_um_
 Observing wavelength (micrometers) More...
 

#include <CEObserver.h>

Constructor & Destructor Documentation

◆ CEObserver() [1/3]

CEObserver::CEObserver ( void  )

Default constructor.

Definition at line 45 of file CEObserver.cpp.

◆ CEObserver() [2/3]

CEObserver::CEObserver ( const double &  longitude,
const double &  latitude,
const double &  elevation,
const CEAngleType angle_type = CEAngleType::DEGREES 
)

Constructor from a geographic position (latitude, longitude, altitude) Note that altitude defaults to sea-level.

Parameters
[in]longitudeObserver longitude (east positive)
[in]latitudeObserver latitude
[in]elevationObserver elevation above sea-level (meters)
[in]angle_typeAngle type for lon,lat (default is degrees)

Definition at line 60 of file CEObserver.cpp.

◆ CEObserver() [3/3]

CEObserver::CEObserver ( const CEObserver other)

Copy constructor.

Parameters
[in]otherAnother observer object that will be copied

Definition at line 79 of file CEObserver.cpp.

◆ ~CEObserver()

CEObserver::~CEObserver ( void  )
virtual

Destructor.

Definition at line 89 of file CEObserver.cpp.

Member Function Documentation

◆ copy_members()

void CEObserver::copy_members ( const CEObserver other)
private

Copy data members from another CEObserver object.

Parameters
[in]otherCEObserver object to copy from

Definition at line 209 of file CEObserver.cpp.

◆ Elevation_m()

double CEObserver::Elevation_m ( ) const
inline

Return altitude in meters above sea level.

Definition at line 166 of file CEObserver.h.

◆ free_members()

void CEObserver::free_members ( void  )
private

Initialize the data members.

Definition at line 198 of file CEObserver.cpp.

◆ init_members()

void CEObserver::init_members ( void  )
private

Initialize the data members.

Definition at line 232 of file CEObserver.cpp.

◆ Latitude_Deg()

double CEObserver::Latitude_Deg ( ) const
inline

Return geographic latitude in degrees.

Definition at line 156 of file CEObserver.h.

◆ Latitude_Rad()

double CEObserver::Latitude_Rad ( ) const
inline

Return geographic latitude in radians.

Definition at line 146 of file CEObserver.h.

◆ Longitude_Deg()

double CEObserver::Longitude_Deg ( ) const
inline

Return observer geographic longitude in degrees.

Definition at line 136 of file CEObserver.h.

◆ Longitude_Rad()

double CEObserver::Longitude_Rad ( ) const
inline

Return observer geographic longitude in radians.

Definition at line 126 of file CEObserver.h.

◆ operator=()

CEObserver & CEObserver::operator= ( const CEObserver other)

Copy assignment operator.

Parameters
[in]otherCEObserver object to be copied
Returns
Reference to this CEObserver object post-copy

Definition at line 101 of file CEObserver.cpp.

◆ PositionCIRS()

std::vector< double > CEObserver::PositionCIRS ( const CEDate date) const

Get the position vector for this observer relative to CIRS (Earth center)

Parameters
[in]dateDate object for computing position
Returns
Position vector relative to earth center position (AU)

Definition at line 133 of file CEObserver.cpp.

◆ PositionGeo()

std::vector< double > CEObserver::PositionGeo ( void  ) const

Returns the observers geocentric position in meters.

Returns
Geocentric position of observer (in meters)

The position returned is in reference to the WGS84 coordinates

Definition at line 119 of file CEObserver.cpp.

◆ PositionICRS()

std::vector< double > CEObserver::PositionICRS ( const CEDate date) const

Get the position vector for this observer relative to ICRS (solar system barycenter)

Parameters
[in]dateDate object for computing position
Returns
Position vector relative to solar system barycenter position (AU)

Definition at line 145 of file CEObserver.cpp.

◆ Pressure_hPa()

double CEObserver::Pressure_hPa ( ) const
inline

Return atmospheric pressure in units of hPa.

Definition at line 176 of file CEObserver.h.

◆ print()

std::string CEObserver::print ( void  ) const

Returns a string containing information about this object.

Returns
Formatted string containing information about this observer

Definition at line 180 of file CEObserver.cpp.

◆ RelativeHumidity()

double CEObserver::RelativeHumidity ( ) const
inline

Return relative humidity.

Definition at line 216 of file CEObserver.h.

◆ SetElevation()

void CEObserver::SetElevation ( const double &  elevation = 0.0)
inline

Set elevation in meters above sea level.

Parameters
[in]elevationA new value for the elevation (meters)

Definition at line 285 of file CEObserver.h.

◆ SetGeoCoordinates()

void CEObserver::SetGeoCoordinates ( const double &  longitude,
const double &  latitude,
const CEAngleType angle_type = CEAngleType::RADIANS 
)
inline

Set the observer's longitude and latitude.

Parameters
[in]longitudeLongitude for the observer
[in]latitudeLatitude for the observer
[in]angle_typeAngle type of the provided lon,lat

Definition at line 324 of file CEObserver.h.

◆ SetLatitude()

void CEObserver::SetLatitude ( const double &  latitude,
const CEAngleType angle_type = CEAngleType::RADIANS 
)
inline

Set the observer's latitude.

Parameters
[in]latitudeLatitude for the observer
[in]angle_typeAngle type of the provided latitude

Definition at line 310 of file CEObserver.h.

◆ SetLongitude()

void CEObserver::SetLongitude ( const double &  longitude,
const CEAngleType angle_type = CEAngleType::RADIANS 
)
inline

Set the observer's longitude.

Parameters
[in]longitudeLongitude for the observer
[in]angle_typeAngle type of the provided longitude

Definition at line 297 of file CEObserver.h.

◆ SetPressure_hPa()

void CEObserver::SetPressure_hPa ( const double &  pressure = CppEphem::EstimatePressure_hPa(CppEphem::SeaLevelTemp_C()))
inline

Set the observer's pressure.

Parameters
[in]pressurePressure (hPa) for the observer

Definition at line 338 of file CEObserver.h.

◆ SetRelativeHumidity()

void CEObserver::SetRelativeHumidity ( const double &  humidity = 0.0)
inline

Set the observer's relative humidity.

Parameters
[in]humidityRelative humidity (0-1) for the observer

Definition at line 349 of file CEObserver.h.

◆ SetTemperature_C()

void CEObserver::SetTemperature_C ( const double &  temp_C = CppEphem::SeaLevelTemp_C())
inline

Set the observer's temperature (Celsius)

Parameters
[in]temp_CNew temperature (Celsius)

Definition at line 360 of file CEObserver.h.

◆ SetTemperature_F()

void CEObserver::SetTemperature_F ( const double &  temp_F = CppEphem::SeaLevelTemp_F())
inline

Set the observer's temperature (Fahrenheit)

Parameters
[in]temp_KNew temperature (Fahrenheit)

Definition at line 382 of file CEObserver.h.

◆ SetTemperature_K()

void CEObserver::SetTemperature_K ( const double &  temp_K = CppEphem::SeaLevelTemp_K())
inline

Set the observer's temperature (Kelvin)

Parameters
[in]temp_KNew temperature (Kelvin)

Definition at line 371 of file CEObserver.h.

◆ SetUTCOffset()

void CEObserver::SetUTCOffset ( const double &  utc_offset)
inline

Set the UTC offset for the observers time.

Definition at line 236 of file CEObserver.h.

◆ SetWavelength_um()

void CEObserver::SetWavelength_um ( const double &  new_wavelength_um)
inline

Set the observer's observing wavelength (micrometers)

Parameters
[in]new_wavelength_umNew wavelength (micrometers)

Definition at line 393 of file CEObserver.h.

◆ Temperature_C()

double CEObserver::Temperature_C ( ) const
inline

Return temperature in degrees Celsius.

Definition at line 186 of file CEObserver.h.

◆ Temperature_F()

double CEObserver::Temperature_F ( ) const
inline

Return temperature in degrees Fahrenheit.

Definition at line 206 of file CEObserver.h.

◆ Temperature_K()

double CEObserver::Temperature_K ( ) const
inline

Return temperature in Kelvin.

Definition at line 196 of file CEObserver.h.

◆ Time()

std::vector< double > CEObserver::Time ( const CEDate date)
inline

Get the current local time information (see CETime)

Parameters
[in]dateA date object to convert to local time of this observer
Returns
Local time as a vector [H,M,S,seconds-fraction]

Definition at line 258 of file CEObserver.h.

◆ Time_UTC()

std::vector< double > CEObserver::Time_UTC ( const CEDate date)
inline

Get the current local time information (see CETime)

Parameters
[in]dateA date object to convert to local time of this observer
Returns
time as vector

Definition at line 274 of file CEObserver.h.

◆ UpdatePosVel()

void CEObserver::UpdatePosVel ( const CEDate date) const
private

Update cached position/velocity vectors.

Parameters
[in]dateDate for computation

Definition at line 257 of file CEObserver.cpp.

◆ UTCOffset()

double CEObserver::UTCOffset ( ) const
inline
Returns
UTCOffset value of this observer (hours)

Definition at line 246 of file CEObserver.h.

◆ VelocityCIRS()

std::vector< double > CEObserver::VelocityCIRS ( const CEDate date) const

Get the velocity vector for this observer relative to CIRS (solar system barycenter)

Parameters
[in]dateDate object for computing position
Returns
Velocity vector relative to Earth center position (AU)

Definition at line 157 of file CEObserver.cpp.

◆ VelocityICRS()

std::vector< double > CEObserver::VelocityICRS ( const CEDate date) const

Get the velocity vector for this observer relative to ICRS (solar system barycenter)

Parameters
[in]dateDate object for computing position
Returns
Velocity vector relative to solar system barycenter position (AU)

Definition at line 169 of file CEObserver.cpp.

◆ Wavelength_um()

double CEObserver::Wavelength_um ( ) const
inline

Return the wavelength in units of micrometers.

Definition at line 226 of file CEObserver.h.

Member Data Documentation

◆ cache_date_

double CEObserver::cache_date_
mutableprivate

Date used to copute pos/vel vectors.

Definition at line 126 of file CEObserver.h.

◆ elevation_m_

double CEObserver::elevation_m_
private

Elevation (in meters) above sea-level.

Definition at line 117 of file CEObserver.h.

◆ latitude_

double CEObserver::latitude_
private

Geographic latitude (radians)

Definition at line 116 of file CEObserver.h.

◆ longitude_

double CEObserver::longitude_
private

Geographic longitude (radians)

Definition at line 115 of file CEObserver.h.

◆ pos_cirs_

std::vector<double> CEObserver::pos_cirs_
mutableprivate

XYZ position (AU) relative to Earth center.

Definition at line 127 of file CEObserver.h.

◆ pos_icrs_

std::vector<double> CEObserver::pos_icrs_
mutableprivate

XYZ position (AU) relative to solar system barycenter.

Definition at line 128 of file CEObserver.h.

◆ pressure_hPa_

double CEObserver::pressure_hPa_
private

Atmospheric pressure (in units of hPa)

Definition at line 120 of file CEObserver.h.

◆ relative_humidity_

double CEObserver::relative_humidity_
private

Relative humidity (in range 0-1)

Definition at line 122 of file CEObserver.h.

◆ temperature_celsius_

double CEObserver::temperature_celsius_
private

Temperature in degrees celsius.

Definition at line 121 of file CEObserver.h.

◆ utc_offset_

double CEObserver::utc_offset_
private

UTC offset in hours (set by default to system offset)

Definition at line 133 of file CEObserver.h.

◆ vel_cirs_

std::vector<double> CEObserver::vel_cirs_
mutableprivate

XYZ velocity (AU) relative to Earth center.

Definition at line 129 of file CEObserver.h.

◆ vel_icrs_

std::vector<double> CEObserver::vel_icrs_
mutableprivate

XYZ veloicty (AU) relative to solar system barycenter.

Definition at line 130 of file CEObserver.h.

◆ wavelength_um_

double CEObserver::wavelength_um_
private

Observing wavelength (micrometers)

Definition at line 123 of file CEObserver.h.


The documentation for this class was generated from the following files: