2 #ifndef CARMA_SERVICES_ANTENNA_COORDINATES_H
3 #define CARMA_SERVICES_ANTENNA_COORDINATES_H
167 inline const Angle& latitude()
const {
205 bool geocentric =
true);
286 void add(
double up,
double east,
double north);
309 double up,
double east,
double north);
323 Angle fiducialLatitude,
385 double up=0.0,
double east=0.0,
408 double up=0.0,
double east=0.0,
410 bool geocentric=
true);
450 double X,
double Y,
double Z);
514 double X,
double Y,
double Z,
515 double X0,
double Y0,
double Z0,
516 bool doMotionCorrection);
536 double X,
double Y,
double Z);
547 double X,
double Y,
double Z);
553 double X,
double Y,
double Z);
606 #endif // End #ifndef CARMA_SERVICES_ANTENNA_COORDINATES_H
This class performs conversions between several different antenna coordinate systems.
This class handles standard mathematical vector operations.
static Vector< double > getd2Uvw(HourAngle ha, Angle declination, double X, double Y, double Z)
Second derivatives of the UVW coordinates wrt time.
static Vector< double > getdUvw(HourAngle ha, Angle declination, double X, double Y, double Z)
First derivatives of the UVW coordinates wrt time.
AntennaCoordinates()
Default constructor, uses CARMA reference position.
static Delay getGeometricDelay(HourAngle ha, Angle declination, double X, double Y, double Z, double X0, double Y0, double Z0, bool doMotionCorrection)
Get the delay for the Ha and Dec of a source, given XYZ coordinates of a baseline.
Vector< Angle > getAzEl(Angle longitude, Angle latitude, Length altitude)
Given a LLA coordinate, return its Az, El relative to the position of this object.
virtual ~AntennaCoordinates()
Destructor.
static Vector< double > absXyzAndUenToLla(double XA, double YA, double ZA, double up=0.0, double east=0.0, double north=0.0)
Return the LLA of the point given by the specified absolute XYZ and UEN offset.
void setAltitude(Length altitude)
Set just the altitude.
Representation of an angle, return values are always modulo 2PI radians.
static Vector< double > laAndUenToXyz(Angle latitude, Length altitude, double up=0.0, double east=0.0, double north=0.0, bool geocentric=true)
Return the XYZ coordinates of an UEN point relative to a fiducial LA.
static Vector< double > haDecToXyz(HourAngle ha, Angle declination, Distance distance, bool geocentric=true)
Return the XYZ coordinate of a vector at requested (Ha, Dec) direction and of length r...
void setLla(Angle longitude, Angle latitude, Length altitude)
Set all coordinate parameters.
Vector< double > getAbsXyz(double up=0.0, double east=0.0, double north=0.0)
Return absolute XYZ coordinates of the given UEN point, relative to the LLA point of this object...
static Vector< double > topoXYZToUen(double X, double Y, double Z, Angle latitude)
Given a topocentric XYZ, return the UEN coordinates at a given latitude.
Trivial class for handling delays.
The Distance class can represent an distance in any units.
Vector< double > getUvw(HourAngle ha, Angle declination)
Return the UVW coordinates for the current LLA location, of a source at the requested declination and...
static Vector< double > haDecAndXyzToUvw(HourAngle ha, Angle declination, double X, double Y, double Z)
Return the UVW coordinates, relative to a given XYZ coordinate, for the requested source position...
const Length & altitude() const
Get the altitude of these coordinates.
This class handles standard mathematical matrix operations.
AntennaCoordinates & operator=(const AntennaCoordinates &rhs)
Assignment operator to go along with the copy constructor.
const Angle & longitude() const
Get the longitude of these coordinates.
static Vector< double > azElToUen(Angle az, Angle el, double r=1.0)
Given Azimuth and Elevation, return the UEN coordinates.
Location specifies a location (observatory if you wish) on planet earth, as longitude, latitude, and altitude above sea-level.
The Angle class can represent any angle in any units.
static Vector< double > llaAndLlaToUen(Angle fiducialLongitude, Angle fiducialLatitude, Length fiducialAltitude, Angle longitude, Angle latitude, Length altitude)
Return the UEN of an LLA point relative to a fiducial LLA point.
void setLongitude(Angle longitude)
Set just the longitude.
void add(double up, double east, double north)
Increment the LLA of this object by the specified UEN offset.
static Vector< double > llaAndUenToAbsXyz(Angle longitude, Angle latitude, Length altitude, double up, double east, double north)
Return absolute XYZ of the point offset by UEN from a given LLA point.
Vector< double > getXyz(double up=0.0, double east=0.0, double north=0.0, bool geocentric=true)
Return topocentric XYZ coordinates of the given UEN point, relative to the LLA point of this object...
static Vector< double > absXyzToLla(double XA, double YA, double ZA)
Given absolute XYZ, convert to LLA.
static Vector< Angle > uenToAzEl(double U, double E, double N)
Given UEN, return the Azimuth and Elevation.
friend std::ostream & operator<<(std::ostream &os, const AntennaCoordinates &coords)
Allows cout << coords.
void setLatitude(Angle latitude)
Set just the latitude.
Vector< double > getLla(double up=0.0, double east=0.0, double north=0.0)
Return LLA of the passed UEN offset point, relative to the LLA coordinates stored in this object...
The Length class can represent a length in any units.
Vector< double > getUen(Angle longitude, Angle latitude, Length altitude)
Return UEN coordinates of the specified LLA point, relative to the coordinates stored in this object...
static Vector< Angle > laAndHaDecToAzEl(Angle latitude, Length altitude, HourAngle ha, Angle declination, Distance distance, bool geocentric=true)
Return the Az El of a source at a given HA and Dec.
The HourAngle class extends carma::services::Angle to specifically support hour angles.
static Vector< double > llaAndUenToLla(Angle longitude, Angle latitude, Length altitude, double up, double east, double north)
Return the LLA of the point given by an UEN offset relative to a fiducial LLA.