casacore
|
#include <MVDirection.h>
Public Member Functions | |
MVDirection () | |
Default constructor generates a direction to the pole (i.e. More... | |
MVDirection (const MVPosition &other) | |
Creates from an MVPosition. More... | |
MVDirection (Double in0) | |
Constructs with elevation = 0. More... | |
MVDirection (const Quantity &angle0) | |
MVDirection (Double in0, Double in1, Double in2) | |
Creates a specified vector. More... | |
MVDirection (Double angle0, Double angle1) | |
Creates the direction cosines from specified angles along equator (azimuth) and towards pole (,elevation). More... | |
MVDirection (const Quantity &angle0, const Quantity &angle1) | |
Creates the direction cosines from specified angles. More... | |
MVDirection (const Quantum< Vector< Double > > &angle) | |
If not enough angles: pole (=(0,0,1)) assumed (if none), or elevation =0 (if 1); direction cosines assumed (if 3). More... | |
MVDirection (const Vector< Double > &other) | |
Create from Vector. More... | |
MVDirection (const Vector< Quantity > &other) | |
MVDirection & | operator+= (const MVDirection &right) |
Addition and subtraction. More... | |
MVDirection | operator+ (const MVDirection &right) const |
MVDirection & | operator-= (const MVDirection &right) |
MVDirection | operator- (const MVDirection &right) const |
virtual void | adjust () |
Adjust the direction cosines to a length of 1. More... | |
virtual void | adjust (Double &res) |
Adjust the direction cosines to a length of 1 and return the length value. More... | |
virtual MeasValue * | clone () const |
Re-adjust : taken from MVPosition. More... | |
Vector< Double > | get () const |
Generate a 2-vector of angles (in rad) More... | |
Double | getLat () const |
Get the latitude angle (rad) More... | |
Quantity | getLat (const Unit &unit) const |
and with specified units More... | |
Double | positionAngle (const MVPosition &other) const |
Get the position angle between the directions. More... | |
Double | positionAngle (const MVDirection &other) const |
Quantity | positionAngle (const MVPosition &other, const Unit &unit) const |
Quantity | positionAngle (const MVDirection &other, const Unit &unit) const |
Double | separation (const MVPosition &other) const |
Get the angular separation between two directions. More... | |
Double | separation (const MVDirection &other) const |
Quantity | separation (const MVPosition &other, const Unit &unit) const |
Quantity | separation (const MVDirection &other, const Unit &unit) const |
MVDirection | crossProduct (const MVDirection &other) const |
Produce the cross product. More... | |
virtual Vector< Quantum< Double > > | getRecordValue () const |
Get the internal value as a Vector<Quantity> . More... | |
virtual Vector< Quantum< Double > > | getXRecordValue () const |
virtual Vector< Quantum< Double > > | getTMRecordValue () const |
virtual Bool | putValue (const Vector< Quantum< Double > > &in) |
Set the internal value if correct values and dimensions. More... | |
void | setAngle (Double angle0, Double angle1) |
Set the internal value, using the longitude and latitude (in rad) given. More... | |
void | shift (const Quantum< Double > &lng, const Quantum< Double > &lat, Bool trueAngle=False) |
Shift the direction in longitude (radians if Double) and/or latitude. More... | |
void | shift (Double lng, Double lat, Bool trueAngle=False) |
void | shiftLongitude (const Quantity &lng, Bool trueAngle=False) |
void | shiftLongitude (Double lng, Bool trueAngle=False) |
void | shiftLatitude (const Quantum< Double > &lat, Bool trueAngle=False) |
void | shiftLatitude (Double lat, Bool trueAngle=False) |
void | shift (const MVDirection &shft, Bool trueAngle=False) |
void | shiftAngle (const Quantum< Double > &off, const Quantum< Double > &pa) |
Shift over an angle off in the direction pa. More... | |
void | shiftAngle (Double off, Double pa) |
Public Member Functions inherited from casacore::MVPosition | |
MVPosition () | |
Default constructor generates a (0,0,0) position. More... | |
MVPosition (const MVPosition &other) | |
Copy constructor. More... | |
MVPosition (Double in0, Double in1, Double in2) | |
Creates a specified vector. More... | |
MVPosition (Double in0) | |
Creates a vector with specified length towards pole. More... | |
MVPosition (const Quantity &l) | |
MVPosition (const Quantity &l, Double angle0, Double angle1) | |
Creates the position from specified (azimuth,elevation) angles and length. More... | |
MVPosition (const Quantity &l, const Quantity &angle0, const Quantity &angle1) | |
Creates the position from specified angles and length. More... | |
MVPosition (const Quantum< Vector< Double > > &angle) | |
If not enough angles: pole assumed (if none), or elevation =0 (if 1) More... | |
MVPosition (const Quantity &l, const Quantum< Vector< Double > > &angle) | |
MVPosition (const Vector< Double > &other) | |
Create from specified length and/or angles and/or position. More... | |
MVPosition (const Vector< Quantity > &other) | |
MVPosition & | operator= (const MVPosition &other) |
Copy assignment. More... | |
virtual | ~MVPosition () |
Destructor. More... | |
Double | operator* (const MVPosition &other) const |
Multiplication defined as in-product. More... | |
Bool | operator== (const MVPosition &other) const |
Equality comparisons. More... | |
Bool | operator!= (const MVPosition &other) const |
Bool | near (const MVPosition &other, Double tol=1e-13) const |
Bool | near (const MVPosition &other, Quantity tol) const |
Bool | nearAbs (const MVPosition &other, Double tol=1e-13) const |
MVPosition | operator- () const |
Addition and subtraction. More... | |
MVPosition & | operator+= (const MVPosition &right) |
MVPosition | operator+ (const MVPosition &right) const |
MVPosition & | operator-= (const MVPosition &right) |
MVPosition | operator- (const MVPosition &right) const |
MVPosition & | operator*= (const RotMatrix &right) |
Multiplication with rotation matrix (see also global functions) More... | |
MVPosition & | operator*= (Double right) |
Multiplication with constant. More... | |
Double & | operator() (uInt which) |
Obtain an element. More... | |
const Double & | operator() (uInt which) const |
virtual void | readjust (Double res) |
Re-adjust using factor given. More... | |
virtual Double | radius () |
Get radius of position. More... | |
Vector< Double > | get () const |
Generate a 3-vector of coordinates (length(m), angles(rad)) More... | |
const Vector< Double > & | getValue () const |
Generate a 3-vector of x,y,z in m. More... | |
Quantum< Vector< Double > > | getAngle () const |
Generate angle 2-vector (in rad) More... | |
Quantum< Vector< Double > > | getAngle (const Unit &unit) const |
and with specified units More... | |
Double | getLong () const |
Get the longitudinal angle (in radians) More... | |
Quantity | getLong (const Unit &unit) const |
and with specified units More... | |
Double | getLat () const |
Get the latitude angle (rad) More... | |
Quantity | getLat (const Unit &unit) const |
and with specified units More... | |
Quantity | getLength () const |
Generate the length. More... | |
Quantity | getLength (const Unit &unit) const |
and generate it with the specified units More... | |
Double | positionAngle (const MVPosition &other) const |
Get the position angle between the directions. More... | |
Quantity | positionAngle (const MVPosition &other, const Unit &unit) const |
Double | separation (const MVPosition &other) const |
Get the angular separation between two directions. More... | |
Quantity | separation (const MVPosition &other, const Unit &unit) const |
MVPosition | crossProduct (const MVPosition &other) const |
Produce the cross product. More... | |
virtual void | print (ostream &os) const |
Print data. More... | |
virtual Vector< Double > | getVector () const |
Get the value in internal units. More... | |
virtual void | putVector (const Vector< Double > &in) |
Set the value from internal units (set 0 for empty vector) More... | |
Public Member Functions inherited from casacore::MeasValue | |
void | dummy_constr () const |
Each derived class should have at least the following constructors: More... | |
virtual | ~MeasValue () |
Destructor. More... | |
void | dummy_operator () const |
The following operators should be present at least. More... | |
Static Public Member Functions | |
static void | assure (const MeasValue &in) |
Tell me your type. More... | |
Static Public Member Functions inherited from casacore::MVPosition | |
static void | assure (const MeasValue &in) |
Tell me your type. More... | |
Additional Inherited Members | |
Static Public Attributes inherited from casacore::MVPosition | |
static const Double | loLimit |
Internal limts codes for negative height. More... | |
static const Double | hiLimit |
Protected Member Functions inherited from casacore::MVPosition | |
Double | getLat (Double ln) const |
Get the latitude assuming length is given. More... | |
Protected Attributes inherited from casacore::MVPosition | |
Vector< Double > | xyz |
Position vector (in m) More... | |
Vector of three direction cosines
Public interface
From Measure, Value and Direction
An MVDirection is a 3-vector of direction cosines. It is based on the MVposition class. The main difference is that the length of the vector will be adjusted (normalised) to a length of 1 in all operations. It can be constructed with:
MVDirection(Quantum<Vector<Double> >)
creates an MVDirection from angle vector, assuming second as zero if not present, and pole if length 0. Assumes a direction cosine if 3 elements MVDirection(Vector<Double>)
creates an MVDirection with the same restrictions as previous one MVDirection(Vector<Quantum<Double> >)
creates an MVDirection with the same rstrictions as previous one; but with unit check. A void adjust() function normalises the vector to a length of 1; a get() returns as a Double 2-vector the angles of the direction cosines; a getAngle() returns a Quantum 2-vector, (uInt) returns the indicated element, and getValue returns the direction cosine vector.
Direction cosines can be added and subtracted: the result will be adjusted to a length of 1.
The multiplication of two direction cosines produces the inner product.
shift() methods are available to shift in angular coordinates. E.g. shift(Quantity(5, "arcsec"), Quantity(-7, "arcsec")) will shift 5 arcsec in longitude, and -7 arcsec in latitude. They have a trueAngle switch to shift in latitude and perpendicular (along a great circle) to it.
See MDirection
To aid coordinate transformations
Definition at line 107 of file MVDirection.h.
casacore::MVDirection::MVDirection | ( | ) |
Default constructor generates a direction to the pole (i.e.
(0,0,1))
casacore::MVDirection::MVDirection | ( | const MVPosition & | other | ) |
Creates from an MVPosition.
casacore::MVDirection::MVDirection | ( | Double | in0 | ) |
Constructs with elevation = 0.
casacore::MVDirection::MVDirection | ( | const Quantity & | angle0 | ) |
Creates a specified vector.
Creates the direction cosines from specified angles along equator (azimuth) and towards pole (,elevation).
Creates the direction cosines from specified angles.
If not enough angles: pole (=(0,0,1)) assumed (if none), or elevation =0 (if 1); direction cosines assumed (if 3).
|
virtual |
Adjust the direction cosines to a length of 1.
Reimplemented from casacore::MVPosition.
|
virtual |
Adjust the direction cosines to a length of 1 and return the length value.
Reimplemented from casacore::MVPosition.
|
static |
Tell me your type.
|
virtual |
MVDirection casacore::MVDirection::crossProduct | ( | const MVDirection & | other | ) | const |
Produce the cross product.
Double casacore::MVDirection::getLat | ( | ) | const |
Get the latitude angle (rad)
Get the internal value as a Vector<Quantity>
.
Usable in records. The getXRecordValue() gets additional information for records. Note that the Vectors could be empty.
Reimplemented from casacore::MVPosition.
Reimplemented from casacore::MVPosition.
Reimplemented from casacore::MVPosition.
MVDirection casacore::MVDirection::operator+ | ( | const MVDirection & | right | ) | const |
MVDirection& casacore::MVDirection::operator+= | ( | const MVDirection & | right | ) |
Addition and subtraction.
MVDirection casacore::MVDirection::operator- | ( | const MVDirection & | right | ) | const |
MVDirection& casacore::MVDirection::operator-= | ( | const MVDirection & | right | ) |
Double casacore::MVDirection::positionAngle | ( | const MVDirection & | other | ) | const |
Quantity casacore::MVDirection::positionAngle | ( | const MVDirection & | other, |
const Unit & | unit | ||
) | const |
Double casacore::MVDirection::positionAngle | ( | const MVPosition & | other | ) | const |
Get the position angle between the directions.
I.e. the angle between the direction from one to the pole, and from one to the other.
Quantity casacore::MVDirection::positionAngle | ( | const MVPosition & | other, |
const Unit & | unit | ||
) | const |
Set the internal value if correct values and dimensions.
Reimplemented from casacore::MVPosition.
Double casacore::MVDirection::separation | ( | const MVDirection & | other | ) | const |
Quantity casacore::MVDirection::separation | ( | const MVDirection & | other, |
const Unit & | unit | ||
) | const |
Double casacore::MVDirection::separation | ( | const MVPosition & | other | ) | const |
Get the angular separation between two directions.
Quantity casacore::MVDirection::separation | ( | const MVPosition & | other, |
const Unit & | unit | ||
) | const |
Set the internal value, using the longitude and latitude (in rad) given.
void casacore::MVDirection::shift | ( | const MVDirection & | shft, |
Bool | trueAngle = False |
||
) |
void casacore::MVDirection::shift | ( | const Quantum< Double > & | lng, |
const Quantum< Double > & | lat, | ||
Bool | trueAngle = False |
||
) |
Shift the direction in longitude (radians if Double) and/or latitude.
If the trueAngle switch is True, the longitude shift will be in angular units perpendicular to the direction to the pole at the shifted latitude, along a great circle.
void casacore::MVDirection::shiftAngle | ( | const Quantum< Double > & | off, |
const Quantum< Double > & | pa | ||
) |
Shift over an angle off in the direction pa.
pa is measured from North, in the direction of increasing longitude.