Template Class BaseEndpoint¶
Defined in File Endpoint.h
Class Documentation¶
-
template<typename
PointT
, typenameArrayT
>
classBaseEndpoint
¶ Virtual base class for endpoints, which are helper classes for Transform
Endpoints transform points and lists of points from LSST-specific data types, such as lsst::geom::Point2D and lsst::geom::SpherePoint, to a form accepted by ast::Mapping.tran. Each type of endpoint is used for a particular LSST data type, for example:
Point2Endpoint is used for lsst::geom::Point2D data
SpherePointEndpoint for lsst::geom::SpherePoint data
GenericEndpoint is used when no other form will do; its LSST data type is identical to the type used for ast::Mapping.applyForward.
Endpoints use the following forms of data for raw data:
std::vector<double> for a single point
ndarray<double, 2, 2> with dimensions number of axes x number of points for an array of points
Endpoints are designed as helper classes for Transform. Each transform has a two endpoints: one for input data and one for output data.
Endpoint also provides two methods to work with ast::Frames:
normalizeFrame verifies that a frame is the correct type, and adjusts its settings if necessary
makeFrame creates a new frame with the correct type and settings
- Template Parameters
PointT
: LSST data type for one pointArrayT
: LSST data type for an array of points
Public Functions
-
BaseEndpoint
(BaseEndpoint const&)¶
-
BaseEndpoint
(BaseEndpoint&&)¶
-
BaseEndpoint &
operator=
(BaseEndpoint const&)¶
-
BaseEndpoint &
operator=
(BaseEndpoint&&)¶
-
virtual
~BaseEndpoint
()¶
-
int
getNAxes
() const¶
-
virtual int
getNPoints
(Array const &arr) const = 0¶ Return the number of points in an array
-
virtual bool
operator==
(BaseEndpoint const &other) const¶ Determine whether two endpoints represent the same conversion.
- Return
true
iff this object andother
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.
- Parameters
other
: the endpoint to compare
-
bool
operator!=
(BaseEndpoint const &other) const¶ Determine whether two endpoints do not represent the same conversion.
- Return
the inverse of operator==. See that operator’s documentation for important caveats.
-
virtual std::vector<double>
dataFromPoint
(Point const &point) const = 0¶ Get raw data from a single point
- Return
the values in the point as a vector of size NAxess
- Parameters
[in] point
: data for a single point
- Exceptions
lsst::pex::exceptions::InvalidParameterError
: if the point has the wrong number of axes
-
virtual ndarray::Array<double, 2, 2>
dataFromArray
(Array const &arr) const = 0¶ Get raw data from an array of points
- Return
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, …
- Parameters
[in] arr
: Array of points
- Exceptions
lsst::pex::exceptions::InvalidParameterError
: if the array has the wrong nAxes dimension
-
virtual Point
pointFromData
(std::vector<double> const &data) const = 0¶ Get a single point from raw data
- Return
the corresponding point
- Parameters
[in] data
: Data as a vector of length NAxes
-
virtual Array
arrayFromData
(ndarray::Array<double, 2, 2> const &data) const = 0¶ Get an array of points from raw data
- Return
an array of points
- Parameters
[in] data
: Raw 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, …
- Exceptions
lsst::pex::exceptions::InvalidParameterError
: if the array has the wrong nAxes dimension
-
virtual std::shared_ptr<ast::Frame>
makeFrame
() const¶ Create a Frame that can be used with this end point in a Transform
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.
Protected Functions
-
BaseEndpoint
(int nAxes)¶ Construct a BaseEndpoint
- Parameters
[in] nAxes
: The number of axes in a point; must be > 0
- Exceptions
lsst.pex.exceptions.InvalidParameterError
: if nAxes <= 0
-
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¶