Loading [MathJax]/extensions/tex2jax.js
LSST Applications g0fba68d861+aa97b6e50c,g1ec0fe41b4+f536777771,g1fd858c14a+a9301854fb,g35bb328faa+fcb1d3bbc8,g4af146b050+a5c07d5b1d,g4d2262a081+78f4f01b60,g53246c7159+fcb1d3bbc8,g56a49b3a55+9c12191793,g5a012ec0e7+3632fc3ff3,g60b5630c4e+ded28b650d,g67b6fd64d1+ed4b5058f4,g78460c75b0+2f9a1b4bcd,g786e29fd12+cf7ec2a62a,g8352419a5c+fcb1d3bbc8,g87b7deb4dc+7b42cf88bf,g8852436030+e5453db6e6,g89139ef638+ed4b5058f4,g8e3bb8577d+d38d73bdbd,g9125e01d80+fcb1d3bbc8,g94187f82dc+ded28b650d,g989de1cb63+ed4b5058f4,g9d31334357+ded28b650d,g9f33ca652e+50a8019d8c,gabe3b4be73+1e0a283bba,gabf8522325+fa80ff7197,gb1101e3267+d9fb1f8026,gb58c049af0+f03b321e39,gb89ab40317+ed4b5058f4,gcf25f946ba+e5453db6e6,gcf6002c91b+2a0c9e9e84,gd6cbbdb0b4+bb83cc51f8,gdd1046aedd+ded28b650d,gde0f65d7ad+66b3a48cb7,ge278dab8ac+d65b3c2b70,ge410e46f29+ed4b5058f4,gf23fb2af72+b7cae620c0,gf5e32f922b+fcb1d3bbc8,gf67bdafdda+ed4b5058f4,w.2025.16
LSST Data Management Base Package
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
lsst::afw::geom::SpherePointEndpoint Class Referenceabstract

An endpoint for lsst::geom::SpherePoint. More...

#include <Endpoint.h>

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

Public Types

using Array
 
using Point
 

Public Member Functions

 SpherePointEndpoint (SpherePointEndpoint const &)=default
 
 SpherePointEndpoint (SpherePointEndpoint &&)=default
 
SpherePointEndpointoperator= (SpherePointEndpoint const &)=delete
 
SpherePointEndpointoperator= (SpherePointEndpoint &&)=delete
 
 SpherePointEndpoint ()
 Construct a SpherePointEndpoint.
 
 SpherePointEndpoint (int nAxes)
 Construct a SpherePointEndpoint with nAxes specified; nAxes must equal 2.
 
 ~SpherePointEndpoint () override=default
 
std::vector< double > dataFromPoint (Point const &point) const override
 Get raw data from a single point.
 
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.
 
Array arrayFromData (ndarray::Array< double, 2, 2 > const &data) const override
 Get an array of points from raw data.
 
std::shared_ptr< ast::FramemakeFrame () const override
 Create a Frame that can be used with this end point in a Transform.
 
void normalizeFrame (std::shared_ptr< ast::Frame > framePtr) const override
 Check that framePtr points to a SkyFrame and set longitude axis to 0, latitude to 1.
 
int getNPoints (Array const &arr) const override
 Return the number of points in an array.
 
int getNAxes () const
 
virtual bool operator== (BaseEndpoint const &other) const noexcept
 Determine whether two endpoints represent the same conversion.
 
bool operator!= (BaseEndpoint const &other) const noexcept
 Determine whether two endpoints do not represent the same conversion.
 
virtual ndarray::Array< double, 2, 2 > dataFromArray (Array const &arr) const =0
 Get raw data from an array of points.
 

Static Public Member Functions

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

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

An endpoint for lsst::geom::SpherePoint.

A SpherePointEndpoint always has 2 axes: longitude, latitude

Definition at line 315 of file Endpoint.h.

Member Typedef Documentation

◆ Array

Definition at line 197 of file Endpoint.h.

◆ Point

Definition at line 198 of file Endpoint.h.

Constructor & Destructor Documentation

◆ SpherePointEndpoint() [1/4]

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

◆ SpherePointEndpoint() [2/4]

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

◆ SpherePointEndpoint() [3/4]

lsst::afw::geom::SpherePointEndpoint::SpherePointEndpoint ( )
inlineexplicit

Construct a SpherePointEndpoint.

Definition at line 325 of file Endpoint.h.

325: BaseVectorEndpoint(2) {}

◆ SpherePointEndpoint() [4/4]

lsst::afw::geom::SpherePointEndpoint::SpherePointEndpoint ( int nAxes)
explicit

Construct a SpherePointEndpoint with nAxes specified; nAxes must equal 2.

This constructor is primarily used by Transform; other users are encouraged to use the default constructor.

Parameters
[in]nAxesThe number of axes in a point; must equal 2
Exceptions
lsst.pex.exceptions.InvalidParameterErrorif nAxes != 2

Definition at line 169 of file Endpoint.cc.

169 : BaseVectorEndpoint(2) {
170 if (nAxes != 2) {
171 std::ostringstream os;
172 os << "nAxes = " << nAxes << " != 2";
173 throw LSST_EXCEPT(pexExcept::InvalidParameterError, os.str());
174 }
175}
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition Exception.h:48
T str(T... args)

◆ ~SpherePointEndpoint()

lsst::afw::geom::SpherePointEndpoint::~SpherePointEndpoint ( )
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}
Base class for endpoints with Array = std::vector<Point> where Point has 2 dimensions.
Definition Endpoint.h:195

◆ _getNAxes() [1/3]

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

Definition at line 179 of file Endpoint.h.

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

◆ _getNAxes() [2/3]

int lsst::afw::geom::BaseEndpoint< lsst::geom::SpherePoint, std::vector< lsst::geom::SpherePoint > >::_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< lsst::geom::SpherePoint, std::vector< lsst::geom::SpherePoint > >::_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< lsst::geom::SpherePoint, std::vector< lsst::geom::SpherePoint > >::_getNPoints ( ndarray::Array< double, 2, 2 > const & data) const
inlineprotectedinherited

Definition at line 183 of file Endpoint.h.

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

◆ arrayFromData()

std::vector< lsst::geom::SpherePoint > lsst::afw::geom::SpherePointEndpoint::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< lsst::geom::SpherePoint, std::vector< lsst::geom::SpherePoint > >.

Definition at line 205 of file Endpoint.cc.

206 {
207 this->_assertNAxes(this->_getNAxes(data));
208 int const nPoints = this->_getNPoints(data);
209 Array array;
210 array.reserve(nPoints);
211 for (auto const& dataCol : data.transpose()) {
212 array.emplace_back(lsst::geom::SpherePoint(dataCol[0], dataCol[1], lsst::geom::radians));
213 }
214 return array;
215}
int _getNPoints(ndarray::Array< double, 2, 2 > const &data) const
Definition Endpoint.h:183
int _getNAxes(ndarray::Array< double, 2, 2 > const &data) const
Definition Endpoint.h:177
AngleUnit constexpr radians
constant with units of radians
Definition Angle.h:109
data(channels)
Definition test_model.py:17

◆ dataFromArray() [1/2]

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

◆ dataFromArray() [2/2]

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

Definition at line 186 of file Endpoint.cc.

186 {
187 const int nAxes = this->getNAxes();
188 const int nPoints = this->getNPoints(arr);
189 ndarray::Array<double, 2, 2> data = ndarray::allocate(ndarray::makeVector(nAxes, nPoints));
190 auto dataColIter = data.transpose().begin();
191 for (auto const& point : arr) {
192 for (int axInd = 0; axInd < nAxes; ++axInd) {
193 (*dataColIter)[axInd] = point[axInd].asRadians();
194 }
195 ++dataColIter;
196 }
197 return data;
198}

◆ dataFromPoint()

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

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

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

Definition at line 177 of file Endpoint.cc.

177 {
178 const int nAxes = this->getNAxes();
179 std::vector<double> result(nAxes);
180 for (int axInd = 0; axInd < nAxes; ++axInd) {
181 result[axInd] = point[axInd].asRadians();
182 }
183 return result;
184}

◆ getClassPrefix()

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

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

Definition at line 356 of file Endpoint.h.

356{ return "SpherePoint"; };

◆ getNAxes()

Definition at line 79 of file Endpoint.h.

79{ return _nAxes; }

◆ getNPoints()

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

Return the number of points in an array.

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

Definition at line 207 of file Endpoint.cc.

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

◆ makeFrame()

std::shared_ptr< ast::Frame > lsst::afw::geom::SpherePointEndpoint::makeFrame ( ) const
overridevirtual

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

Reimplemented from lsst::afw::geom::BaseEndpoint< lsst::geom::SpherePoint, std::vector< lsst::geom::SpherePoint > >.

Definition at line 217 of file Endpoint.cc.

217 {
219}
T make_shared(T... args)

◆ normalizeFrame()

void lsst::afw::geom::SpherePointEndpoint::normalizeFrame ( std::shared_ptr< ast::Frame > framePtr) const
overridevirtual

Check that framePtr points to a SkyFrame and set longitude axis to 0, latitude to 1.

Reimplemented from lsst::afw::geom::BaseEndpoint< lsst::geom::SpherePoint, std::vector< lsst::geom::SpherePoint > >.

Definition at line 221 of file Endpoint.cc.

221 {
222 // use getCurrentFrame because if framePtr points to a FrameSet we want its current frame
223 auto currentFramePtr = getCurrentFrame(framePtr);
224 auto skyFramePtr = std::dynamic_pointer_cast<ast::SkyFrame>(currentFramePtr);
225 if (!skyFramePtr) {
226 std::ostringstream os;
227 os << "frame is a " << currentFramePtr->getClassName() << ", not a SkyFrame";
228 throw LSST_EXCEPT(pexExcept::InvalidParameterError, os.str());
229 }
230 if (skyFramePtr->getLonAxis() != 1) {
231 // axes are swapped to Lat, Lon; swap them back to the usual Lon, Lat
232 // warning: be sure to call permAxes on the original framePtr argument,
233 // as otherwise it will have no effect if framePtr points to a FrameSet
234 std::vector<int> perm = {2, 1};
235 framePtr->permAxes(perm);
236 }
237}
void permAxes(std::vector< int > perm)
Permute the order in which a Frame's axes occur.
Definition Frame.h:1138
T dynamic_pointer_cast(T... args)

◆ operator!=()

bool lsst::afw::geom::BaseEndpoint< lsst::geom::SpherePoint, std::vector< lsst::geom::SpherePoint > >::operator!= ( BaseEndpoint 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]

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

◆ operator=() [2/2]

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

◆ operator==()

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

lsst::geom::SpherePoint lsst::afw::geom::SpherePointEndpoint::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< lsst::geom::SpherePoint, std::vector< lsst::geom::SpherePoint > >.

Definition at line 200 of file Endpoint.cc.

200 {
201 this->_assertNAxes(this->_getNAxes(data));
202 return lsst::geom::SpherePoint(data[0], data[1], lsst::geom::radians);
203}

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