Go to the documentation of this file.
71 const std::vector<double>& ycoord,
125 if (
this != &other) {
146 double *return_ra,
double *return_dec,
160 iauAtic13(input_ra, input_dec, tdb1, tdb2, return_ra, return_dec, &eo) ;
168 *return_dec *= DR2D ;
193 double ICRS_ra(0.0), ICRS_dec(0.0) ;
226 double *az,
double *zen,
232 double *observed_dec,
242 double temp_ra, temp_dec, temp_hour_angle ;
244 if (observed_ra ==
nullptr) observed_ra = &temp_ra;
245 if (observed_dec ==
nullptr) observed_dec = &temp_dec;
246 if (hour_angle ==
nullptr) hour_angle = &temp_hour_angle;
269 *observed_ra *= DR2D;
270 *observed_dec *= DR2D;
289 double *return_ra,
double *return_dec,
306 iauAtci13(input_ra, input_dec,
309 return_ra, return_dec, &eo) ;
313 }
catch (std::exception &e) {
322 *return_dec *= DR2D ;
338 double *glon,
double *glat,
348 iauIcrs2g(input_ra, input_dec, glon, glat) ;
375 double *az,
double *zen,
381 double *observed_dec,
386 double temp_dec(0.0);
387 double temp_hour_angle(0.0);
390 if (observed_ra ==
nullptr) observed_ra = &temp_ra;
391 if (observed_dec ==
nullptr) observed_dec = &temp_dec;
392 if (hour_angle ==
nullptr) hour_angle = &temp_hour_angle;
414 observed_ra, observed_dec, hour_angle) ;
420 *observed_ra *= DR2D ;
421 *observed_dec *= DR2D ;
422 *hour_angle *= DR2D ;
457 double tmp_dec(*dec);
477 double *ra,
double *dec,
487 iauG2icrs(glon, glat, ra, dec) ;
511 double *az,
double *zen,
516 double *observed_glon,
517 double *observed_glat,
540 observed_glon, observed_glat, hour_angle) ;
546 if (observed_glon !=
nullptr) *observed_glon *= DR2D ;
547 if (observed_glat !=
nullptr) *observed_glat *= DR2D ;
548 if (hour_angle !=
nullptr) *hour_angle *= DR2D ;
570 double *ra,
double *dec,
612 double *ra,
double *dec,
657 double *glon,
double *glat,
717 double *az,
double *zen,
723 double temperature_celsius,
724 double relative_humidity,
726 double xp,
double yp,
727 double wavelength_um,
729 double *observed_dec,
734 double temp_dec(0.0);
735 double temp_hour_angle(0.0);
738 if (observed_ra ==
nullptr) observed_ra = &temp_ra;
739 if (observed_dec ==
nullptr) observed_dec = &temp_dec;
740 if (hour_angle ==
nullptr) hour_angle = &temp_hour_angle;
746 err_code = iauAtio13(ra, dec,
761 }
catch (std::exception &e) {
792 double *ra,
double *dec,
798 double temperature_celsius,
799 double relative_humidity,
801 double xp,
double yp,
802 double wavelength_um)
805 int err_code = iauAtoi13(
"A", az, zen,
843 double *az,
double *zen,
849 double temperature_celsius,
850 double relative_humidity,
852 double xp,
double yp,
853 double wavelength_um,
855 double *observed_dec,
860 double temp_dec(0.0);
861 double temp_hour_angle(0.0);
864 if (observed_ra ==
nullptr) observed_ra = &temp_ra;
865 if (observed_dec ==
nullptr) observed_dec = &temp_dec;
866 if (hour_angle ==
nullptr) hour_angle = &temp_hour_angle;
889 CIRS2ICRS(*observed_ra, *observed_dec, observed_ra, observed_dec,
916 double *ra,
double *dec,
922 double temperature_celsius,
923 double relative_humidity,
925 double xp,
double yp,
926 double wavelength_um)
933 elevation_m, pressure_hPa,
934 temperature_celsius, relative_humidity,
970 double *az,
double *zen,
976 double temperature_celsius,
977 double relative_humidity,
979 double xp,
double yp,
981 double *observed_glon,
982 double *observed_glat,
986 double temp_glon(0.0);
987 double temp_glat(0.0);
989 double temp_dec(0.0);
990 double temp_hour_angle(0.0);
993 if (observed_glon ==
nullptr) observed_glon = &temp_glon;
994 if (observed_glat ==
nullptr) observed_glat = &temp_glat;
995 if (hour_angle ==
nullptr) hour_angle = &temp_hour_angle;
1011 temperature_celsius,
1020 CIRS2Galactic(temp_ra, temp_dec, observed_glon, observed_glat, date) ;
1046 double *glon,
double *glat,
1051 double pressure_hPa,
1052 double temperature_celsius,
1053 double relative_humidity,
1055 double xp,
double yp,
1056 double wavelength_um)
1062 longitude, latitude,
1063 elevation_m, pressure_hPa,
1064 temperature_celsius, relative_humidity,
1066 if (err_code == 0) {
1092 const double& longitude,
1093 const double& latitude,
1094 const double& elevation_m,
1095 const double& pressure_hPa,
1096 const double& temperature_celsius,
1097 const double& relative_humidity,
1099 const double&
xp,
const double&
yp,
1100 const double& wavelength)
const
1105 double observed1(0);
1106 double observed2(0);
1107 double observed3(0);
1112 julian_date, longitude, latitude,
1113 elevation_m, pressure_hPa, temperature_celsius,
1114 relative_humidity,
dut1,
xp,
yp, wavelength,
1115 &observed1, &observed2, &observed3) ;
1119 julian_date, longitude, latitude,
1120 elevation_m, pressure_hPa, temperature_celsius,
1121 relative_humidity,
dut1,
xp,
yp, wavelength,
1122 &observed1, &observed2, &observed3) ;
1126 julian_date, longitude, latitude,
1127 elevation_m, pressure_hPa, temperature_celsius,
1128 relative_humidity,
dut1,
xp,
yp, wavelength,
1129 &observed1, &observed2, &observed3) ;
1199 "Supplied coordinates are in different frames");
1245 CEAngle angsep(iauSeps(xcoord_first, ycoord_first,
1246 xcoord_second, ycoord_second)) ;
1309 double pressure_hPa,
1310 double temperature_celsius,
1311 double relative_humidity,
1313 double xp,
double yp,
1314 double wavelength_um)
1322 elevation_m, pressure_hPa,
1323 temperature_celsius, relative_humidity,
1327 elevation_m, pressure_hPa,
1328 temperature_celsius, relative_humidity,
1332 elevation_m, pressure_hPa,
1333 temperature_celsius, relative_humidity,
1337 elevation_m, pressure_hPa,
1338 temperature_celsius, relative_humidity,
1366 double pressure_hPa,
1367 double temperature_celsius,
1368 double relative_humidity,
1370 double xp,
double yp,
1371 double wavelength_um)
1373 double xcoord_new(0.0);
1374 double ycoord_new(0.0) ;
1382 &xcoord_new, &ycoord_new,
1387 &xcoord_new, &ycoord_new,
1392 &xcoord_new, &ycoord_new,
1393 jd, longitude, latitude,
1394 elevation_m, pressure_hPa,
1395 temperature_celsius, relative_humidity,
1426 double pressure_hPa,
1427 double temperature_celsius,
1428 double relative_humidity,
1430 double xp,
double yp,
1431 double wavelength_um)
1433 double xcoord_new(0.0);
1434 double ycoord_new(0.0);
1446 &xcoord_new, &ycoord_new,
1447 jd, longitude, latitude,
1448 elevation_m, pressure_hPa,
1449 temperature_celsius, relative_humidity,
1479 double pressure_hPa,
1480 double temperature_celsius,
1481 double relative_humidity,
1483 double xp,
double yp,
1484 double wavelength_um)
1486 double xcoord_new(0.0);
1487 double ycoord_new(0.0);
1499 &xcoord_new, &ycoord_new,
1500 jd, longitude, latitude,
1501 elevation_m, pressure_hPa,
1502 temperature_celsius, relative_humidity,
1530 double pressure_hPa,
1531 double temperature_celsius,
1532 double relative_humidity,
1534 double xp,
double yp,
1535 double wavelength_um)
1537 double xcoord_new(0.0);
1538 double ycoord_new(0.0);
1539 double apparent_x, apparent_y, apparent_hourangle;
1542 &xcoord_new, &ycoord_new,
1544 longitude, latitude,
1545 elevation_m, pressure_hPa,
1546 temperature_celsius,
1550 &apparent_x, &apparent_y, &apparent_hourangle) ;
1553 &xcoord_new, &ycoord_new,
1555 longitude, latitude,
1556 elevation_m, pressure_hPa,
1557 temperature_celsius,
1561 &apparent_x, &apparent_y, &apparent_hourangle) ;
1564 &xcoord_new, &ycoord_new,
1566 longitude, latitude,
1567 elevation_m, pressure_hPa,
1568 temperature_celsius,
1572 &apparent_x, &apparent_y, &apparent_hourangle) ;
1575 std::string msg =
"[ERROR] ";
1579 msg +=
"Unable to convert to OBSERVED from OBSERVED";
1646 return ret_angle.
Deg();
1648 return ret_angle.
Rad();
1672 return ret_angle.
Deg();
1674 return ret_angle.
Rad();
1711 std::string msg =
"Coordinates:\n";
1712 msg +=
" - System : " + std::to_string(
int(
coord_type_)) +
"\n";
1757 bool are_equal =
true;
1768 double marcsec_rad = 4.848e-6;
1769 if (angsep > 3.0*marcsec_rad) {
1784 return !(lhs == rhs);
double Elevation_m() const
Return altitude in meters above sea level.
static double DMSToAngle(const std::vector< double > &angle, const CEAngleType &return_type=CEAngleType::DEGREES)
Convert a given angle vector from {degrees, minutes, seconds} to an angle.
static CEAngle Dms(const char *angle_str, const char &delim=0)
Return double constructed from a string representing degrees, minutes, seconds.
static int Observed2Galactic(double az, double zen, double *glon, double *glat, const CEDate &date, const CEObserver &observer, const CEAngleType &angle_type=CEAngleType::RADIANS)
Convert Observed -> Galactic coordinates.
virtual CEAngle AngularSeparation(const CECoordinates &coords) const
Get the angular separation between the coordinates represented by this object and another coordinate ...
CECoordinates & operator=(const CECoordinates &other)
Overloaded '=' (assignment) operator.
Galacitc longitude, latitude.
std::vector< double > DmsVect(void) const
Return vector of doubles representing the {degrees, arcmin, arcsec, arcsec-fraction}.
double yp(const double &mjd)
Polar motion (x) for a given modified julian date (radians)
static void CIRS2Galactic(double ra, double dec, double *glon, double *glat, const CEDate &date=CEDate(), const CEAngleType &angle_type=CEAngleType::RADIANS)
CIRS -> Galactic coordinate conversion.
double Temperature_C() const
Return temperature in degrees Celsius.
static void ICRS2Galactic(double ra, double dec, double *glon, double *glat, const CEAngleType &angle_type=CEAngleType::RADIANS)
ICRS -> Galactic coordinate conversion (uses the SOFA 'iauIcrs2g' function)
virtual double XCoordinate_Deg(double jd=CppEphem::julian_date_J2000()) const
Returns x coordinate at given julian date in degrees.
CECoordinates ConvertToICRS(double jd=CEDate::CurrentJD(), double longitude=0.0, double latitude=0.0, double elevation_m=0.0, double pressure_hPa=-1.0, double temperature_celsius=-1000, double relative_humidity=0.0, double dut1=0.0, double xp=0.0, double yp=0.0, double wavelength_um=0.5)
Convert these coordinates to ICRS coordinates.
virtual CECoordinates GetObservedCoords(const double &julian_date, const double &longitude, const double &latitude, const double &elevation_m=0.0, const double &pressure_hPa=-1.0, const double &temperature_celsius=-1000, const double &relative_humidity=0.0, const double &dut1=0.0, const double &xp=0.0, const double &yp=0.0, const double &wavelength_um=0.5) const
Return the local sky coordinates of this object as a CECoordinates object.
static void CIRS2ICRS(double input_ra, double input_dec, double *return_ra, double *return_dec, const CEDate &date=CEDate(), const CEAngleType &angle_type=CEAngleType::RADIANS)
CIRS -> ICRS coordinate conversion.
static int Observed2CIRS(double az, double zen, double *ra, double *dec, const CEDate &date, const CEObserver &observer, const CEAngleType &angle_type=CEAngleType::RADIANS)
Convert Observed -> CIRS coordinates.
virtual double XCoordinate_Rad(double jd=CppEphem::julian_date_J2000()) const
Return x coordinate at given Julian date in radians.
void free_members(void)
Cleanup data members that need to be freed or cleared.
CECoordinates ConvertToGalactic(double jd=CEDate::CurrentJD(), double longitude=0.0, double latitude=0.0, double elevation_m=0.0, double pressure_hPa=-1.0, double temperature_celsius=-1000, double relative_humidity=0.0, double dut1=0.0, double xp=0.0, double yp=0.0, double wavelength_um=0.5)
Convert these coordinates to GALACTIC coordinates.
double RelativeHumidity() const
Return relative humidity.
double Longitude_Rad() const
Return observer geographic longitude in radians.
virtual double YCoordinate_Deg(double jd=CppEphem::julian_date_J2000()) const
Returns y coordinate at given Julian date in degrees.
RA, Dec (referenced at the barycenter of the solarsystem)
CECoordinates ConvertTo(CECoordinateType output_coord_type, const CEObserver &observer, const CEDate &date=CEDate::CurrentJD())
Convert these coordinates to another coordinate system NOTE: If this object is not OBSERVED coordinat...
std::vector< double > HmsVect(void) const
Return vector of doubles representing the {hours, min, sec, sec-fraction}.
static int Observed2ICRS(double az, double zen, double *ra, double *dec, const CEDate &date, const CEObserver &observer, const CEAngleType &angle_type=CEAngleType::RADIANS)
Convert Observed -> ICRS coordinates.
void copy_members(const CECoordinates &other)
Copy data members from another CECoordinates object.
bool operator==(const CECoordinates &lhs, const CECoordinates &rhs)
Compare two coordinate objects.
static std::vector< double > GetDMS(const double &angle, const CEAngleType &angle_type=CEAngleType::DEGREES)
Convert a given angle into degrees, arcminutes, arcseconds.
static void UTC2TDB(const double &mjd, double *tdb1, double *tdb2)
Convert the UTC MJD to TDB JD (useful for planet computations)
static double ypolar(const double &date, const CEDateType &date_type=CEDateType::JD)
Polar motion (xy for a given date.
void SetAngle(const double &angle, const CEAngleType &angle_type=CEAngleType::RADIANS)
Set the angle from a double.
double Pressure_hPa() const
Return atmospheric pressure in units of hPa.
CECoordinates ConvertToCIRS(double jd=CEDate::CurrentJD(), double longitude=0.0, double latitude=0.0, double elevation_m=0.0, double pressure_hPa=-1.0, double temperature_celsius=-1000, double relative_humidity=0.0, double dut1=0.0, double xp=0.0, double yp=0.0, double wavelength_um=0.5)
Convert these coordinates to CIRS coordinates.
CECoordinates()
Default constructor.
double Wavelength_um() const
Return the wavelength in units of micrometers.
CECoordinateType GetCoordSystem(void) const
Return coordinate system.
static CEAngle Rad(const double &angle)
Return angle constructed from a radians angle.
CECoordinates ConvertToObserved(double jd=CEDate::CurrentJD(), double longitude=0.0, double latitude=0.0, double elevation_m=0.0, double pressure_hPa=-1.0, double temperature_celsius=-1000, double relative_humidity=0.0, double dut1=0.0, double xp=0.0, double yp=0.0, double wavelength_um=0.5)
Convert these coordinates to observed coordinates.
static double GetMJD2JDFactor()
Gets the stored SOFA Julian date to Mod Julian date factor 'DJM0'.
static void Galactic2CIRS(double glon, double glat, double *ra, double *dec, const CEDate &date=CEDate(), const CEAngleType &angle_type=CEAngleType::RADIANS)
Galactic -> CIRS coordinate conversion.
static int CIRS2Observed(double ra, double dec, double *az, double *zen, const CEDate &date, const CEObserver &observer, const CEAngleType &angle_type=CEAngleType::RADIANS, double wavelength_um=0.5, double *observed_ra=nullptr, double *observed_dec=nullptr, double *hour_angle=nullptr)
CIRS -> Observed (or observer specific) coordinate conversion This function takes in verious observat...
static int Galactic2Observed(double glon, double glat, double *az, double *zen, const CEDate &date, const CEObserver &observer, const CEAngleType &angle_type=CEAngleType::RADIANS, double wavelength_um=0.5, double *observed_glon=nullptr, double *observed_glat=nullptr, double *hour_angle=nullptr)
Galactic -> Observed (i.e.
static double HMSToAngle(const std::vector< double > &angle, const CEAngleType &return_type=CEAngleType::DEGREES)
Convert from {hours, minutes, seconds} to an angle.
static std::vector< double > GetHMS(const double &angle, const CEAngleType &angle_type=CEAngleType::DEGREES)
Convert a given angle into hours, minutes, seconds.
CECoordinateType coord_type_
bool operator!=(const CECoordinates &lhs, const CECoordinates &rhs)
Compare two coordinate objects.
void init_members(void)
Set initial values and allocate memory for data members.
virtual CEAngle XCoord(const double &jd=CppEphem::julian_date_J2000()) const
Return x coordinate at given Julian date.
RA, Dec (referenced at the center of the Earth)
CECoordinateType
The following enum specifies what coordinates this object represents.
virtual double MJD() const
Get the Modified Julian date represented by this object.
static double xpolar(const double &date, const CEDateType &date_type=CEDateType::JD)
Polar motion (x) for a given date.
static void ICRS2CIRS(double input_ra, double input_dec, double *return_ra, double *return_dec, const CEDate &date=CEDate(), const CEAngleType &angle_type=CEAngleType::RADIANS)
ICRS -> CIRS coordinate conversion.
static CEAngle Hms(const char *angle_str, const char &delim=0)
Return angle constructed from a string representing hours, minutes, seconds.
virtual void SetCoordinates(const CEAngle &xcoord, const CEAngle &ycoord, const CECoordinateType &coord_type=CECoordinateType::ICRS)
Set the coordinates of this object.
double dut1(const double &mjd)
Return dut1 based on a given modified julian date (seconds)
virtual double YCoordinate_Rad(double jd=CppEphem::julian_date_J2000()) const
Returns y coordinate at given Julian date in radians.
virtual double JD() const
Get the Julian date represented by this object.
double Latitude_Rad() const
Return geographic latitude in radians.
std::string print(void) const
Generate a message string that specifies the information about this coordinate.
Azimuth, Zenith (requires additional observer information)
static CEAngle Deg(const double &angle)
Return angle (radians) constructed from a degree angle.
static int ICRS2Observed(double ra, double dec, double *az, double *zen, const CEDate &date, const CEObserver &observer, const CEAngleType &angle_type=CEAngleType::RADIANS, double wavelength_um=0.5, double *observed_ra=nullptr, double *observed_dec=nullptr, double *hour_angle=nullptr)
ICRS -> Observed coordinate conversion.
static void Galactic2ICRS(double glon, double glat, double *ra, double *dec, const CEAngleType &angle_type=CEAngleType::RADIANS)
Galactic -> ICRS coordinate conversion.
static double dut1(const double &date, const CEDateType &date_type=CEDateType::JD)
Return dut1 based on a given modified date.
double xp(const double &mjd)
Polar motion (x) for a given modified julian date (radians)
virtual ~CECoordinates()
Destructor.