4 #include "boost/make_shared.hpp"
11 throw std::runtime_error(
"Cannot set current date; coordSys is not current");
12 }
else if (date <= 0) {
13 throw std::runtime_error(
"date must be > 0");
30 std::vector<Coord> coordArr;
31 double const tai = fromPVTCoord.
getTAI();
32 for (
int i = 0; i < 2; ++i) {
34 coordArr.push_back(
convertFrom(fromCoordSys, fromPVTCoord.
getCoord(evalTAI), site, evalTAI));
40 double const OffsetLength = 1e-3;
43 Coord offFromCoord = fromCoord.
offset(dumDir, fromDir, OffsetLength);
51 std::vector<Coord> coordArr;
52 double toDirPair[2], scaleChangePair[2];
53 double const tai = fromPVTCoord.
getTAI();
54 for (
int i = 0; i < 2; ++i) {
56 coordArr.push_back(
convertFrom(toDirPair[i], scaleChangePair[i],
57 fromCoordSys, fromPVTCoord.
getCoord(evalTAI), fromDir.
getPos(evalTAI), site, evalTAI));
59 scaleChange = scaleChangePair[0];
65 std::vector<Coord> coordArr;
66 double const tai = pvtCoord.
getTAI();
67 for (
int i = 0; i < 2; ++i) {
76 return boost::make_shared<coordConv::ICRSCoordSys>(date);
77 }
else if (name ==
"fk5") {
78 return boost::make_shared<coordConv::FK5CoordSys>(date);
79 }
else if (name ==
"fk4") {
80 return boost::make_shared<coordConv::FK4CoordSys>(date);
81 }
else if (name ==
"gal") {
82 return boost::make_shared<coordConv::GalCoordSys>(date);
83 }
else if (name ==
"appgeo") {
84 return boost::make_shared<coordConv::AppGeoCoordSys>(date);
85 }
else if (name ==
"apptopo") {
86 return boost::make_shared<coordConv::AppTopoCoordSys>(date);
87 }
else if (name ==
"obs") {
88 return boost::make_shared<coordConv::ObsCoordSys>(date);
89 }
else if (name ==
"none") {
90 return boost::make_shared<coordConv::NoneCoordSys>(date);
92 std::ostringstream os;
93 os <<
"Unknown coordinate system name: " << name;
94 throw std::invalid_argument(os.str());
virtual Coord removePM(Coord const &coord, double tai) const =0
const double DeltaTForPos
by computing position at two nearby times (sec)
virtual std::string __repr__() const =0
double angularSeparation(Coord const &coord) const
void setCurrDate(double date) const
virtual Coord fromFK5J2000(Coord const &coord, Site const &site) const =0
virtual void _setDate(double date) const
boost::shared_ptr< CoordSys > Ptr
void setFromPair(double const posPair[2], double t, double deltaT, bool isAngle)
virtual Coord convertFrom(CoordSys const &fromCoordSys, Coord const &fromCoord, Site const &site, double tai=0) const
virtual double dateFromTAI(double tai) const =0
CoordSys::Ptr makeCoordSys(std::string const &name, double date)
Coord offset(double &toOrient, double fromOrient, double dist) const
double getPos(double t) const
Return the position at the specified time; return NaN if unknown.
virtual Coord toFK5J2000(Coord const &coord, Site const &site) const =0
double orientationTo(Coord const &coord) const
std::ostream & operator<<(std::ostream &out, Coord const &coord)