1 #ifndef GCP_UTIL_COORDINATES_H
2 #define GCP_UTIL_COORDINATES_H
11 #include "gcp/util/common/Angle.h"
12 #include "gcp/util/common/DecAngle.h"
13 #include "gcp/util/common/Declination.h"
14 #include "gcp/util/common/HourAngle.h"
15 #include "gcp/util/common/Delay.h"
16 #include "gcp/util/common/Vector.h"
148 inline Angle& latitude() {
152 inline double& altitude() {
160 Vector<double>
getAbsXyz(
double east=0.0,
double north=0.0,
double up=0.0);
166 Vector<double>
getXyz(
double east=0.0,
double north=0.0,
double up=0.0,
167 bool geocentric=
true);
173 Vector<double>
getUen(Angle
longitude, Angle latitude,
double altitude);
184 Vector<double>
getUvw(HourAngle ha, DecAngle declination);
190 Vector<double>
getLla(
double east=0.0,
double north=0.0,
double up=0.0);
202 void add(
double up,
double east,
double north);
212 static Vector<double>
214 Angle& az, Angle& el);
222 double up,
double east,
double north);
228 Angle fiducialLatitude,
229 double fiducialAltitude,
239 double up,
double east,
double north,
bool doTrans=
true);
245 static Vector<double>
topoXYZToUen(
double X,
double Y,
double Z,
251 static Vector<double>
absXyzToLla(
double XA,
double YA,
double ZA);
258 double up=0.0,
double east=0.0,
274 static Vector<double>
laAndUenToXyz(Angle latitude,
double altitude,
275 double up=0.0,
double east=0.0,
277 bool geocentric=
true);
284 static Vector<double>
azElToUen(Angle az, Angle el,
double r=1.0);
289 static Vector<Angle>
uenToAzEl(
double U,
double E,
double N);
290 static Vector<Angle>
uenToAzEl(Vector<double>& uen);
302 double X,
double Y,
double Z);
314 static Vector<double>
haDecToXyz(HourAngle ha, DecAngle declination,
315 bool geocentric=
true,
316 SrcDist type=INF,
double r=0.0);
327 static Vector<double>
dHaDdecToXyz(HourAngle dHa, Angle dDec);
334 HourAngle& dHa, Angle& dDec);
341 HourAngle& dHa, Angle& dDec);
349 static Vector<double>
thetaRhoToXyz(Declination& dec, Angle& theta, Angle& rho);
351 static Matrix<double> getThetaRhoToXyzDecRot(Declination& dec);
352 static Matrix<double> getThetaRhoToXyzThetaRot(Angle& theta);
353 static Matrix<double> getThetaRhoToXyzRhoRot(Angle& rho);
362 Angle& theta, Angle& rho,
363 HourAngle& ra, Declination& dec);
391 HourAngle ha, DecAngle declination,
392 bool geocentric=
true,
393 SrcDist type=INF,
double dist=1.0);
405 double X,
double Y,
double Z,
406 double X0,
double Y0,
double Z0,
407 bool doMotionCorrection);
417 double X,
double Y,
double Z);
427 static Vector<double>
getdUvw(HourAngle ha, DecAngle declination,
428 double X,
double Y,
double Z);
433 static Vector<double>
getd2Uvw(HourAngle ha, DecAngle declination,
434 double X,
double Y,
double Z);
445 static const double earthEqRadiusMeters_;
455 static const double lightSpeed_;
515 #endif // End #ifndef GCP_UTIL_COORDINATES_H
static Vector< double > llaAndUenToAbsXyz(Angle longitude, Angle latitude, double altitude, double up, double east, double north, bool doTrans=true)
Definition: Coordinates.cc:485
Vector< double > getUen(Angle longitude, Angle latitude, double altitude)
Definition: Coordinates.cc:162
void setLongitude(Angle longitude)
Definition: Coordinates.cc:94
static Vector< double > haDecAndXyzToUvw(HourAngle ha, DecAngle declination, double X, double Y, double Z)
Definition: Coordinates.cc:640
Coordinates()
Definition: Coordinates.cc:52
friend std::ostream & operator<<(std::ostream &os, Coordinates &coords)
Vector< double > getUvw(HourAngle ha, DecAngle declination)
Definition: Coordinates.cc:178
static Vector< double > absXyzAndUenToLla(double XA, double YA, double ZA, double up=0.0, double east=0.0, double north=0.0)
Definition: Coordinates.cc:294
static Vector< Angle > uenToAzEl(double U, double E, double N)
Definition: Coordinates.cc:374
Definition: Coordinates.h:86
Definition: DecAngle.h:16
static void xyzToDhaDdec(double X, double Y, double Z, HourAngle &dHa, Angle &dDec)
Definition: Coordinates.cc:694
Angle & longitude()
Definition: Coordinates.h:144
Vector< Angle > getAzEl(Angle longitude, Angle latitude, double altitude)
Definition: Coordinates.cc:339
Vector< double > getLla(double east=0.0, double north=0.0, double up=0.0)
Definition: Coordinates.cc:320
static Vector< double > getd2Uvw(HourAngle ha, DecAngle declination, double X, double Y, double Z)
Definition: Coordinates.cc:972
void setLatitude(Angle latitude)
Definition: Coordinates.cc:99
static Vector< Angle > laAndHaDecToAzEl(Angle latitude, double altitude, HourAngle ha, DecAngle declination, bool geocentric=true, SrcDist type=INF, double dist=1.0)
Definition: Coordinates.cc:871
SrcDist
Definition: Coordinates.h:92
Definition: HourAngle.h:17
static Vector< double > llaAndUenToLla(Angle longitude, Angle latitude, double altitude, double up, double east, double north)
Definition: Coordinates.cc:230
static Vector< double > topoXYZToUen(double X, double Y, double Z, Angle latitude)
Definition: Coordinates.cc:529
static Vector< double > dHaDdecToXyz(HourAngle dHa, Angle dDec)
Definition: Coordinates.cc:672
static Vector< double > thetaRhoToXyz(Declination &dec, Angle &theta, Angle &rho)
Definition: Coordinates.cc:749
static Vector< double > getdUvw(HourAngle ha, DecAngle declination, double X, double Y, double Z)
Definition: Coordinates.cc:938
static Vector< double > llaAndLlaToUen(Angle fiducialLongitude, Angle fiducialLatitude, double fiducialAltitude, Angle longitude, Angle latitude, double altitude)
Definition: Coordinates.cc:597
void setAltitude(double altitude)
Definition: Coordinates.cc:104
void setLla(Angle longitude, Angle latitude, double altitude)
Definition: Coordinates.cc:87
static const double earthFlattening_
Definition: Coordinates.h:450
static void raDecAndThetaRhoToRaDec(HourAngle &ra0, Declination &dec0, Angle &theta, Angle &rho, HourAngle &ra, Declination &dec)
Definition: Coordinates.cc:721
static Vector< double > lngLatAndAzElToLngLat(Angle &lng, Angle &lat, Angle &az, Angle &el)
Definition: Coordinates.cc:258
static const double earthRotVelRadPerSec_
Definition: Coordinates.h:466
Vector< double > getXyz(double east=0.0, double north=0.0, double up=0.0, bool geocentric=true)
Definition: Coordinates.cc:137
static Vector< double > absXyzToLla(double XA, double YA, double ZA)
Definition: Coordinates.cc:192
static Delay getGeometricDelay(HourAngle ha, DecAngle declination, double X, double Y, double Z, double X0, double Y0, double Z0, bool doMotionCorrection)
Definition: Coordinates.cc:1046
Vector< double > getAbsXyz(double east=0.0, double north=0.0, double up=0.0)
Definition: Coordinates.cc:120
static Vector< double > azElToUen(Angle az, Angle el, double r=1.0)
Definition: Coordinates.cc:356
static Vector< double > laAndUenToXyz(Angle latitude, double altitude, double up=0.0, double east=0.0, double north=0.0, bool geocentric=true)
Definition: Coordinates.cc:561
void add(double up, double east, double north)
Definition: Coordinates.cc:410
static const double auToMeters_
Definition: Coordinates.h:460
virtual ~Coordinates()
Definition: Coordinates.cc:82
static Vector< double > haDecToXyz(HourAngle ha, DecAngle declination, bool geocentric=true, SrcDist type=INF, double r=0.0)
Definition: Coordinates.cc:836