LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
lsst::afw::geom::GenericEndpoint Class Referenceabstract

A generic endpoint for data in the format used by ast::Mapping. More...

#include <Endpoint.h>

Inheritance diagram for lsst::afw::geom::GenericEndpoint:
lsst::afw::geom::BaseEndpoint< std::vector< double >, ndarray::Array< double, 2, 2 > >

Public Types

using Point = std::vector< double >
 
using Array = ndarray::Array< double, 2, 2 >
 

Public Member Functions

 GenericEndpoint (GenericEndpoint const &)=default
 
 GenericEndpoint (GenericEndpoint &&)=default
 
GenericEndpointoperator= (GenericEndpoint const &)=delete
 
GenericEndpointoperator= (GenericEndpoint &&)=delete
 
 GenericEndpoint (int nAxes)
 Construct a GenericEndpoint with the specified number of axes. More...
 
 ~GenericEndpoint () override=default
 
int getNPoints (Array const &arr) const override
 Return the number of points in an array. More...
 
std::vector< double > dataFromPoint (Point const &point) const override
 
ndarray::Array< double, 2, 2 > dataFromArray (Array const &arr) const override
 
Point pointFromData (std::vector< double > const &data) const override
 Get a single point from raw data. More...
 
Array arrayFromData (ndarray::Array< double, 2, 2 > const &data) const override
 Get an array of points from raw data. More...
 
int getNAxes () const
 
virtual bool operator== (BaseEndpoint const &other) const noexcept
 Determine whether two endpoints represent the same conversion. More...
 
bool operator!= (BaseEndpoint const &other) const noexcept
 Determine whether two endpoints do not represent the same conversion. More...
 
virtual std::vector< double > dataFromPoint (Point const &point) const=0
 Get raw data from a single point. More...
 
virtual ndarray::Array< double, 2, 2 > dataFromArray (Array const &arr) const=0
 Get raw data from an array of points. More...
 
virtual std::shared_ptr< ast::FramemakeFrame () const
 Create a Frame that can be used with this end point in a Transform. More...
 
virtual void normalizeFrame (std::shared_ptr< ast::Frame > framePtr) const
 Adjust and check the frame as needed. More...
 

Static Public Member Functions

static std::string getClassPrefix ()
 Get the class name prefix, e.g. "Point2" for "Point2Endpoint". More...
 

Protected Member Functions

void _assertNAxes (int nAxes) const
 
int _getNAxes (ndarray::Array< double, 2, 2 > const &data) const
 
int _getNAxes (ndarray::Array< double, 1, 1 > const &data) const
 
int _getNAxes (std::vector< double > const &data) const
 
int _getNPoints (ndarray::Array< double, 2, 2 > const &data) const
 

Detailed Description

A generic endpoint for data in the format used by ast::Mapping.

Thus supports all ast frame classes and any number of axes, and thus can be used as an endpoint for any ast::Mapping.

Definition at line 226 of file Endpoint.h.

Member Typedef Documentation

◆ Array

using lsst::afw::geom::BaseEndpoint< std::vector< double > , ndarray::Array< double, 2, 2 > >::Array = ndarray::Array< double, 2, 2 >
inherited

Definition at line 70 of file Endpoint.h.

◆ Point

using lsst::afw::geom::BaseEndpoint< std::vector< double > , ndarray::Array< double, 2, 2 > >::Point = std::vector< double >
inherited

Definition at line 69 of file Endpoint.h.

Constructor & Destructor Documentation

◆ GenericEndpoint() [1/3]

lsst::afw::geom::GenericEndpoint::GenericEndpoint ( GenericEndpoint const &  )
default

◆ GenericEndpoint() [2/3]

lsst::afw::geom::GenericEndpoint::GenericEndpoint ( GenericEndpoint &&  )
default

◆ GenericEndpoint() [3/3]

lsst::afw::geom::GenericEndpoint::GenericEndpoint ( int  nAxes)
inlineexplicit

Construct a GenericEndpoint with the specified number of axes.

Parameters
[in]nAxesThe number of axes in a point; must be > 0
Exceptions
lsst.pex.exceptions.InvalidParameterErrorif nAxes <= 0

Definition at line 240 of file Endpoint.h.

◆ ~GenericEndpoint()

lsst::afw::geom::GenericEndpoint::~GenericEndpoint ( )
overridedefault

Member Function Documentation

◆ _assertNAxes()

void lsst::afw::geom::BaseEndpoint< Point, Array >::_assertNAxes ( int  nAxes) const
protectedinherited

Definition at line 175 of file Endpoint.cc.

73  {
74  if (nAxes != this->getNAxes()) {
76  os << "number of axes provided " << nAxes << " != " << this->getNAxes() << " required";
77  throw std::invalid_argument(os.str());
78  }
79 }
std::ostream * os
Definition: Schema.cc:557

◆ _getNAxes() [1/3]

int lsst::afw::geom::BaseEndpoint< std::vector< double > , ndarray::Array< double, 2, 2 > >::_getNAxes ( ndarray::Array< double, 1, 1 > const &  data) const
inlineprotectedinherited

Definition at line 179 of file Endpoint.h.

179 { return data.getSize<0>(); }
char * data
Definition: BaseRecord.cc:61

◆ _getNAxes() [2/3]

int lsst::afw::geom::BaseEndpoint< std::vector< double > , ndarray::Array< double, 2, 2 > >::_getNAxes ( ndarray::Array< double, 2, 2 > const &  data) const
inlineprotectedinherited

Definition at line 177 of file Endpoint.h.

177 { return data.getSize<0>(); }

◆ _getNAxes() [3/3]

int lsst::afw::geom::BaseEndpoint< std::vector< double > , ndarray::Array< double, 2, 2 > >::_getNAxes ( std::vector< double > const &  data) const
inlineprotectedinherited

Definition at line 181 of file Endpoint.h.

181 { return data.size(); }

◆ _getNPoints()

int lsst::afw::geom::BaseEndpoint< std::vector< double > , ndarray::Array< double, 2, 2 > >::_getNPoints ( ndarray::Array< double, 2, 2 > const &  data) const
inlineprotectedinherited

Definition at line 183 of file Endpoint.h.

183 { return data.getSize<1>(); }

◆ arrayFromData()

ndarray::Array< double, 2, 2 > lsst::afw::geom::GenericEndpoint::arrayFromData ( ndarray::Array< double, 2, 2 > const &  data) const
overridevirtual

Get an array of points from raw data.

Parameters
[in]dataRaw data for an array of points, as a 2-D ndarray array [nPoints, nAxes] in C order, so the in-memory view is, for example, x0, y0, x1, y1, x2, y2, ...
Returns
an array of points
Exceptions
lsst::pex::exceptions::InvalidParameterErrorif the array has the wrong nAxes dimension

Implements lsst::afw::geom::BaseEndpoint< std::vector< double >, ndarray::Array< double, 2, 2 > >.

Definition at line 101 of file Endpoint.cc.

101  {
102  this->_assertNAxes(_getNAxes(data));
103  return ndarray::copy(data);
104 }
int _getNAxes(ndarray::Array< double, 2, 2 > const &data) const
Definition: Endpoint.h:177

◆ dataFromArray() [1/2]

ndarray::Array< double, 2, 2 > lsst::afw::geom::GenericEndpoint::dataFromArray ( Array const &  arr) const
override

Definition at line 91 of file Endpoint.cc.

91  {
92  this->_assertNAxes(_getNAxes(arr));
93  return ndarray::copy(arr);
94 }

◆ dataFromArray() [2/2]

virtual ndarray::Array<double, 2, 2> lsst::afw::geom::BaseEndpoint< std::vector< double > , ndarray::Array< double, 2, 2 > >::dataFromArray ( Array const &  arr) const
pure virtualinherited

Get raw data from an array of points.

Parameters
[in]arrArray of points
Returns
the data as a 2-D ndarray array [nAxes, nPoints] in C order, so the in-memory view is, for example, x0, x1, x2, ..., y0, y1, y2, ...
Exceptions
lsst::pex::exceptions::InvalidParameterErrorif the array has the wrong nAxes dimension

◆ dataFromPoint() [1/2]

std::vector< double > lsst::afw::geom::GenericEndpoint::dataFromPoint ( Point const &  point) const
override

Definition at line 86 of file Endpoint.cc.

86  {
87  this->_assertNAxes(_getNAxes(point));
88  return point;
89 }

◆ dataFromPoint() [2/2]

virtual std::vector<double> lsst::afw::geom::BaseEndpoint< std::vector< double > , ndarray::Array< double, 2, 2 > >::dataFromPoint ( Point const &  point) const
pure virtualinherited

Get raw data from a single point.

Parameters
[in]pointdata for a single point
Returns
the values in the point as a vector of size NAxess
Exceptions
lsst::pex::exceptions::InvalidParameterErrorif the point has the wrong number of axes

◆ getClassPrefix()

static std::string lsst::afw::geom::GenericEndpoint::getClassPrefix ( )
inlinestatic

Get the class name prefix, e.g. "Point2" for "Point2Endpoint".

Definition at line 255 of file Endpoint.h.

255 { return "Generic"; };

◆ getNAxes()

int lsst::afw::geom::BaseEndpoint< std::vector< double > , ndarray::Array< double, 2, 2 > >::getNAxes ( ) const
inlineinherited

Definition at line 79 of file Endpoint.h.

79 { return _nAxes; }

◆ getNPoints()

int lsst::afw::geom::GenericEndpoint::getNPoints ( Array const &  arr) const
inlineoverridevirtual

Return the number of points in an array.

Implements lsst::afw::geom::BaseEndpoint< std::vector< double >, ndarray::Array< double, 2, 2 > >.

Definition at line 244 of file Endpoint.h.

244 { return arr.getSize<1>(); }

◆ makeFrame()

Create a Frame that can be used with this end point in a Transform.

Definition at line 154 of file Endpoint.cc.

68  {
69  return std::make_shared<ast::Frame>(getNAxes());
70 }

◆ normalizeFrame()

virtual void lsst::afw::geom::BaseEndpoint< std::vector< double > , ndarray::Array< double, 2, 2 > >::normalizeFrame ( std::shared_ptr< ast::Frame framePtr) const
inlinevirtualinherited

Adjust and check the frame as needed.

Do not bother to check the number of axes because that is done elsewhere.

The base implementation does nothing.

Definition at line 163 of file Endpoint.h.

163 {};

◆ operator!=()

bool lsst::afw::geom::BaseEndpoint< std::vector< double > , ndarray::Array< double, 2, 2 > >::operator!= ( BaseEndpoint< std::vector< double >, ndarray::Array< double, 2, 2 > > const &  other) const
inlinenoexceptinherited

Determine whether two endpoints do not represent the same conversion.

Returns
the inverse of operator==. See that operator's documentation for important caveats.

Definition at line 109 of file Endpoint.h.

109 { return !(*this == other); }

◆ operator=() [1/2]

GenericEndpoint& lsst::afw::geom::GenericEndpoint::operator= ( GenericEndpoint &&  )
delete

◆ operator=() [2/2]

GenericEndpoint& lsst::afw::geom::GenericEndpoint::operator= ( GenericEndpoint const &  )
delete

◆ operator==()

bool lsst::afw::geom::BaseEndpoint< Point, Array >::operator== ( BaseEndpoint< std::vector< double >, ndarray::Array< double, 2, 2 > > const &  other) const
virtualnoexceptinherited

Determine whether two endpoints represent the same conversion.

Parameters
otherthe endpoint to compare
Returns
true iff this object and other are of exactly the same class and all visible properties are identical. This implementation requires that the objects have the same number of axes.
Warning
Two endpoints with different implementation classes will never compare equal, even if one class is conceptually equivalent to the other (e.g., a decorator). This may cause unexpected behavior when mixing related concrete endpoint classes.

Definition at line 101 of file Endpoint.cc.

63  {
64  return this->getNAxes() == other.getNAxes() && typeid(*this) == typeid(other);
65 }

◆ pointFromData()

std::vector< double > lsst::afw::geom::GenericEndpoint::pointFromData ( std::vector< double > const &  data) const
overridevirtual

Get a single point from raw data.

Parameters
[in]dataData as a vector of length NAxes
Returns
the corresponding point

Implements lsst::afw::geom::BaseEndpoint< std::vector< double >, ndarray::Array< double, 2, 2 > >.

Definition at line 96 of file Endpoint.cc.

96  {
97  this->_assertNAxes(data.size());
98  return data;
99 }
T size(T... args)

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