MVuvw.h

Classes

MVuvw -- A 3D vector on Earth (full description)

class MVuvw : public MVPosition

Interface

Public Members
MVuvw()
MVuvw(const MVPosition &other)
MVuvw(Double in0, Double in1, Double in2)
MVuvw(Double in0)
MVuvw(const Quantity &l)
MVuvw(const Quantity &l, Double angle0, Double angle1)
MVuvw(const Quantity &l, const Quantity &angle0, const Quantity &angle1)
MVuvw(const Quantum<Vector<Double> > &angle)
MVuvw(const Quantity &l, const Quantum<Quantum<Double> > &angle)
MVuvw(const Vector<Double> &other)
MVuvw(const Vector<Quantity> &other)
MVuvw(const MVBaseline &pos, const MVDirection &dr, Bool ew=False)
MVuvw &operator=(const MVuvw &other)
~MVuvw()
Double operator*(const MVuvw &other) const
Bool operator== (const MVuvw &other) const
Bool operator!= (const MVuvw &other) const
Bool near(const MVuvw &other, Double tol=1e-13) const
Bool near(const MVuvw &other, Quantity tol) const
Bool nearAbs(const MVuvw &other, Double tol=1e-13) const
MVuvw operator-() const
MVuvw &operator+=(const MVuvw &right)
MVuvw operator+(const MVuvw &right) const
MVuvw &operator-=(const MVuvw &right)
MVuvw operator-(const MVuvw &right) const
virtual uInt type() const
static void assure(const MeasValue &in)
virtual void adjust()
virtual void adjust(Double &res)
virtual void readjust(Double res)
virtual Double radius()
Vector<Double> get() const
const Vector<Double> &getValue() const
Quantum<Vector<Double> > getAngle() const
Quantum<Vector<Double> > getAngle(const Unit &unit) const
Quantity getLength() const
Quantity getLength(const Unit &unit) const
Double uvwAngle(const MVuvw &other) const
Quantity uvwAngle(const MVuvw &other, const Unit &unit) const
Double separation(const MVuvw &other) const
Quantity separation(const MVuvw &other, const Unit &unit) const
MVuvw crossProduct(const MVuvw &other) const
virtual void print(ostream &os) const
virtual MeasValue *clone() const
virtual Vector<Double> getVector() const
virtual void putVector(const Vector<Double> &in)
virtual Vector<Quantum<Double> > getRecordValue() const
virtual Vector<Quantum<Double> > getXRecordValue() const
virtual Vector<Quantum<Double> > getTMRecordValue() const
virtual Bool putValue(const Vector<Quantum<Double> > &in)

Description

Review Status

Reviewed By:
UNKNOWN
Date Reviewed:
before2004/08/25
Programs:
Tests:

Prerequisite

Etymology

From Measure, Value and uvw

Synopsis

A MVuvw is a 3-vector of uvws in a rectangular frame with internal units of m.
It can be constructed with: 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 uvw vector; a getAngle() returns a Quantum 2-vector, (uInt) returns the indicated element, and getValue returns the vector.
uvws can be added and subtracted.
The multiplication of two uvws produces the in-product.

Example

See Muvw class.

Motivation

To do coordinate transformations

To Do

Member Description

MVuvw()

Default constructor generates a (0,0,0) uvw

MVuvw(const MVPosition &other)

Copy constructor

MVuvw(Double in0, Double in1, Double in2)

Creates a specified vector

MVuvw(Double in0)
MVuvw(const Quantity &l)

Creates a vector with specified length towards pole

MVuvw(const Quantity &l, Double angle0, Double angle1)

Creates the uvw from specified (azimuth,elevation) angles and length

MVuvw(const Quantum<Vector<Double> > &angle)

Creates the uvw from specified angles and length. or uvws

Thrown Exceptions

If not enough angles: pole assumed (if none), or elevation =0 (if 1)

MVuvw(const Quantity &l, const Quantity &angle0, const Quantity &angle1)
MVuvw(const Quantity &l, const Quantum<Quantum<Double> > &angle)

Creates the uvw from specified angles and length. or uvws

Thrown Exceptions

MVuvw(const Vector<Double> &other)
MVuvw(const Vector<Quantity> &other)

Create from specified length and/or angles and/or uvw

MVuvw(const MVBaseline &pos, const MVDirection &dr, Bool ew=False)

uvw from a baseline and a reference direction (in same frame)

MVuvw &operator=(const MVuvw &other)

Copy assignment

~MVuvw()

Destructor

Double operator*(const MVuvw &other) const

Multiplication defined as in-product

Bool operator== (const MVuvw &other) const
Bool operator!= (const MVuvw &other) const
Bool near(const MVuvw &other, Double tol=1e-13) const
Bool near(const MVuvw &other, Quantity tol) const
Bool nearAbs(const MVuvw &other, Double tol=1e-13) const

Equality comparisons

MVuvw operator-() const
MVuvw &operator+=(const MVuvw &right)
MVuvw operator+(const MVuvw &right) const
MVuvw &operator-=(const MVuvw &right)
MVuvw operator-(const MVuvw &right) const

Addition and subtraction

virtual uInt type() const
static void assure(const MeasValue &in)

Tell me your type

virtual void adjust()
virtual void adjust(Double &res)
virtual void readjust(Double res)

Normalise direction aspects by adjusting the length to 1

virtual Double radius()

Get radius(i.e. length of vector, in m) of uvw

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

Quantity getLength() const

Generate the length

Quantity getLength(const Unit &unit) const

and generate it with the specified units

Double uvwAngle(const MVuvw &other) const
Quantity uvwAngle(const MVuvw &other, const Unit &unit) const

Get the uvw angle between the directions. I.e. the angle between the direction from one to the pole, and from one to the other.

Double separation(const MVuvw &other) const
Quantity separation(const MVuvw &other, const Unit &unit) const

Get the angular separation between two directions.

MVuvw crossProduct(const MVuvw &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
virtual Vector<Quantum<Double> > getXRecordValue() const
virtual Vector<Quantum<Double> > getTMRecordValue() const

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.

virtual Bool putValue(const Vector<Quantum<Double> > &in)

Set the internal value if correct values and dimensions