|
| SlaMap (std::string const &options="") |
| Construct a SlaMap.
|
|
virtual | ~SlaMap () |
|
| SlaMap (SlaMap const &)=default |
| Copy constructor: make a deep copy.
|
|
| SlaMap (SlaMap &&)=default |
|
SlaMap & | operator= (SlaMap const &)=delete |
|
SlaMap & | operator= (SlaMap &&)=default |
|
std::shared_ptr< SlaMap > | copy () const |
| Return a deep copy of this object.
|
|
void | add (std::string const &cvt, std::vector< double > const &args=std::vector< double >()) |
| Add one of the standard celestial coordinate system conversions provided by the SLALIB Positional Astronomy Library (Starlink User Note SUN/67) to an existing SlaMap.
|
|
int | getNIn () const |
| Get NIn: the number of input axes.
|
|
int | getNOut () const |
| Get NOut: the number of output axes.
|
|
bool | getIsSimple () const |
| Get IsSimple: has the mapping been simplified?
|
|
bool | isInverted () const |
| Is this an inverted mapping?
|
|
bool | getIsLinear () const |
| Get IsLinear: is the Mapping linear?
|
|
bool | getReport () const |
| Get Report: report transformed coordinates to stdout?
|
|
bool | hasForward () const |
| Is the forward transform available?
|
|
bool | hasInverse () const |
| Is the inverse transform available?
|
|
std::shared_ptr< Mapping > | inverted () const |
| Get an inverse mapping.
|
|
Array2D | linearApprox (PointD const &lbnd, PointD const &ubnd, double tol) const |
| Compute a linear approximation to the forward transformation.
|
|
SeriesMap | then (Mapping const &next) const |
| Return a series compound mapping this(first(input)) containing shallow copies of the original.
|
|
ParallelMap | under (Mapping const &next) const |
| Return a parallel compound mapping containing shallow copies of the original.
|
|
double | rate (PointD const &at, int ax1, int ax2) const |
| Evaluate the rate of change of the Mapping with respect to a specified input, at a specified position.
|
|
void | setReport (bool report) |
| Set Report: report transformed coordinates to stdout?
|
|
std::shared_ptr< Mapping > | simplified () const |
| Return a simplied version of the mapping (which may be a compound Mapping such as a CmpMap).
|
|
void | applyForward (ConstArray2D const &from, Array2D const &to) const |
| Perform a forward transformation on 2-D array, putting the results into a pre-allocated 2-D array.
|
|
Array2D | applyForward (ConstArray2D const &from) const |
| Perform a forward transformation on a 2-D array, returning the results as a new array.
|
|
std::vector< double > | applyForward (std::vector< double > const &from) const |
| Perform a forward transformation on a vector, returning the results as a new vector.
|
|
void | applyInverse (ConstArray2D const &from, Array2D const &to) const |
| Perform an inverse transformation on a 2-D array, putting the results into a pre-allocated 2-D array.
|
|
Array2D | applyInverse (ConstArray2D const &from) const |
| Perform an inverse transformation on a 2-D array, returning the results as a new 2-D array.
|
|
std::vector< double > | applyInverse (std::vector< double > const &from) const |
| Perform an inverse transformation on a vector, returning the results as a new vector.
|
|
void | tranGridForward (PointI const &lbnd, PointI const &ubnd, double tol, int maxpix, Array2D const &to) const |
| Transform a grid of points in the forward direction.
|
|
Array2D | tranGridForward (PointI const &lbnd, PointI const &ubnd, double tol, int maxpix, int nPts) const |
| Transform a grid of points in the inverse direction, returning the results as a new Array2D.
|
|
void | tranGridInverse (PointI const &lbnd, PointI const &ubnd, double tol, int maxpix, Array2D const &to) const |
| Transform a grid of points in the inverse direction.
|
|
Array2D | tranGridInverse (PointI const &lbnd, PointI const &ubnd, double tol, int maxpix, int nPts) const |
| Transform a grid of points in the inverse direction.
|
|
bool | operator== (Object const &rhs) const |
| Return True if this and rhs are the equal.
|
|
bool | operator!= (Object const &rhs) const |
| Return True if this and rhs are not equal.
|
|
void | clear (std::string const &attrib) |
| Clear the values of a specified set of attributes for an Object.
|
|
bool | hasAttribute (std::string const &attrib) const |
| Does this object have an attribute with the specified name?
|
|
std::string | getClassName () const |
| Get Class: the name of the class (e.g.
|
|
std::string | getID () const |
| Get ID: object identification string that is not copied.
|
|
std::string | getIdent () const |
| Get Ident: object identification string that is copied.
|
|
int | getNObject () const |
| Get NObject: number of AST objects in existence of the same type as the underlying AST class.
|
|
int | getObjSize () const |
| Get ObjSize: the in-memory size of the AST object in bytes.
|
|
int | getRefCount () const |
| Get RefCount: number of active pointers to the underlying AST object.
|
|
bool | getUseDefs () const |
| Get UseDefs: allow use of default values for Object attributes?
|
|
void | lock (bool wait) |
| Lock this object for exclusive use by the calling thread.
|
|
bool | same (Object const &other) const |
| Does this contain the same AST object as another?
|
|
void | setID (std::string const &id) |
| Set ID: object identification string that is not copied.
|
|
void | setIdent (std::string const &ident) |
| Set Ident: object identification string that is copied.
|
|
void | setUseDefs (bool usedefs) |
| Set UseDefs: allow use of default values for Object attributes?
|
|
void | show (std::ostream &os, bool showComments=true) const |
| Print a textual description the object to an ostream.
|
|
std::string | show (bool showComments=true) const |
| Return a textual description the object as a string.
|
|
bool | test (std::string const &attrib) const |
| Has this attribute been explicitly set (and not subsequently cleared)?
|
|
void | unlock (bool report=false) |
| Unlock this object previously locked using lock, so that other threads can use this object.
|
|
|
AstObject const * | getRawPtr () const |
| Get the raw AST pointer.
|
|
AstObject * | getRawPtr () |
| Get the raw AST pointer.
|
|
|
virtual std::shared_ptr< Object > | copyPolymorphic () const override |
| Return a deep copy of this object.
|
|
| SlaMap (AstSlaMap *rawptr) |
| Construct a SlaMap from a raw AST pointer.
|
|
template<typename Class > |
std::shared_ptr< Class > | decompose (int i, bool copy) const |
| Return a deep copy of one of the two component mappings.
|
|
template<typename T , typename AstT > |
std::shared_ptr< T > | copyImpl () const |
| Implementation of deep copy.
|
|
bool | getB (std::string const &attrib) const |
| Get the value of an attribute as a bool.
|
|
std::string const | getC (std::string const &attrib) const |
| Get the value of an attribute as a string.
|
|
double | getD (std::string const &attrib) const |
| Get the value of an attribute as a double.
|
|
float | getF (std::string const &attrib) const |
| Get the value of an attribute as a float.
|
|
int | getI (std::string const &attrib) const |
| Get the value of an attribute as an int.
|
|
long int | getL (std::string const &attrib) const |
| Get the value of an attribute as a long int.
|
|
void | set (std::string const &setting) |
| Assign a set of attribute values, over-riding any previous values.
|
|
void | setB (std::string const &attrib, bool value) |
| Set the value of an attribute as a bool.
|
|
void | setC (std::string const &attrib, std::string const &value) |
| Set the value of an attribute as a string.
|
|
void | setD (std::string const &attrib, double value) |
| Set the value of an attribute as a double.
|
|
void | setF (std::string const &attrib, float value) |
| Set the value of an attribute as a float.
|
|
void | setI (std::string const &attrib, int value) |
| Set the value of an attribute as an int.
|
|
void | setL (std::string const &attrib, long int value) |
| Set the value of an attribute as a long int.
|
|
SlaMap is a specialised form of Mapping which can be used to represent a sequence of conversions between standard celestial (longitude, latitude) coordinate systems.
When an SlaMap is first created, it simply performs a unit (null) Mapping on a pair of coordinates. By calling add, a series of coordinate conversion steps may then be added, selected from those provided by the SLALIB Positional Astronomy Library (Starlink User Note SUN/67). This allows multi-step conversions between a variety of celestial coordinate systems to be assembled out of the building blocks provided by SLALIB.
For details of the individual coordinate conversions available, see the description of the add method.
Notes
- All coordinate values processed by an SlaMap are in radians. The first coordinate is the celestial longitude and the second coordinate is the celestial latitude.
- When assembling a multi-stage conversion, it can sometimes be difficult to determine the most economical conversion path. For example, converting to the standard FK5 coordinate system as an intermediate stage is often sensible in formulating the problem, but may introduce unnecessary extra conversion steps. A solution to this is to include all the steps which are (logically) necessary, but then to use astSimplify to simplify the resulting SlaMap. The simplification process will eliminate any steps which turn out not to be needed.
Definition at line 57 of file SlaMap.h.
Add one of the standard celestial coordinate system conversions provided by the SLALIB Positional Astronomy Library (Starlink User Note SUN/67) to an existing SlaMap.
- Parameters
-
[in] | cvt | String which identifies the celestial coordinate conversion to be added to the SlaMap . See the "SLALIB Conversions" section for details of those available. |
[in] | args | A vector containing argument values for the celestial coordinate conversion. The number of arguments required depends on the conversion specified (see the " SLALIB Conversions" section). This vector is ignored if no arguments are needed. |
When an SlaMap
is first created, it simply performs a unit (null) Mapping. By calling add (repeatedly if necessary), one or more coordinate conversion steps may then be added, which the SlaMap will perform in sequence. This allows multi-step conversions between a variety of celestial coordinate systems to be assembled out of the building blocks provided by SLALIB.
The forward transformation is performed by carrying out each of the individual coordinate conversions specified by astSlaAdd in the order given (i.e. with the most recently added conversion applied last). The order is reversed in the inverse direction and each individual coordinate conversion is also replaced by its own inverse. This process inverts the overall effect of the SlaMap
. Thus in the reverse direction the first conversion to be applied would be the inverse of the conversion most recently added.
Notes
- All coordinate values processed by an SlaMap are in radians. The first coordinate is the celestial longitude and the second coordinate is the celestial latitude.
- When assembling a multi-stage conversion, it can sometimes be difficult to determine the most economical conversion path. For example, converting to the standard FK5 coordinate system as an intermediate stage is often sensible in formulating the problem, but may introduce unnecessary extra conversion steps. A solution to this is to include all the steps which are (logically) necessary, but then to use astSimplify to simplify the resulting SlaMap. The simplification process will eliminate any steps which turn out not to be needed.
- This function does not check to ensure that the sequence of coordinate conversions added to an SlaMap is physically meaningful.
SLALIB Conversions
The following strings (which are case-insensitive) may be supplied via the cvt
parameter to indicate which celestial coordinate conversion is to be added to the SlaMap. Each string is derived from the name of the SLALIB routine that performs the conversion and the relevant documentation (SUN/67) should be consulted for details. Where arguments are needed by the conversion, they are listed in parentheses. Values for these arguments should be given, via the args
vector, in the order indicated. The argument names match the corresponding SLALIB routine arguments and their values should be given using exactly the same units, time scale, calendar, etc. as described in SUN/67:
- "ADDET" (EQ): Add E-terms of aberration.
- "SUBET" (EQ): Subtract E-terms of aberration.
- "PREBN" (BEP0,BEP1): Apply Bessel-Newcomb pre-IAU 1976 (FK4) precession model.
- "PREC" (EP0,EP1): Apply IAU 1975 (FK5) precession model.
- "FK45Z" (BEPOCH): Convert FK4 to FK5 (no proper motion or parallax).
- "FK54Z" (BEPOCH): Convert FK5 to FK4 (no proper motion or parallax).
- "AMP" (DATE,EQ): Convert geocentric apparent to mean place.
- "MAP" (EQ,DATE): Convert mean place to geocentric apparent.
- "ECLEQ" (DATE): Convert ecliptic coordinates to FK5 J2000.0 equatorial.
- "EQECL" (DATE): Convert equatorial FK5 J2000.0 to ecliptic coordinates.
- "GALEQ" : Convert galactic coordinates to FK5 J2000.0 equatorial.
- "EQGAL" : Convert FK5 J2000.0 equatorial to galactic coordinates.
- "HFK5Z" (JEPOCH): Convert ICRS coordinates to FK5 J2000.0 equatorial.
- "FK5HZ" (JEPOCH): Convert FK5 J2000.0 equatorial coordinates to ICRS.
- "GALSUP" : Convert galactic to supergalactic coordinates.
- "SUPGAL" : Convert supergalactic coordinates to galactic.
- "J2000H" : Convert dynamical J2000.0 to ICRS.
- "HJ2000" : Convert ICRS to dynamical J2000.0.
- "R2H" (LAST): Convert RA to Hour Angle.
- "H2R" (LAST): Convert Hour Angle to RA.
For example, to use the "ADDET" conversion, which takes a single argument EQ, you should consult the documentation for the SLALIB routine SLA_ADDET. This describes the conversion in detail and shows that EQ is the Besselian epoch of the mean equator and equinox. This value should then be supplied to add in args[0].
In addition the following strings may be supplied for more complex conversions which do not correspond to any one single SLALIB routine (DIURAB is the magnitude of the diurnal aberration vector in units of "day/(2.PI)" , DATE is the Modified Julian Date of the observation, and (OBSX,OBSY,OBZ) are the Heliocentric-Aries-Ecliptic cartesian coordinates, in metres, of the observer):
- "HPCEQ" (DATE,OBSX,OBSY,OBSZ): Convert Helioprojective-Cartesian coordinates to J2000.0 equatorial.
- "EQHPC" (DATE,OBSX,OBSY,OBSZ): Convert J2000.0 equatorial coordinates to Helioprojective-Ca
- "HPREQ" (DATE,OBSX,OBSY,OBSZ): Convert Helioprojective-Radial coordinates to J2000.0 equatorial.
- "EQHPR" (DATE,OBSX,OBSY,OBSZ): Convert J2000.0 equatorial coordinates to Helioprojective-Ra
- "HEEQ" (DATE): Convert helio-ecliptic coordinates to J2000.0 equatorial.
- "EQHE" (DATE): Convert J2000.0 equatorial coordinates to helio-ecliptic.
- "H2E" (LAT,DIRUAB): Convert horizon coordinates to equatorial.
- "E2H" (LAT,DIURAB): Convert equatorial coordinates to horizon.
Note, the "H2E" and "E2H" conversions convert between topocentric horizon coordinates (azimuth,elevation), and apparent local equatorial coordinates (hour angle,declination). Thus, the effects of diurnal aberration are taken into account in the conversions but the effects of atmospheric refraction are not.
Definition at line 175 of file SlaMap.h.