LSST Applications g044012fb7c+6976b5ec80,g04a91732dc+88a5fc122b,g07dc498a13+7e3c5f68a2,g114c6a66ad+09472d7a76,g1409bbee79+7e3c5f68a2,g1a7e361dbc+7e3c5f68a2,g1fd858c14a+3a43eabc0e,g35bb328faa+fcb1d3bbc8,g3bd4b5ce2c+2647bb081c,g4e0f332c67+5d362be553,g53246c7159+fcb1d3bbc8,g5477a8d5ce+b19c77c7ae,g58d0cdf3ff+4a2e102ff8,g60b5630c4e+09472d7a76,g623d845a50+09472d7a76,g6f0c2978f1+fcf1c0bcd6,g71fabbc107+09472d7a76,g75b6c65c88+d0b1dc44cc,g78460c75b0+2f9a1b4bcd,g786e29fd12+cf7ec2a62a,g7b71ed6315+fcb1d3bbc8,g8852436030+349c7e81d4,g89139ef638+7e3c5f68a2,g9125e01d80+fcb1d3bbc8,g95236ca021+f7a31438ed,g989de1cb63+7e3c5f68a2,g9f33ca652e+f17d666fbc,gaaedd4e678+7e3c5f68a2,gabe3b4be73+1e0a283bba,gb1101e3267+f870f33517,gb58c049af0+f03b321e39,gc99c83e5f0+76d20ab76d,gcf25f946ba+349c7e81d4,gd0fa69b896+f3a65fa83c,gd6cbbdb0b4+c8606af20c,gde0f65d7ad+5bd27d919f,ge278dab8ac+932305ba37,gfba249425e+fcb1d3bbc8,w.2025.07
LSST Data Management Base Package
Loading...
Searching...
No Matches
lsst::geom::CoordinateBase< Derived, T, 2 > Class Template Reference

Specialization of CoordinateBase for 2 dimensions. More...

#include <CoordinateBase.h>

Public Types

typedef T Element
 
typedef Eigen::Matrix< T, 2, 1, Eigen::DontAlign > EigenVector
 
typedef T Element
 
typedef Eigen::Matrix< T, N, 1, Eigen::DontAlign > EigenVector
 

Public Member Functions

 CoordinateBase (CoordinateBase const &other) noexcept(IS_ELEMENT_NOTHROW_COPYABLE)
 
 CoordinateBase (CoordinateBase &&other) noexcept(IS_ELEMENT_NOTHROW_COPYABLE)
 
CoordinateBaseoperator= (CoordinateBase const &other) noexcept(IS_ELEMENT_NOTHROW_ASSIGNABLE)
 
CoordinateBaseoperator= (CoordinateBase &&other) noexcept(IS_ELEMENT_NOTHROW_ASSIGNABLE)
 
 ~CoordinateBase () noexcept=default
 
T & operator[] (int n)
 
T const & operator[] (int n) const
 
T & coeffRef (int n)
 
T const & coeffRef (int n) const
 
EigenVector const & asEigen () const noexcept(IS_ELEMENT_NOTHROW_COPYABLE)
 Return a fixed-size Eigen representation of the coordinate object.
 
T const & getX () const noexcept
 
T const & getY () const noexcept
 
T & getX () noexcept
 
T & getY () noexcept
 
void setX (T x) noexcept(IS_ELEMENT_NOTHROW_COPYABLE)
 
void setY (T y) noexcept(IS_ELEMENT_NOTHROW_COPYABLE)
 
std::pair< T, T > asPair () const noexcept(IS_ELEMENT_NOTHROW_COPYABLE)
 Return a std::pair representation of the coordinate object.
 
std::tuple< T, T > asTuple () const noexcept(IS_ELEMENT_NOTHROW_COPYABLE)
 Return a std::tuple representation of the coordinate object.
 
 CoordinateBase (CoordinateBase const &other) noexcept(IS_ELEMENT_NOTHROW_COPYABLE)
 
 CoordinateBase (CoordinateBase &&other) noexcept(IS_ELEMENT_NOTHROW_COPYABLE)
 
CoordinateBaseoperator= (CoordinateBase const &other) noexcept(IS_ELEMENT_NOTHROW_ASSIGNABLE)
 
CoordinateBaseoperator= (CoordinateBase &&other) noexcept(IS_ELEMENT_NOTHROW_ASSIGNABLE)
 
 ~CoordinateBase () noexcept=default
 
T & operator[] (int n)
 
T const & operator[] (int n) const
 
T & coeffRef (int n)
 
T const & coeffRef (int n) const
 
EigenVector const & asEigen () const noexcept(IS_ELEMENT_NOTHROW_COPYABLE)
 Return a fixed-size Eigen representation of the coordinate object.
 

Static Public Attributes

static int const dimensions = 2
 
static bool constexpr IS_ELEMENT_NOTHROW_COPYABLE = std::is_nothrow_copy_constructible<T>::value
 
static bool constexpr IS_ELEMENT_NOTHROW_ASSIGNABLE = std::is_nothrow_copy_assignable<T>::value
 
static int const dimensions
 
static bool constexpr IS_ELEMENT_NOTHROW_COPYABLE
 
static bool constexpr IS_ELEMENT_NOTHROW_ASSIGNABLE
 

Protected Member Functions

 CoordinateBase (T val=static_cast< T >(0)) noexcept(IS_ELEMENT_NOTHROW_COPYABLE)
 
template<typename Vector>
 CoordinateBase (Eigen::MatrixBase< Vector > const &vector)
 
void _swap (CoordinateBase &other) noexcept
 
 CoordinateBase (T val=static_cast< T >(0)) noexcept(IS_ELEMENT_NOTHROW_COPYABLE)
 Initialize all elements to a scalar.
 
 CoordinateBase (Eigen::MatrixBase< Vector > const &vector)
 Initialize all elements from an N-d Eigen vector.
 
void _swap (CoordinateBase &other) noexcept
 

Protected Attributes

EigenVector _vector
 
EigenVector _vector
 

Related Symbols

(Note that these are not member symbols.)

bool allclose (CoordinateBase< Derived, T, N > const &a, CoordinateBase< Derived, T, N > const &b, T rtol=static_cast< T >(1E-5), T atol=static_cast< T >(1E-8)) noexcept(std::is_nothrow_copy_constructible< T >::value &&std::is_nothrow_copy_assignable< T >::value)
 Floating-point comparison with tolerance.
 
bool allclose (CoordinateBase< Derived, T, N > const &a, CoordinateBase< Derived, T, N > const &b, T rtol=static_cast< T >(1E-5), T atol=static_cast< T >(1E-8)) noexcept(std::is_nothrow_copy_constructible< T >::value &&std::is_nothrow_copy_assignable< T >::value)
 Floating-point comparison with tolerance.
 

Detailed Description

template<typename Derived, typename T>
class lsst::geom::CoordinateBase< Derived, T, 2 >

Specialization of CoordinateBase for 2 dimensions.

Definition at line 129 of file CoordinateBase.h.

Member Typedef Documentation

◆ EigenVector [1/2]

typedef Eigen::Matrix<T, N, 1, Eigen::DontAlign> lsst::geom::CoordinateBase< Derived, T, N >::EigenVector

Definition at line 59 of file CoordinateBase.h.

◆ EigenVector [2/2]

template<typename Derived, typename T>
typedef Eigen::Matrix<T, 2, 1, Eigen::DontAlign> lsst::geom::CoordinateBase< Derived, T, 2 >::EigenVector

Definition at line 133 of file CoordinateBase.h.

◆ Element [1/2]

typedef T lsst::geom::CoordinateBase< Derived, T, N >::Element

Definition at line 57 of file CoordinateBase.h.

◆ Element [2/2]

template<typename Derived, typename T>
typedef T lsst::geom::CoordinateBase< Derived, T, 2 >::Element

Definition at line 131 of file CoordinateBase.h.

Constructor & Destructor Documentation

◆ CoordinateBase() [1/8]

template<typename Derived, typename T>
lsst::geom::CoordinateBase< Derived, T, 2 >::CoordinateBase ( CoordinateBase< Derived, T, 2 > const & other)
inlinenoexcept

Definition at line 138 of file CoordinateBase.h.

139 : _vector(other._vector) {}
A CRTP base class for coordinate objects.

◆ CoordinateBase() [2/8]

template<typename Derived, typename T>
lsst::geom::CoordinateBase< Derived, T, 2 >::CoordinateBase ( CoordinateBase< Derived, T, 2 > && other)
inlinenoexcept

Definition at line 140 of file CoordinateBase.h.

◆ ~CoordinateBase() [1/2]

template<typename Derived, typename T>
lsst::geom::CoordinateBase< Derived, T, 2 >::~CoordinateBase ( )
defaultnoexcept

◆ CoordinateBase() [3/8]

template<typename Derived, typename T>
lsst::geom::CoordinateBase< Derived, T, 2 >::CoordinateBase ( T val = static_cast<T>(0))
inlineexplicitprotectednoexcept

Definition at line 183 of file CoordinateBase.h.

◆ CoordinateBase() [4/8]

template<typename Derived, typename T>
template<typename Vector>
lsst::geom::CoordinateBase< Derived, T, 2 >::CoordinateBase ( Eigen::MatrixBase< Vector > const & vector)
inlineexplicitprotected

Definition at line 187 of file CoordinateBase.h.

187: _vector(vector) {}

◆ CoordinateBase() [5/8]

lsst::geom::CoordinateBase< Derived, T, N >::CoordinateBase ( CoordinateBase< Derived, T, 2 > const & other)
inlinenoexcept

Definition at line 64 of file CoordinateBase.h.

◆ CoordinateBase() [6/8]

lsst::geom::CoordinateBase< Derived, T, N >::CoordinateBase ( CoordinateBase< Derived, T, 2 > && other)
inlinenoexcept

Definition at line 66 of file CoordinateBase.h.

◆ CoordinateBase() [7/8]

lsst::geom::CoordinateBase< Derived, T, N >::CoordinateBase ( T val = static_cast<T>(0))
inlineexplicitprotectednoexcept

Initialize all elements to a scalar.

A public constructor with the same signature is expected for subclasses.

Definition at line 97 of file CoordinateBase.h.

◆ CoordinateBase() [8/8]

lsst::geom::CoordinateBase< Derived, T, N >::CoordinateBase ( Eigen::MatrixBase< Vector > const & vector)
inlineexplicitprotected

Initialize all elements from an N-d Eigen vector.

A public constructor with the same signature is expected for subclasses.

Definition at line 106 of file CoordinateBase.h.

106: _vector(vector) {}

◆ ~CoordinateBase() [2/2]

lsst::geom::CoordinateBase< Derived, T, N >::~CoordinateBase ( )
defaultnoexcept

Member Function Documentation

◆ _swap() [1/2]

void lsst::geom::CoordinateBase< Derived, T, N >::_swap ( CoordinateBase< Derived, T, 2 > & other)
inlineprotectednoexcept

Definition at line 108 of file CoordinateBase.h.

108{ _vector.swap(other._vector); }

◆ _swap() [2/2]

template<typename Derived, typename T>
void lsst::geom::CoordinateBase< Derived, T, 2 >::_swap ( CoordinateBase< Derived, T, 2 > & other)
inlineprotectednoexcept

Definition at line 188 of file CoordinateBase.h.

188{ _vector.swap(other._vector); }

◆ asEigen() [1/2]

EigenVector const & lsst::geom::CoordinateBase< Derived, T, N >::asEigen ( ) const
inlinenoexcept

Return a fixed-size Eigen representation of the coordinate object.

The fact that this returns by const reference rather than by value should not be considered part of the API; this is merely an optimization enabled by the implementation.

Definition at line 89 of file CoordinateBase.h.

89{ return _vector; }

◆ asEigen() [2/2]

template<typename Derived, typename T>
EigenVector const & lsst::geom::CoordinateBase< Derived, T, 2 >::asEigen ( ) const
inlinenoexcept

Return a fixed-size Eigen representation of the coordinate object.

The fact that this returns by const reference rather than by value should not be considered part of the API; this is merely an optimization enabled by the implementation.

Definition at line 163 of file CoordinateBase.h.

163{ return _vector; }

◆ asPair()

template<typename Derived, typename T>
std::pair< T, T > lsst::geom::CoordinateBase< Derived, T, 2 >::asPair ( ) const
inlinenoexcept

Return a std::pair representation of the coordinate object.

Definition at line 173 of file CoordinateBase.h.

173 {
174 return std::make_pair(_vector.x(), _vector.y());
175 }
T make_pair(T... args)

◆ asTuple()

template<typename Derived, typename T>
std::tuple< T, T > lsst::geom::CoordinateBase< Derived, T, 2 >::asTuple ( ) const
inlinenoexcept

Return a std::tuple representation of the coordinate object.

Definition at line 178 of file CoordinateBase.h.

178 {
179 return std::make_tuple(_vector.x(), _vector.y());
180 }
T make_tuple(T... args)

◆ coeffRef() [1/4]

T & lsst::geom::CoordinateBase< Derived, T, N >::coeffRef ( int n)
inline

Definition at line 80 of file CoordinateBase.h.

80{ return _vector.coeffRef(n); }

◆ coeffRef() [2/4]

template<typename Derived, typename T>
T & lsst::geom::CoordinateBase< Derived, T, 2 >::coeffRef ( int n)
inline

Definition at line 154 of file CoordinateBase.h.

154{ return _vector.coeffRef(n); }

◆ coeffRef() [3/4]

T const & lsst::geom::CoordinateBase< Derived, T, N >::coeffRef ( int n) const
inline

Definition at line 81 of file CoordinateBase.h.

81{ return const_cast<EigenVector&>(_vector).coeffRef(n); }
Eigen::Matrix< T, 2, 1, Eigen::DontAlign > EigenVector

◆ coeffRef() [4/4]

template<typename Derived, typename T>
T const & lsst::geom::CoordinateBase< Derived, T, 2 >::coeffRef ( int n) const
inline

Definition at line 155 of file CoordinateBase.h.

155{ return const_cast<EigenVector&>(_vector).coeffRef(n); }

◆ getX() [1/2]

template<typename Derived, typename T>
T const & lsst::geom::CoordinateBase< Derived, T, 2 >::getX ( ) const
inlinenoexcept

Definition at line 165 of file CoordinateBase.h.

165{ return _vector.x(); }

◆ getX() [2/2]

template<typename Derived, typename T>
T & lsst::geom::CoordinateBase< Derived, T, 2 >::getX ( )
inlinenoexcept

Definition at line 167 of file CoordinateBase.h.

167{ return _vector.x(); }

◆ getY() [1/2]

template<typename Derived, typename T>
T const & lsst::geom::CoordinateBase< Derived, T, 2 >::getY ( ) const
inlinenoexcept

Definition at line 166 of file CoordinateBase.h.

166{ return _vector.y(); }

◆ getY() [2/2]

template<typename Derived, typename T>
T & lsst::geom::CoordinateBase< Derived, T, 2 >::getY ( )
inlinenoexcept

Definition at line 168 of file CoordinateBase.h.

168{ return _vector.y(); }

◆ operator=() [1/4]

CoordinateBase & lsst::geom::CoordinateBase< Derived, T, N >::operator= ( CoordinateBase< Derived, T, 2 > && other)
inlinenoexcept

Definition at line 72 of file CoordinateBase.h.

72 {
74 return *this;
75 }
T move(T... args)

◆ operator=() [2/4]

template<typename Derived, typename T>
CoordinateBase & lsst::geom::CoordinateBase< Derived, T, 2 >::operator= ( CoordinateBase< Derived, T, 2 > && other)
inlinenoexcept

Definition at line 146 of file CoordinateBase.h.

146 {
148 return *this;
149 }

◆ operator=() [3/4]

CoordinateBase & lsst::geom::CoordinateBase< Derived, T, N >::operator= ( CoordinateBase< Derived, T, 2 > const & other)
inlinenoexcept

Definition at line 68 of file CoordinateBase.h.

68 {
70 return *this;
71 }

◆ operator=() [4/4]

template<typename Derived, typename T>
CoordinateBase & lsst::geom::CoordinateBase< Derived, T, 2 >::operator= ( CoordinateBase< Derived, T, 2 > const & other)
inlinenoexcept

Definition at line 142 of file CoordinateBase.h.

142 {
144 return *this;
145 }

◆ operator[]() [1/4]

T & lsst::geom::CoordinateBase< Derived, T, N >::operator[] ( int n)
inline

Definition at line 78 of file CoordinateBase.h.

78{ return _vector[n]; }

◆ operator[]() [2/4]

template<typename Derived, typename T>
T & lsst::geom::CoordinateBase< Derived, T, 2 >::operator[] ( int n)
inline

Definition at line 152 of file CoordinateBase.h.

152{ return _vector[n]; }

◆ operator[]() [3/4]

T const & lsst::geom::CoordinateBase< Derived, T, N >::operator[] ( int n) const
inline

Definition at line 79 of file CoordinateBase.h.

79{ return const_cast<EigenVector&>(_vector)[n]; }

◆ operator[]() [4/4]

template<typename Derived, typename T>
T const & lsst::geom::CoordinateBase< Derived, T, 2 >::operator[] ( int n) const
inline

Definition at line 153 of file CoordinateBase.h.

153{ return const_cast<EigenVector&>(_vector)[n]; }

◆ setX()

template<typename Derived, typename T>
void lsst::geom::CoordinateBase< Derived, T, 2 >::setX ( T x)
inlinenoexcept

Definition at line 169 of file CoordinateBase.h.

169{ _vector.x() = x; }

◆ setY()

template<typename Derived, typename T>
void lsst::geom::CoordinateBase< Derived, T, 2 >::setY ( T y)
inlinenoexcept

Definition at line 170 of file CoordinateBase.h.

170{ _vector.y() = y; }

Friends And Related Symbol Documentation

◆ allclose() [1/2]

bool allclose ( CoordinateBase< Derived, T, N > const & a,
CoordinateBase< Derived, T, N > const & b,
T rtol = static_cast<T>(1E-5),
T atol = static_cast<T>(1E-8) )
related

Floating-point comparison with tolerance.

Interface, naming, and default tolerances matches Numpy.

Definition at line 120 of file CoordinateBase.cc.

32 {
33 Eigen::Array<T, N, 1> diff = (a.asEigen().array() - b.asEigen().array()).abs();
34 Eigen::Array<T, N, 1> rhs = (0.5 * (a.asEigen().array() + b.asEigen().array())).abs();
35 rhs *= rtol;
36 rhs += atol;
37 return (diff <= rhs).all();
38}
EigenVector const & asEigen() const noexcept(IS_ELEMENT_NOTHROW_COPYABLE)
Return a fixed-size Eigen representation of the coordinate object.

◆ allclose() [2/2]

bool allclose ( CoordinateBase< Derived, T, N > const & a,
CoordinateBase< Derived, T, N > const & b,
T rtol = static_cast<T>(1E-5),
T atol = static_cast<T>(1E-8) )
related

Floating-point comparison with tolerance.

Interface, naming, and default tolerances matches Numpy.

Definition at line 120 of file CoordinateBase.cc.

32 {
33 Eigen::Array<T, N, 1> diff = (a.asEigen().array() - b.asEigen().array()).abs();
34 Eigen::Array<T, N, 1> rhs = (0.5 * (a.asEigen().array() + b.asEigen().array())).abs();
35 rhs *= rtol;
36 rhs += atol;
37 return (diff <= rhs).all();
38}

Member Data Documentation

◆ _vector [1/2]

EigenVector lsst::geom::CoordinateBase< Derived, T, N >::_vector
protected

Definition at line 109 of file CoordinateBase.h.

◆ _vector [2/2]

template<typename Derived, typename T>
EigenVector lsst::geom::CoordinateBase< Derived, T, 2 >::_vector
protected

Definition at line 189 of file CoordinateBase.h.

◆ dimensions [1/2]

int const lsst::geom::CoordinateBase< Derived, T, N >::dimensions
static

Definition at line 58 of file CoordinateBase.h.

◆ dimensions [2/2]

template<typename Derived, typename T>
int const lsst::geom::CoordinateBase< Derived, T, 2 >::dimensions = 2
static

Definition at line 132 of file CoordinateBase.h.

◆ IS_ELEMENT_NOTHROW_ASSIGNABLE [1/2]

bool constexpr lsst::geom::CoordinateBase< Derived, T, N >::IS_ELEMENT_NOTHROW_ASSIGNABLE
staticconstexpr

Definition at line 61 of file CoordinateBase.h.

◆ IS_ELEMENT_NOTHROW_ASSIGNABLE [2/2]

template<typename Derived, typename T>
bool constexpr lsst::geom::CoordinateBase< Derived, T, 2 >::IS_ELEMENT_NOTHROW_ASSIGNABLE = std::is_nothrow_copy_assignable<T>::value
staticconstexpr

Definition at line 135 of file CoordinateBase.h.

◆ IS_ELEMENT_NOTHROW_COPYABLE [1/2]

bool constexpr lsst::geom::CoordinateBase< Derived, T, N >::IS_ELEMENT_NOTHROW_COPYABLE
staticconstexpr

Definition at line 60 of file CoordinateBase.h.

◆ IS_ELEMENT_NOTHROW_COPYABLE [2/2]

template<typename Derived, typename T>
bool constexpr lsst::geom::CoordinateBase< Derived, T, 2 >::IS_ELEMENT_NOTHROW_COPYABLE = std::is_nothrow_copy_constructible<T>::value
staticconstexpr

Definition at line 134 of file CoordinateBase.h.


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