casacore::MVDirection Class Reference

Vector of three direction cosines. More...

#include <MVDirection.h>

Inheritance diagram for casacore::MVDirection:
casacore::MVPosition casacore::MeasValue

List of all members.

Public Member Functions

 MVDirection ()
 Default constructor generates a direction to the pole (i.e.
 MVDirection (const MVPosition &other)
 Copy constructor.
 MVDirection (Double in0)
 Constructs with elevation = 0.
 MVDirection (const Quantity &angle0)
 MVDirection (Double in0, Double in1, Double in2)
 Creates a specified vector.
 MVDirection (Double angle0, Double angle1)
 Creates the direction cosines from specified angles along equator (azimuth) and towards pole (,elevation).
 MVDirection (const Quantity &angle0, const Quantity &angle1)
 Creates the direction cosines from specified angles.
 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).
 MVDirection (const Vector< Double > &other)
 Create from Vector.
 MVDirection (const Vector< Quantity > &other)
MVDirectionoperator= (const MVDirection &other)
 Copy assignment.
 ~MVDirection ()
 Destructor.
MVDirectionoperator+= (const MVDirection &right)
 Addition and subtraction.
MVDirection operator+ (const MVDirection &right) const
MVDirectionoperator-= (const MVDirection &right)
MVDirection operator- (const MVDirection &right) const
virtual uInt type () const
 Tell me your type.
virtual void adjust ()
 Adjust the direction cosines to a length of 1.
virtual void adjust (Double &res)
 Adjust the direction cosines to a length of 1 and return the length value.
virtual MeasValueclone () const
 Re-adjust : taken from MVPosition.
Vector< Doubleget () const
 Generate a 2-vector of angles (in rad).
Double getLat () const
 Get the latitude angle (rad).
Quantity getLat (const Unit &unit) const
 and with specified units
Double positionAngle (const MVPosition &other) const
 Get the position angle between the directions.
Double positionAngle (const MVDirection &other) const
 Get the position angle between the directions.
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.
Double separation (const MVDirection &other) const
 Get the angular separation between two directions.
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.
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.
void setAngle (Double angle0, Double angle1)
 Set the internal value, using the longitude and latitude (in rad) given.
void shift (const Quantum< Double > &lng, const Quantum< Double > &lat, Bool trueAngle=False)
 Shift the direction in longitude (radians if Double) and/or latitude.
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.
void shiftAngle (Double off, Double pa)

Static Public Member Functions

static void assure (const MeasValue &in)

Detailed Description

Vector of three direction cosines.

Intended use:

Public interface

Review Status

Reviewed By:
tcornwel
Date Reviewed:
1996/02/22
Test programs:
tMeasMath

Prerequisite

Etymology

From Measure, Value and Direction

Synopsis

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:

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.

Example

See MDirection

Motivation

To aid coordinate transformations

To Do

Definition at line 106 of file MVDirection.h.


Constructor & Destructor Documentation

casacore::MVDirection::MVDirection (  ) 

Default constructor generates a direction to the pole (i.e.

(0,0,1))

casacore::MVDirection::MVDirection ( const MVPosition other  ) 

Copy constructor.

casacore::MVDirection::MVDirection ( Double  in0  ) 

Constructs with elevation = 0.

casacore::MVDirection::MVDirection ( const Quantity angle0  ) 
casacore::MVDirection::MVDirection ( Double  in0,
Double  in1,
Double  in2 
)

Creates a specified vector.

casacore::MVDirection::MVDirection ( Double  angle0,
Double  angle1 
)

Creates the direction cosines from specified angles along equator (azimuth) and towards pole (,elevation).

casacore::MVDirection::MVDirection ( const Quantity angle0,
const Quantity angle1 
)

Creates the direction cosines from specified angles.

Thrown Exceptions

  • AipsError if quantities not in angle format
casacore::MVDirection::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).

Thrown Exceptions

  • AipsError if more than 3 values or incorrect units
casacore::MVDirection::MVDirection ( const Vector< Double > &  other  ) 

Create from Vector.

Assumes angles if less than or equal than 2 elements. Assumes direction cosines if 3 elements.

Thrown Exceptions

casacore::MVDirection::MVDirection ( const Vector< Quantity > &  other  ) 
casacore::MVDirection::~MVDirection (  ) 

Destructor.


Member Function Documentation

virtual void casacore::MVDirection::adjust ( Double res  )  [virtual]

Adjust the direction cosines to a length of 1 and return the length value.

Reimplemented from casacore::MVPosition.

virtual void casacore::MVDirection::adjust (  )  [virtual]

Adjust the direction cosines to a length of 1.

Reimplemented from casacore::MVPosition.

static void casacore::MVDirection::assure ( const MeasValue in  )  [static]

Reimplemented from casacore::MVPosition.

virtual MeasValue* casacore::MVDirection::clone (  )  const [virtual]

Re-adjust : taken from MVPosition.

Clone data

Reimplemented from casacore::MVPosition.

MVDirection casacore::MVDirection::crossProduct ( const MVDirection other  )  const

Produce the cross product.

Reimplemented from casacore::MVPosition.

Vector<Double> casacore::MVDirection::get (  )  const

Generate a 2-vector of angles (in rad).

Reimplemented from casacore::MVPosition.

Quantity casacore::MVDirection::getLat ( const Unit unit  )  const

and with specified units

Reimplemented from casacore::MVPosition.

Double casacore::MVDirection::getLat (  )  const

Get the latitude angle (rad).

Reimplemented from casacore::MVPosition.

virtual Vector<Quantum<Double> > casacore::MVDirection::getRecordValue (  )  const [virtual]

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.

virtual Vector<Quantum<Double> > casacore::MVDirection::getTMRecordValue (  )  const [virtual]

Reimplemented from casacore::MVPosition.

virtual Vector<Quantum<Double> > casacore::MVDirection::getXRecordValue (  )  const [virtual]

Reimplemented from casacore::MVPosition.

MVDirection casacore::MVDirection::operator+ ( const MVDirection right  )  const

Reimplemented from casacore::MVPosition.

MVDirection& casacore::MVDirection::operator+= ( const MVDirection right  ) 

Addition and subtraction.

Reimplemented from casacore::MVPosition.

MVDirection casacore::MVDirection::operator- ( const MVDirection right  )  const

Reimplemented from casacore::MVPosition.

MVDirection& casacore::MVDirection::operator-= ( const MVDirection right  ) 

Reimplemented from casacore::MVPosition.

MVDirection& casacore::MVDirection::operator= ( const MVDirection other  ) 

Copy assignment.

Reimplemented from casacore::MVPosition.

Quantity casacore::MVDirection::positionAngle ( const MVDirection other,
const Unit unit 
) const

Reimplemented from casacore::MVPosition.

Quantity casacore::MVDirection::positionAngle ( const MVPosition other,
const Unit unit 
) const
Double casacore::MVDirection::positionAngle ( const MVDirection 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 from casacore::MVPosition.

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.

virtual Bool casacore::MVDirection::putValue ( const Vector< Quantum< Double > > &  in  )  [virtual]

Set the internal value if correct values and dimensions.

Reimplemented from casacore::MVPosition.

Quantity casacore::MVDirection::separation ( const MVDirection other,
const Unit unit 
) const

Reimplemented from casacore::MVPosition.

Quantity casacore::MVDirection::separation ( const MVPosition other,
const Unit unit 
) const
Double casacore::MVDirection::separation ( const MVDirection other  )  const

Get the angular separation between two directions.

Reimplemented from casacore::MVPosition.

Double casacore::MVDirection::separation ( const MVPosition other  )  const

Get the angular separation between two directions.

void casacore::MVDirection::setAngle ( Double  angle0,
Double  angle1 
)

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 ( Double  lng,
Double  lat,
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 ( Double  off,
Double  pa 
)
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.

void casacore::MVDirection::shiftLatitude ( Double  lat,
Bool  trueAngle = False 
)
void casacore::MVDirection::shiftLatitude ( const Quantum< Double > &  lat,
Bool  trueAngle = False 
)
void casacore::MVDirection::shiftLongitude ( Double  lng,
Bool  trueAngle = False 
)
void casacore::MVDirection::shiftLongitude ( const Quantity lng,
Bool  trueAngle = False 
)
virtual uInt casacore::MVDirection::type (  )  const [virtual]

Tell me your type.

Reimplemented from casacore::MVPosition.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 31 Aug 2016 for casa by  doxygen 1.6.1