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 | Protected Member Functions | List of all members
lsst::afw::geom::BaseVectorEndpoint< PointT > Class Template Referenceabstract

Base class for endpoints with Array = std::vector<Point> where Point has 2 dimensions. More...

#include <Endpoint.h>

Inheritance diagram for lsst::afw::geom::BaseVectorEndpoint< PointT >:
lsst::afw::geom::BaseEndpoint< PointT, std::vector< PointT > >

Public Types

using Array = std::vector< PointT >
 
using Point = PointT
 

Public Member Functions

 BaseVectorEndpoint (BaseVectorEndpoint const &)=default
 
 BaseVectorEndpoint (BaseVectorEndpoint &&)=default
 
BaseVectorEndpointoperator= (BaseVectorEndpoint const &)=delete
 
BaseVectorEndpointoperator= (BaseVectorEndpoint &&)=delete
 
 ~BaseVectorEndpoint () override=default
 
int getNPoints (Array const &arr) const override
 Return the number of points in an array. 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 Point pointFromData (std::vector< double > const &data) const=0
 Get a single point from raw data. More...
 
virtual Array arrayFromData (ndarray::Array< double, 2, 2 > const &data) const=0
 Get an array of points from raw data. 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...
 

Protected Member Functions

 BaseVectorEndpoint (int nAxes)
 Construct a BaseVectorEndpoint. More...
 
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

template<typename PointT>
class lsst::afw::geom::BaseVectorEndpoint< PointT >

Base class for endpoints with Array = std::vector<Point> where Point has 2 dimensions.

Note
Subclasses must provide dataFromPoint, dataFromArray, pointFromData and arrayFromData

Definition at line 195 of file Endpoint.h.

Member Typedef Documentation

◆ Array

template<typename PointT >
using lsst::afw::geom::BaseVectorEndpoint< PointT >::Array = std::vector<PointT>

Definition at line 197 of file Endpoint.h.

◆ Point

template<typename PointT >
using lsst::afw::geom::BaseVectorEndpoint< PointT >::Point = PointT

Definition at line 198 of file Endpoint.h.

Constructor & Destructor Documentation

◆ BaseVectorEndpoint() [1/3]

template<typename PointT >
lsst::afw::geom::BaseVectorEndpoint< PointT >::BaseVectorEndpoint ( BaseVectorEndpoint< PointT > const &  )
default

◆ BaseVectorEndpoint() [2/3]

template<typename PointT >
lsst::afw::geom::BaseVectorEndpoint< PointT >::BaseVectorEndpoint ( BaseVectorEndpoint< PointT > &&  )
default

◆ ~BaseVectorEndpoint()

template<typename PointT >
lsst::afw::geom::BaseVectorEndpoint< PointT >::~BaseVectorEndpoint ( )
overridedefault

◆ BaseVectorEndpoint() [3/3]

template<typename PointT >
lsst::afw::geom::BaseVectorEndpoint< PointT >::BaseVectorEndpoint ( int  nAxes)
inlineexplicitprotected

Construct a BaseVectorEndpoint.

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

Definition at line 217 of file Endpoint.h.

217 : BaseEndpoint<Point, Array>(nAxes){};

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< PointT, std::vector< PointT > >::_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< PointT, std::vector< PointT > >::_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< PointT, std::vector< PointT > >::_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< PointT, std::vector< PointT > >::_getNPoints ( ndarray::Array< double, 2, 2 > const &  data) const
inlineprotectedinherited

Definition at line 183 of file Endpoint.h.

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

◆ arrayFromData()

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

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

◆ dataFromArray()

virtual ndarray::Array<double, 2, 2> lsst::afw::geom::BaseEndpoint< PointT, std::vector< PointT > >::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()

virtual std::vector<double> lsst::afw::geom::BaseEndpoint< PointT, std::vector< PointT > >::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

◆ getNAxes()

int lsst::afw::geom::BaseEndpoint< PointT, std::vector< PointT > >::getNAxes ( ) const
inlineinherited

Definition at line 79 of file Endpoint.h.

79 { return _nAxes; }

◆ getNPoints()

template<typename Point >
int lsst::afw::geom::BaseVectorEndpoint< Point >::getNPoints ( Array const &  arr) const
overridevirtual

Return the number of points in an array.

Implements lsst::afw::geom::BaseEndpoint< PointT, std::vector< PointT > >.

Definition at line 82 of file Endpoint.cc.

82  {
83  return arr.size();
84 }

◆ 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< PointT, std::vector< PointT > >::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< PointT, std::vector< PointT > >::operator!= ( BaseEndpoint< PointT, std::vector< PointT > > 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]

template<typename PointT >
BaseVectorEndpoint& lsst::afw::geom::BaseVectorEndpoint< PointT >::operator= ( BaseVectorEndpoint< PointT > &&  )
delete

◆ operator=() [2/2]

template<typename PointT >
BaseVectorEndpoint& lsst::afw::geom::BaseVectorEndpoint< PointT >::operator= ( BaseVectorEndpoint< PointT > const &  )
delete

◆ operator==()

bool lsst::afw::geom::BaseEndpoint< Point, Array >::operator== ( BaseEndpoint< PointT, std::vector< PointT > > 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()

virtual Point lsst::afw::geom::BaseEndpoint< PointT, std::vector< PointT > >::pointFromData ( std::vector< double > const &  data) const
pure virtualinherited

Get a single point from raw data.

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

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