lsst.astshim g38293774b4+c9b10be330
Public Member Functions | Protected Member Functions | Friends | List of all members
ast::PcdMap Class Reference

#include <PcdMap.h>

Inheritance diagram for ast::PcdMap:
ast::Mapping ast::Object

Public Member Functions

 PcdMap (double disco, std::vector< double > const &pcdcen, std::string const &options="")
 
virtual ~PcdMap ()
 
 PcdMap (PcdMap const &)=default
 Copy constructor: make a deep copy. More...
 
 PcdMap (PcdMap &&)=default
 
PcdMapoperator= (PcdMap const &)=delete
 
PcdMapoperator= (PcdMap &&)=default
 
std::shared_ptr< PcdMapcopy () const
 Return a deep copy of this object. More...
 
double getDisco () const
 Get Disco: pincushion/barrel distortion coefficient. More...
 
double getPcdCen (int axis) const
 Get PcdMap_PcdCen PcdCen(axis) for one axis: centre coordinates of pincushion/barrel distortion. More...
 
std::vector< double > getPcdCen () const
 Get PcdMap_PcdCen PcdCen for both axes: centre coordinates of pincushion/barrel distortion. More...
 
- Public Member Functions inherited from ast::Mapping
virtual ~Mapping ()
 
 Mapping (Mapping const &)=default
 Copy constructor: make a deep copy. More...
 
 Mapping (Mapping &&)=default
 
Mappingoperator= (Mapping const &)=delete
 
Mappingoperator= (Mapping &&)=default
 
std::shared_ptr< Mappingcopy () const
 Return a deep copy of this object. More...
 
int getNIn () const
 
int getNOut () const
 
bool getIsSimple () const
 
bool isInverted () const
 
bool getIsLinear () const
 
bool getReport () const
 
bool hasForward () const
 
bool hasInverse () const
 
std::shared_ptr< Mappinginverted () const
 
Array2D linearApprox (PointD const &lbnd, PointD const &ubnd, double tol) const
 
SeriesMap then (Mapping const &next) const
 
ParallelMap under (Mapping const &next) const
 
double rate (PointD const &at, int ax1, int ax2) const
 
void setReport (bool report)
 
std::shared_ptr< Mappingsimplified () const
 
void applyForward (ConstArray2D const &from, Array2D const &to) const
 
Array2D applyForward (ConstArray2D const &from) const
 
std::vector< double > applyForward (std::vector< double > const &from) const
 
void applyInverse (ConstArray2D const &from, Array2D const &to) const
 
Array2D applyInverse (ConstArray2D const &from) const
 
std::vector< double > applyInverse (std::vector< double > const &from) const
 
void tranGridForward (PointI const &lbnd, PointI const &ubnd, double tol, int maxpix, Array2D const &to) const
 
Array2D tranGridForward (PointI const &lbnd, PointI const &ubnd, double tol, int maxpix, int nPts) const
 
void tranGridInverse (PointI const &lbnd, PointI const &ubnd, double tol, int maxpix, Array2D const &to) const
 
Array2D tranGridInverse (PointI const &lbnd, PointI const &ubnd, double tol, int maxpix, int nPts) const
 
- Public Member Functions inherited from ast::Object
virtual ~Object ()
 
 Object (Object const &object)
 Copy constructor: make a deep copy. More...
 
 Object (Object &&)=default
 
Objectoperator= (Object const &)=delete
 
Objectoperator= (Object &&)=default
 
bool operator== (Object const &rhs) const
 
bool operator!= (Object const &rhs) const
 
std::shared_ptr< Objectcopy () const
 Return a deep copy of this object. More...
 
void clear (std::string const &attrib)
 
bool hasAttribute (std::string const &attrib) const
 
std::string getClassName () const
 
std::string getID () const
 Get ID: object identification string that is not copied. More...
 
std::string getIdent () const
 Get Ident: object identification string that is copied. More...
 
int getNObject () const
 
int getObjSize () const
 Get ObjSize: the in-memory size of the AST object in bytes. More...
 
int getRefCount () const
 
bool getUseDefs () const
 Get UseDefs: allow use of default values for Object attributes? More...
 
void lock (bool wait)
 
bool same (Object const &other) const
 
void setID (std::string const &id)
 Set ID: object identification string that is not copied. More...
 
void setIdent (std::string const &ident)
 Set Ident: object identification string that is copied. More...
 
void setUseDefs (bool usedefs)
 Set UseDefs: allow use of default values for Object attributes? More...
 
void show (std::ostream &os, bool showComments=true) const
 
std::string show (bool showComments=true) const
 
bool test (std::string const &attrib) const
 
void unlock (bool report=false)
 
AstObject const * getRawPtr () const
 
AstObject * getRawPtr ()
 

Protected Member Functions

virtual std::shared_ptr< ObjectcopyPolymorphic () const override
 
 PcdMap (AstPcdMap *rawptr)
 Construct a PcdMap from a raw AST pointer. More...
 
- Protected Member Functions inherited from ast::Mapping
 Mapping (AstMapping *rawMap)
 
virtual std::shared_ptr< ObjectcopyPolymorphic () const override
 
template<typename Class >
std::shared_ptr< Class > decompose (int i, bool copy) const
 
- Protected Member Functions inherited from ast::Object
 Object (AstObject *object)
 
template<typename T , typename AstT >
std::shared_ptr< T > copyImpl () const
 
virtual std::shared_ptr< ObjectcopyPolymorphic () const =0
 
bool getB (std::string const &attrib) const
 
std::string const getC (std::string const &attrib) const
 
double getD (std::string const &attrib) const
 
float getF (std::string const &attrib) const
 
int getI (std::string const &attrib) const
 
long int getL (std::string const &attrib) const
 
void set (std::string const &setting)
 
void setB (std::string const &attrib, bool value)
 
void setC (std::string const &attrib, std::string const &value)
 
void setD (std::string const &attrib, double value)
 
void setF (std::string const &attrib, float value)
 
void setI (std::string const &attrib, int value)
 
void setL (std::string const &attrib, long int value)
 

Friends

class Object
 

Additional Inherited Members

- Public Types inherited from ast::Object
using ObjectPtr = std::unique_ptr< AstObject, Deleter >
 unique pointer holding an AST raw pointer More...
 
- Static Public Member Functions inherited from ast::Object
static std::shared_ptr< ObjectfromString (std::string const &str)
 
template<typename Class >
static std::shared_ptr< Class > fromAstObject (AstObject *rawObj, bool copy)
 
- Static Protected Member Functions inherited from ast::Object
template<typename ShimT , typename AstT >
static std::shared_ptr< ShimT > makeShim (AstObject *p)
 

Detailed Description

A PcdMap is a non-linear Mapping which transforms 2-dimensional positions to correct for the radial distortion introduced by some cameras and telescopes. This can take the form either of pincushion or barrel distortion, and is characterized by a single distortion coefficient. A PcdMap is specified by giving this distortion coefficient and the coordinates of the centre of the radial distortion. The forward transformation of a PcdMap applies the distortion:

RD = R * ( 1 + disco * R * R )

where R is the undistorted radial distance from pcdcen, the distortion centre, RD is the radial distance from the same centre in the presence of distortion.

The inverse transformation of a PcdMap removes the distortion produced by the forward transformation. The expression used to derive R from RD is an approximate inverse of the expression above, obtained from two iterations of the Newton-Raphson method. The mismatch between the forward and inverse expressions is negligible for astrometric applications (to reach 1 milliarcsec at the edge of the Anglo-Australian Telescope triplet or a Schmidt field would require field diameters of 2.4 and 42 degrees respectively).

Attributes

In addition to those attributes provided by Mapping and Object, PcdMap has the following attributes:

Constructor & Destructor Documentation

◆ PcdMap() [1/4]

ast::PcdMap::PcdMap ( double  disco,
std::vector< double > const &  pcdcen,
std::string const &  options = "" 
)
inline

Construct a PcdMap

Parameters
[in]discoThe distortion coefficient. Negative values give barrel distortion, positive values give pincushion distortion, and zero gives no distortion.
[in]pcdcenA 2-element vector containing the coordinates of the centre of the distortion.
[in]optionsComma-separated list of attribute assignments.
Exceptions
std::invalid_argumentif pcdcen does not have exactly 2 elements.

◆ ~PcdMap()

virtual ast::PcdMap::~PcdMap ( )
inlinevirtual

◆ PcdMap() [2/4]

ast::PcdMap::PcdMap ( PcdMap const &  )
default

Copy constructor: make a deep copy.

◆ PcdMap() [3/4]

ast::PcdMap::PcdMap ( PcdMap &&  )
default

◆ PcdMap() [4/4]

ast::PcdMap::PcdMap ( AstPcdMap *  rawptr)
inlineexplicitprotected

Construct a PcdMap from a raw AST pointer.

Member Function Documentation

◆ copy()

std::shared_ptr< PcdMap > ast::PcdMap::copy ( ) const
inline

Return a deep copy of this object.

◆ copyPolymorphic()

virtual std::shared_ptr< Object > ast::PcdMap::copyPolymorphic ( ) const
inlineoverrideprotectedvirtual

Return a deep copy of this object. This is called by copy.

Each subclass must override this method. The standard implementation is:

return copyImpl<astshim_class, ast_class>();

for example Frame implements this as:

return copyImpl<Frame, AstFrame>();

Reimplemented from ast::Mapping.

◆ getDisco()

double ast::PcdMap::getDisco ( ) const
inline

Get Disco: pincushion/barrel distortion coefficient.

◆ getPcdCen() [1/2]

std::vector< double > ast::PcdMap::getPcdCen ( ) const
inline

Get PcdMap_PcdCen PcdCen for both axes: centre coordinates of pincushion/barrel distortion.

◆ getPcdCen() [2/2]

double ast::PcdMap::getPcdCen ( int  axis) const
inline

Get PcdMap_PcdCen PcdCen(axis) for one axis: centre coordinates of pincushion/barrel distortion.

◆ operator=() [1/2]

PcdMap & ast::PcdMap::operator= ( PcdMap &&  )
default

◆ operator=() [2/2]

PcdMap & ast::PcdMap::operator= ( PcdMap const &  )
delete

Friends And Related Function Documentation

◆ Object

friend class Object
friend

The documentation for this class was generated from the following file: