A 3D vector in space. More...
#include <MVPosition.h>
Public Member Functions | |
MVPosition () | |
Default constructor generates a (0,0,0) position. | |
MVPosition (const MVPosition &other) | |
Copy constructor. | |
MVPosition (Double in0, Double in1, Double in2) | |
Creates a specified vector. | |
MVPosition (Double in0) | |
Creates a vector with specified length towards pole. | |
MVPosition (const Quantity &l) | |
MVPosition (const Quantity &l, Double angle0, Double angle1) | |
Creates the position from specified (azimuth,elevation) angles and length. | |
MVPosition (const Quantity &l, const Quantity &angle0, const Quantity &angle1) | |
Creates the position from specified angles and length. | |
MVPosition (const Quantum< Vector< Double > > &angle) | |
If not enough angles: pole assumed (if none), or elevation =0 (if 1). | |
MVPosition (const Quantity &l, const Quantum< Vector< Double > > &angle) | |
MVPosition (const Vector< Double > &other) | |
Create from specified length and/or angles and/or position. | |
MVPosition (const Vector< Quantity > &other) | |
MVPosition & | operator= (const MVPosition &other) |
Copy assignment. | |
virtual | ~MVPosition () |
Destructor. | |
Double | operator* (const MVPosition &other) const |
Multiplication defined as in-product. | |
Bool | operator== (const MVPosition &other) const |
Equality comparisons. | |
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. | |
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). | |
MVPosition & | operator*= (Double right) |
Multiplication with constant. | |
Double & | operator() (uInt which) |
Obtain an element. | |
const Double & | operator() (uInt which) const |
virtual uInt | type () const |
Tell me your type. | |
virtual void | adjust () |
Normalise direction aspects by adjusting the length to 1. | |
virtual void | adjust (Double &res) |
Adjustment with returned factor. | |
virtual void | readjust (Double res) |
Re-adjust using factor given. | |
virtual Double | radius () |
Get radius of position. | |
Vector< Double > | get () const |
Generate a 3-vector of coordinates (length(m), angles(rad)). | |
const Vector< Double > & | getValue () const |
Generate a 3-vector of x,y,z in m. | |
Quantum< Vector< Double > > | getAngle () const |
Generate angle 2-vector (in rad). | |
Quantum< Vector< Double > > | getAngle (const Unit &unit) const |
and with specified units | |
Double | getLong () const |
Get the longitudinal angle (in radians). | |
Quantity | getLong (const Unit &unit) const |
and with specified units | |
Double | getLat () const |
Get the latitude angle (rad). | |
Quantity | getLat (const Unit &unit) const |
and with specified units | |
Quantity | getLength () const |
Generate the length. | |
Quantity | getLength (const Unit &unit) const |
and generate it with the specified units | |
Double | positionAngle (const MVPosition &other) const |
Get the position angle between the directions. | |
Quantity | positionAngle (const MVPosition &other, const Unit &unit) const |
Double | separation (const MVPosition &other) const |
Get the angular separation between two directions. | |
Quantity | separation (const MVPosition &other, const Unit &unit) const |
MVPosition | crossProduct (const MVPosition &other) const |
Produce the cross product. | |
virtual void | print (ostream &os) const |
Print data. | |
virtual MeasValue * | clone () const |
Clone. | |
virtual Vector< Double > | getVector () const |
Get the value in internal units. | |
virtual void | putVector (const Vector< Double > &in) |
Set the value from internal units (set 0 for empty vector). | |
virtual Vector< Quantum< Double > > | getRecordValue () const |
Get the internal value as a Vector<Quantity> . | |
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. | |
Static Public Member Functions | |
static void | assure (const MeasValue &in) |
Static Public Attributes | |
static const Double | loLimit |
Internal limts codes for negative height. | |
static const Double | hiLimit |
Protected Member Functions | |
Double | getLat (Double ln) const |
Get the latitude assuming length is given. | |
Protected Attributes | |
Vector< Double > & | xyz |
Position vector (in m). |
A 3D vector in space.
Public interface
From Measure, Value and Position
A MVPosition is a 3-vector of positions in a rectangular frame with internal units of m.
It can be constructed with:
MVPosition(Quantity, Quantum<Vector<Double> >)
creates a MVPosition from angle vector, using first two angles, and assuming second as zero if not present, and pole if length 0. MVPosition(Quantum<Vector<Double> >
creates from angles or positions, depending on the units in the quantum vector. In the angle case, the data derived can be scaled with the readjust() function. If the unit of the quantum vector is length, position is assumed. MVPosition(Vector<Double>
creates from angles (less than or equal to two elements) or x,y,z (3 elements). MVPosition(Vector<Quantity>
creates from length+angles, angles, or x,y,z, depending on units. A void adjust(Double) function normalises the vector to a length of 1; a get() returns as a Double 3-vector the length and angles of the position vector; a getAngle() returns a Quantum 2-vector, (uInt) returns the indicated element, and getValue returns the vector.
Positions can be added and subtracted.
The multiplication of two positions produces the in-product.
See Mposition class.
To do coordinate transformations
Definition at line 113 of file MVPosition.h.
casacore::MVPosition::MVPosition | ( | ) |
Default constructor generates a (0,0,0) position.
casacore::MVPosition::MVPosition | ( | const MVPosition & | other | ) |
Copy constructor.
casacore::MVPosition::MVPosition | ( | Double | in0 | ) | [explicit] |
Creates a vector with specified length towards pole.
casacore::MVPosition::MVPosition | ( | const Quantity & | l | ) |
Creates the position from specified (azimuth,elevation) angles and length.
casacore::MVPosition::MVPosition | ( | const Quantity & | l, | |
const Quantity & | angle0, | |||
const Quantity & | angle1 | |||
) |
Creates the position from specified angles and length.
or positions
If not enough angles: pole assumed (if none), or elevation =0 (if 1).
Create from specified length and/or angles and/or position.
virtual casacore::MVPosition::~MVPosition | ( | ) | [virtual] |
Destructor.
virtual void casacore::MVPosition::adjust | ( | Double & | res | ) | [virtual] |
Adjustment with returned factor.
Reimplemented from casacore::MeasValue.
Reimplemented in casacore::MVBaseline, casacore::MVDirection, casacore::MVEarthMagnetic, and casacore::MVuvw.
virtual void casacore::MVPosition::adjust | ( | ) | [virtual] |
Normalise direction aspects by adjusting the length to 1.
For position no adjustment; for direction adjustment
Reimplemented from casacore::MeasValue.
Reimplemented in casacore::MVBaseline, casacore::MVDirection, casacore::MVEarthMagnetic, and casacore::MVuvw.
static void casacore::MVPosition::assure | ( | const MeasValue & | in | ) | [static] |
Reimplemented in casacore::MVBaseline, casacore::MVDirection, casacore::MVEarthMagnetic, and casacore::MVuvw.
virtual MeasValue* casacore::MVPosition::clone | ( | ) | const [virtual] |
Clone.
Implements casacore::MeasValue.
Reimplemented in casacore::MVBaseline, casacore::MVDirection, casacore::MVEarthMagnetic, and casacore::MVuvw.
MVPosition casacore::MVPosition::crossProduct | ( | const MVPosition & | other | ) | const |
Produce the cross product.
Reimplemented in casacore::MVBaseline, casacore::MVDirection, casacore::MVEarthMagnetic, and casacore::MVuvw.
Generate a 3-vector of coordinates (length(m), angles(rad)).
Reimplemented in casacore::MVBaseline, casacore::MVDirection, casacore::MVEarthMagnetic, and casacore::MVuvw.
and with specified units
Reimplemented in casacore::MVBaseline, casacore::MVEarthMagnetic, and casacore::MVuvw.
Generate angle 2-vector (in rad).
Reimplemented in casacore::MVBaseline, casacore::MVEarthMagnetic, and casacore::MVuvw.
Get the latitude assuming length is given.
and with specified units
Reimplemented in casacore::MVDirection.
Double casacore::MVPosition::getLat | ( | ) | const |
Get the latitude angle (rad).
Reimplemented in casacore::MVDirection.
and generate it with the specified units
Reimplemented in casacore::MVBaseline, casacore::MVEarthMagnetic, and casacore::MVuvw.
Quantity casacore::MVPosition::getLength | ( | ) | const |
Generate the length.
Reimplemented in casacore::MVBaseline, casacore::MVEarthMagnetic, and casacore::MVuvw.
Double casacore::MVPosition::getLong | ( | ) | const |
Get the longitudinal angle (in radians).
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.
Implements casacore::MeasValue.
Reimplemented in casacore::MVBaseline, casacore::MVDirection, casacore::MVEarthMagnetic, and casacore::MVuvw.
Reimplemented from casacore::MeasValue.
Reimplemented in casacore::MVBaseline, casacore::MVDirection, and casacore::MVuvw.
Definition at line 270 of file MVPosition.h.
References getXRecordValue().
Generate a 3-vector of x,y,z in m.
Reimplemented in casacore::MVBaseline, casacore::MVEarthMagnetic, and casacore::MVuvw.
Get the value in internal units.
Implements casacore::MeasValue.
Reimplemented in casacore::MVBaseline, casacore::MVEarthMagnetic, and casacore::MVuvw.
Reimplemented from casacore::MeasValue.
Reimplemented in casacore::MVBaseline, casacore::MVDirection, and casacore::MVuvw.
Referenced by getTMRecordValue().
Bool casacore::MVPosition::near | ( | const MVPosition & | other, | |
Quantity | tol | |||
) | const |
Reimplemented in casacore::MVBaseline, casacore::MVEarthMagnetic, and casacore::MVuvw.
Bool casacore::MVPosition::near | ( | const MVPosition & | other, | |
Double | tol = 1e-13 | |||
) | const |
Reimplemented in casacore::MVBaseline, casacore::MVEarthMagnetic, and casacore::MVuvw.
Bool casacore::MVPosition::nearAbs | ( | const MVPosition & | other, | |
Double | tol = 1e-13 | |||
) | const |
Reimplemented in casacore::MVBaseline, casacore::MVEarthMagnetic, and casacore::MVuvw.
Bool casacore::MVPosition::operator!= | ( | const MVPosition & | other | ) | const |
Reimplemented in casacore::MVBaseline, casacore::MVEarthMagnetic, and casacore::MVuvw.
Double casacore::MVPosition::operator* | ( | const MVPosition & | other | ) | const |
Multiplication defined as in-product.
Reimplemented in casacore::MVBaseline, casacore::MVEarthMagnetic, and casacore::MVuvw.
MVPosition& casacore::MVPosition::operator*= | ( | Double | right | ) |
Multiplication with constant.
MVPosition& casacore::MVPosition::operator*= | ( | const RotMatrix & | right | ) |
Multiplication with rotation matrix (see also global functions).
MVPosition casacore::MVPosition::operator+ | ( | const MVPosition & | right | ) | const |
Reimplemented in casacore::MVBaseline, casacore::MVDirection, casacore::MVEarthMagnetic, and casacore::MVuvw.
MVPosition& casacore::MVPosition::operator+= | ( | const MVPosition & | right | ) |
Reimplemented in casacore::MVBaseline, casacore::MVDirection, casacore::MVEarthMagnetic, and casacore::MVuvw.
MVPosition casacore::MVPosition::operator- | ( | const MVPosition & | right | ) | const |
Reimplemented in casacore::MVBaseline, casacore::MVDirection, casacore::MVEarthMagnetic, and casacore::MVuvw.
MVPosition casacore::MVPosition::operator- | ( | ) | const |
Addition and subtraction.
Reimplemented in casacore::MVBaseline, casacore::MVEarthMagnetic, and casacore::MVuvw.
MVPosition& casacore::MVPosition::operator-= | ( | const MVPosition & | right | ) |
Reimplemented in casacore::MVBaseline, casacore::MVDirection, casacore::MVEarthMagnetic, and casacore::MVuvw.
MVPosition& casacore::MVPosition::operator= | ( | const MVPosition & | other | ) |
Copy assignment.
Reimplemented in casacore::MVBaseline, casacore::MVDirection, casacore::MVEarthMagnetic, and casacore::MVuvw.
Bool casacore::MVPosition::operator== | ( | const MVPosition & | other | ) | const |
Equality comparisons.
Reimplemented in casacore::MVBaseline, casacore::MVEarthMagnetic, and casacore::MVuvw.
Quantity casacore::MVPosition::positionAngle | ( | const MVPosition & | other, | |
const Unit & | unit | |||
) | const |
Reimplemented in casacore::MVDirection.
Double casacore::MVPosition::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.
Reimplemented in casacore::MVDirection.
virtual void casacore::MVPosition::print | ( | ostream & | os | ) | const [virtual] |
Print data.
Implements casacore::MeasValue.
Reimplemented in casacore::MVBaseline, casacore::MVEarthMagnetic, and casacore::MVuvw.
Set the internal value if correct values and dimensions.
Implements casacore::MeasValue.
Reimplemented in casacore::MVBaseline, casacore::MVDirection, casacore::MVEarthMagnetic, and casacore::MVuvw.
Set the value from internal units (set 0 for empty vector).
Implements casacore::MeasValue.
Reimplemented in casacore::MVBaseline, casacore::MVEarthMagnetic, and casacore::MVuvw.
virtual Double casacore::MVPosition::radius | ( | ) | [virtual] |
Get radius of position.
Reimplemented in casacore::MVBaseline, casacore::MVEarthMagnetic, and casacore::MVuvw.
virtual void casacore::MVPosition::readjust | ( | Double | res | ) | [virtual] |
Re-adjust using factor given.
Reimplemented from casacore::MeasValue.
Reimplemented in casacore::MVBaseline, casacore::MVEarthMagnetic, and casacore::MVuvw.
Quantity casacore::MVPosition::separation | ( | const MVPosition & | other, | |
const Unit & | unit | |||
) | const |
Reimplemented in casacore::MVBaseline, casacore::MVDirection, casacore::MVEarthMagnetic, and casacore::MVuvw.
Double casacore::MVPosition::separation | ( | const MVPosition & | other | ) | const |
Get the angular separation between two directions.
Reimplemented in casacore::MVBaseline, casacore::MVDirection, casacore::MVEarthMagnetic, and casacore::MVuvw.
virtual uInt casacore::MVPosition::type | ( | ) | const [virtual] |
Tell me your type.
Implements casacore::MeasValue.
Reimplemented in casacore::MVBaseline, casacore::MVDirection, casacore::MVEarthMagnetic, and casacore::MVuvw.
const Double casacore::MVPosition::hiLimit [static] |
Definition at line 120 of file MVPosition.h.
const Double casacore::MVPosition::loLimit [static] |
Internal limts codes for negative height.
Definition at line 119 of file MVPosition.h.
Vector<Double>& casacore::MVPosition::xyz [protected] |
Position vector (in m).
Definition at line 282 of file MVPosition.h.