LSSTApplications  17.0+124,17.0+14,17.0+73,18.0.0+37,18.0.0+80,18.0.0-4-g68ffd23+4,18.1.0-1-g0001055+12,18.1.0-1-g03d53ef+5,18.1.0-1-g1349e88+55,18.1.0-1-g2505f39+44,18.1.0-1-g5315e5e+4,18.1.0-1-g5e4b7ea+14,18.1.0-1-g7e8fceb+4,18.1.0-1-g85f8cd4+48,18.1.0-1-g8ff0b9f+4,18.1.0-1-ga2c679d+1,18.1.0-1-gd55f500+35,18.1.0-10-gb58edde+2,18.1.0-11-g0997b02+4,18.1.0-13-gfe4edf0b+12,18.1.0-14-g259bd21+21,18.1.0-19-gdb69f3f+2,18.1.0-2-g5f9922c+24,18.1.0-2-gd3b74e5+11,18.1.0-2-gfbf3545+32,18.1.0-26-g728bddb4+5,18.1.0-27-g6ff7ca9+2,18.1.0-3-g52aa583+25,18.1.0-3-g8ea57af+9,18.1.0-3-gb69f684+42,18.1.0-3-gfcaddf3+6,18.1.0-32-gd8786685a,18.1.0-4-gf3f9b77+6,18.1.0-5-g1dd662b+2,18.1.0-5-g6dbcb01+41,18.1.0-6-gae77429+3,18.1.0-7-g9d75d83+9,18.1.0-7-gae09a6d+30,18.1.0-9-gc381ef5+4,w.2019.45
LSSTDataManagementBasePackage
Public Types | Public Member Functions | Static Public Attributes | Protected Member Functions | Protected Attributes | Related Functions | List of all members
lsst::geom::Extent< T, N > Class Template Reference

A coordinate class intended to represent offsets and dimensions. More...

#include <CoordinateBase.h>

Inheritance diagram for lsst::geom::Extent< T, N >:
lsst::geom::ExtentBase< T, N > lsst::geom::CoordinateBase< Extent< T, N >, T, N >

Public Types

typedef Super::EigenVector EigenVector
 
typedef T Element
 

Public Member Functions

 Extent (T val=static_cast< T >(0)) noexcept(Super::IS_ELEMENT_NOTHROW_COPYABLE)
 Construct an Extent with all elements set to the same scalar value. More...
 
 Extent (EigenVector const &vector) noexcept(Super::IS_ELEMENT_NOTHROW_COPYABLE)
 Construct an Extent from an Eigen vector. More...
 
 Extent (Point< T, N > const &other) noexcept(Super::IS_ELEMENT_NOTHROW_COPYABLE)
 Explicit constructor from Point. More...
 
template<typename U >
 Extent (Extent< U, N > const &other) noexcept(IS_NOTHROW_CONVERTIBLE< T, U >)
 Explicit constructor from Extent of different type (if allowed) More...
 
template<typename U >
 Extent (Point< U, N > const &other) noexcept(IS_NOTHROW_CONVERTIBLE< T, U >)
 
 Extent (Extent const &other)=default
 
 Extent (Extent &&other)=default
 
 ~Extent ()=default
 
Extentoperator= (Extent const &other)=default
 
Extentoperator= (Extent &&other)=default
 
computeSquaredNorm () const
 Return the squared L2 norm of the Extent (x^2 + y^2 + ...). More...
 
computeNorm () const
 Return the L2 norm of the Extent (sqrt(x^2 + y^2 + ...)). More...
 
void swap (Extent &other) noexcept
 
bool operator== (Extent< T, N > const &other) const noexcept
 Standard equality comparison. More...
 
bool operator!= (Extent< T, N > const &other) const noexcept
 Standard inequality comparison. More...
 
Point< T, N > asPoint () const noexcept(Super::IS_ELEMENT_NOTHROW_COPYABLE)
 Cast this object to an Extent of the same numeric type and dimensionality. More...
 
std::string toString () const
 
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. More...
 
Named comparison functions

Note that these return CoordinateExpr, not bool.

Unlike most arithmetic and assignment operators, scalar interoperability is provided for comparisons; expressions like

if (all(extent.gt(0))) ...

are both ubiquitous and easy to interpret.

CoordinateExpr< N > eq (Extent< T, N > const &other) const noexcept
 
CoordinateExpr< N > eq (T scalar) const noexcept(Super::IS_ELEMENT_NOTHROW_COPYABLE)
 
CoordinateExpr< N > ne (Extent< T, N > const &other) const noexcept
 
CoordinateExpr< N > ne (T scalar) const noexcept(Super::IS_ELEMENT_NOTHROW_COPYABLE)
 
CoordinateExpr< N > lt (Extent< T, N > const &other) const noexcept
 
CoordinateExpr< N > lt (T scalar) const noexcept(Super::IS_ELEMENT_NOTHROW_COPYABLE)
 
CoordinateExpr< N > le (Extent< T, N > const &other) const noexcept
 
CoordinateExpr< N > le (T scalar) const noexcept(Super::IS_ELEMENT_NOTHROW_COPYABLE)
 
CoordinateExpr< N > gt (Extent< T, N > const &other) const noexcept
 
CoordinateExpr< N > gt (T scalar) const noexcept(Super::IS_ELEMENT_NOTHROW_COPYABLE)
 
CoordinateExpr< N > ge (Extent< T, N > const &other) const noexcept
 
CoordinateExpr< N > ge (T scalar) const noexcept(Super::IS_ELEMENT_NOTHROW_COPYABLE)
 
Additive arithmetic operators

No scalar interoperability is provided for Extent additive arithmetic operations.

Point< T, N > operator+ (Point< T, N > const &other) const noexcept(Super::IS_ELEMENT_NOTHROW_COPYABLE)
 
Extent< T, N > operator+ (Extent< T, N > const &other) const noexcept(Super::IS_ELEMENT_NOTHROW_COPYABLE)
 
Extent< T, N > operator+ () const noexcept(Super::IS_ELEMENT_NOTHROW_COPYABLE)
 
Extent< T, N > operator- (Extent< T, N > const &other) const noexcept(Super::IS_ELEMENT_NOTHROW_COPYABLE)
 
Extent< T, N > operator- () const noexcept(Super::IS_ELEMENT_NOTHROW_COPYABLE)
 
Extent< T, N > & operator+= (Extent< T, N > const &other) noexcept(Super::IS_ELEMENT_NOTHROW_ASSIGNABLE)
 
Extent< T, N > & operator-= (Extent< T, N > const &other) noexcept(Super::IS_ELEMENT_NOTHROW_ASSIGNABLE)
 
Multiplicative arithmetic operators

As usual with matrices and vectors, Extent can be multiplied or divided by a scalar.

Extent< T, N > operator* (T scalar) const noexcept(Super::IS_ELEMENT_NOTHROW_COPYABLE)
 
Extent< T, N > & operator*= (T scalar) noexcept(Super::IS_ELEMENT_NOTHROW_ASSIGNABLE)
 
Extent< T, N > operator/ (T scalar) const noexcept(Super::IS_ELEMENT_NOTHROW_COPYABLE)
 
Extent< T, N > & operator/= (T scalar) noexcept(Super::IS_ELEMENT_NOTHROW_ASSIGNABLE)
 

Static Public Attributes

static int const dimensions
 
static bool constexpr IS_ELEMENT_NOTHROW_COPYABLE
 
static bool constexpr IS_ELEMENT_NOTHROW_ASSIGNABLE
 

Protected Member Functions

void _swap (CoordinateBase &other) noexcept
 

Protected Attributes

EigenVector _vector
 

Related Functions

(Note that these are not member functions.)

bool allclose (CoordinateBase< Extent< T, N >, T, N > const &a, CoordinateBase< Extent< T, N >, 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. More...
 

Detailed Description

template<typename T, int N>
class lsst::geom::Extent< T, N >

A coordinate class intended to represent offsets and dimensions.

Much of the functionality of Extent is provided by its CRTP base class, ExtentBase.

See Operators on Point and Extent for mathematical operators on Extent.

Definition at line 41 of file CoordinateBase.h.

Member Typedef Documentation

◆ EigenVector

template<typename T, int N>
typedef Super::EigenVector lsst::geom::Extent< T, N >::EigenVector

Definition at line 214 of file Extent.h.

◆ Element

typedef T lsst::geom::CoordinateBase< Extent< T, N > , T, N >::Element
inherited

Definition at line 56 of file CoordinateBase.h.

Constructor & Destructor Documentation

◆ Extent() [1/7]

template<typename T, int N>
lsst::geom::Extent< T, N >::Extent ( val = static_cast<T>(0))
inlineexplicitnoexcept

Construct an Extent with all elements set to the same scalar value.

Definition at line 217 of file Extent.h.

217 : Super(val) {}
ImageT val
Definition: CR.cc:146

◆ Extent() [2/7]

template<typename T, int N>
lsst::geom::Extent< T, N >::Extent ( EigenVector const &  vector)
inlineexplicitnoexcept

Construct an Extent from an Eigen vector.

Definition at line 220 of file Extent.h.

220 : Super(vector) {}

◆ Extent() [3/7]

template<typename T, int N>
lsst::geom::Extent< T, N >::Extent ( Point< T, N > const &  other)
explicitnoexcept

Explicit constructor from Point.

Definition at line 31 of file Extent.cc.

32  : Super(other.asEigen()) {}
ItemVariant const * other
Definition: Schema.cc:56

◆ Extent() [4/7]

template<typename T, int N>
template<typename U >
lsst::geom::Extent< T, N >::Extent ( Extent< U, N > const &  other)
explicitnoexcept

Explicit constructor from Extent of different type (if allowed)

◆ Extent() [5/7]

template<typename T, int N>
template<typename U >
lsst::geom::Extent< T, N >::Extent ( Point< U, N > const &  other)
explicitnoexcept

◆ Extent() [6/7]

template<typename T, int N>
lsst::geom::Extent< T, N >::Extent ( Extent< T, N > const &  other)
default

◆ Extent() [7/7]

template<typename T, int N>
lsst::geom::Extent< T, N >::Extent ( Extent< T, N > &&  other)
default

◆ ~Extent()

template<typename T, int N>
lsst::geom::Extent< T, N >::~Extent ( )
default

Member Function Documentation

◆ _swap()

void lsst::geom::CoordinateBase< Extent< T, N > , T, N >::_swap ( CoordinateBase< Extent< T, N >, T, N > &  other)
inlineprotectednoexceptinherited

Definition at line 108 of file CoordinateBase.h.

108 { _vector.swap(other._vector); }
ItemVariant const * other
Definition: Schema.cc:56

◆ asEigen()

EigenVector const& lsst::geom::CoordinateBase< Extent< T, N > , T, N >::asEigen ( ) const
inlinenoexceptinherited

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.

◆ asPoint()

template<typename T , int N>
Point< T, N > lsst::geom::ExtentBase< T, N >::asPoint ( ) const
noexceptinherited

Cast this object to an Extent of the same numeric type and dimensionality.

Definition at line 89 of file Extent.cc.

89  {
90  return Point<T, N>(static_cast<Extent<T, N> const &>(*this));
91 }

◆ coeffRef() [1/2]

T& lsst::geom::CoordinateBase< Extent< T, N > , T, N >::coeffRef ( int  n)
inlineinherited

Definition at line 80 of file CoordinateBase.h.

80 { return _vector.coeffRef(n); }

◆ coeffRef() [2/2]

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

Definition at line 81 of file CoordinateBase.h.

◆ computeNorm()

template<typename T, int N>
T lsst::geom::Extent< T, N >::computeNorm ( ) const
inline

Return the L2 norm of the Extent (sqrt(x^2 + y^2 + ...)).

Definition at line 243 of file Extent.h.

243 { return this->asEigen().norm(); }
EigenVector const & asEigen() const noexcept(IS_ELEMENT_NOTHROW_COPYABLE)
Return a fixed-size Eigen representation of the coordinate object.

◆ computeSquaredNorm()

template<typename T, int N>
T lsst::geom::Extent< T, N >::computeSquaredNorm ( ) const
inline

Return the squared L2 norm of the Extent (x^2 + y^2 + ...).

Definition at line 240 of file Extent.h.

240 { return this->asEigen().squaredNorm(); }
EigenVector const & asEigen() const noexcept(IS_ELEMENT_NOTHROW_COPYABLE)
Return a fixed-size Eigen representation of the coordinate object.

◆ eq() [1/2]

template<typename T, int N>
CoordinateExpr< N > lsst::geom::ExtentBase< T, N >::eq ( Extent< T, N > const &  other) const
noexceptinherited

Definition at line 47 of file Extent.cc.

47  {
48  CoordinateExpr<N> r;
49  for (int n = 0; n < N; ++n) r[n] = this->_vector[n] == other[n];
50  return r;
51 }
ItemVariant const * other
Definition: Schema.cc:56

◆ eq() [2/2]

template<typename T, int N>
CoordinateExpr<N> lsst::geom::ExtentBase< T, N >::eq ( scalar) const
inlinenoexceptinherited

Definition at line 105 of file Extent.h.

105  {
106  return this->eq(Extent<T, N>(scalar));
107  }
CoordinateExpr< N > eq(Extent< T, N > const &other) const noexcept
Definition: Extent.cc:47

◆ ge() [1/2]

template<typename T, int N>
CoordinateExpr< N > lsst::geom::ExtentBase< T, N >::ge ( Extent< T, N > const &  other) const
noexceptinherited

Definition at line 82 of file Extent.cc.

82  {
83  CoordinateExpr<N> r;
84  for (int n = 0; n < N; ++n) r[n] = this->_vector[n] >= other[n];
85  return r;
86 }
ItemVariant const * other
Definition: Schema.cc:56

◆ ge() [2/2]

template<typename T, int N>
CoordinateExpr<N> lsst::geom::ExtentBase< T, N >::ge ( scalar) const
inlinenoexceptinherited

Definition at line 120 of file Extent.h.

120  {
121  return this->ge(Extent<T, N>(scalar));
122  }
CoordinateExpr< N > ge(Extent< T, N > const &other) const noexcept
Definition: Extent.cc:82

◆ gt() [1/2]

template<typename T, int N>
CoordinateExpr< N > lsst::geom::ExtentBase< T, N >::gt ( Extent< T, N > const &  other) const
noexceptinherited

Definition at line 75 of file Extent.cc.

75  {
76  CoordinateExpr<N> r;
77  for (int n = 0; n < N; ++n) r[n] = this->_vector[n] > other[n];
78  return r;
79 }
ItemVariant const * other
Definition: Schema.cc:56

◆ gt() [2/2]

template<typename T, int N>
CoordinateExpr<N> lsst::geom::ExtentBase< T, N >::gt ( scalar) const
inlinenoexceptinherited

Definition at line 117 of file Extent.h.

117  {
118  return this->gt(Extent<T, N>(scalar));
119  }
CoordinateExpr< N > gt(Extent< T, N > const &other) const noexcept
Definition: Extent.cc:75

◆ le() [1/2]

template<typename T, int N>
CoordinateExpr< N > lsst::geom::ExtentBase< T, N >::le ( Extent< T, N > const &  other) const
noexceptinherited

Definition at line 68 of file Extent.cc.

68  {
69  CoordinateExpr<N> r;
70  for (int n = 0; n < N; ++n) r[n] = this->_vector[n] <= other[n];
71  return r;
72 }
ItemVariant const * other
Definition: Schema.cc:56

◆ le() [2/2]

template<typename T, int N>
CoordinateExpr<N> lsst::geom::ExtentBase< T, N >::le ( scalar) const
inlinenoexceptinherited

Definition at line 114 of file Extent.h.

114  {
115  return this->le(Extent<T, N>(scalar));
116  }
CoordinateExpr< N > le(Extent< T, N > const &other) const noexcept
Definition: Extent.cc:68

◆ lt() [1/2]

template<typename T, int N>
CoordinateExpr< N > lsst::geom::ExtentBase< T, N >::lt ( Extent< T, N > const &  other) const
noexceptinherited

Definition at line 61 of file Extent.cc.

61  {
62  CoordinateExpr<N> r;
63  for (int n = 0; n < N; ++n) r[n] = this->_vector[n] < other[n];
64  return r;
65 }
ItemVariant const * other
Definition: Schema.cc:56

◆ lt() [2/2]

template<typename T, int N>
CoordinateExpr<N> lsst::geom::ExtentBase< T, N >::lt ( scalar) const
inlinenoexceptinherited

Definition at line 111 of file Extent.h.

111  {
112  return this->lt(Extent<T, N>(scalar));
113  }
CoordinateExpr< N > lt(Extent< T, N > const &other) const noexcept
Definition: Extent.cc:61

◆ ne() [1/2]

template<typename T, int N>
CoordinateExpr< N > lsst::geom::ExtentBase< T, N >::ne ( Extent< T, N > const &  other) const
noexceptinherited

Definition at line 54 of file Extent.cc.

54  {
55  CoordinateExpr<N> r;
56  for (int n = 0; n < N; ++n) r[n] = this->_vector[n] != other[n];
57  return r;
58 }
ItemVariant const * other
Definition: Schema.cc:56

◆ ne() [2/2]

template<typename T, int N>
CoordinateExpr<N> lsst::geom::ExtentBase< T, N >::ne ( scalar) const
inlinenoexceptinherited

Definition at line 108 of file Extent.h.

108  {
109  return this->ne(Extent<T, N>(scalar));
110  }
CoordinateExpr< N > ne(Extent< T, N > const &other) const noexcept
Definition: Extent.cc:54

◆ operator!=()

template<typename T, int N>
bool lsst::geom::ExtentBase< T, N >::operator!= ( Extent< T, N > const &  other) const
inlinenoexceptinherited

Standard inequality comparison.

Returns true iff any(this->ne(other));

Definition at line 84 of file Extent.h.

84 { return any(this->ne(other)); }
CoordinateExpr< N > ne(Extent< T, N > const &other) const noexcept
Definition: Extent.cc:54
ItemVariant const * other
Definition: Schema.cc:56
bool any(CoordinateExpr< N > const &expr) noexcept
Return true if any elements are true.

◆ operator*()

template<typename T, int N>
Extent<T, N> lsst::geom::ExtentBase< T, N >::operator* ( scalar) const
inlinenoexceptinherited

Definition at line 160 of file Extent.h.

160  {
161  return Extent<T, N>(this->_vector * scalar);
162  }

◆ operator*=()

template<typename T, int N>
Extent<T, N>& lsst::geom::ExtentBase< T, N >::operator*= ( scalar)
inlinenoexceptinherited

Definition at line 163 of file Extent.h.

163  {
164  this->_vector *= scalar;
165  return static_cast<Extent<T, N> &>(*this);
166  }

◆ operator+() [1/3]

template<typename T, int N>
Point< T, N > lsst::geom::ExtentBase< T, N >::operator+ ( Point< T, N > const &  other) const
noexceptinherited

Definition at line 94 of file Extent.cc.

95  {
96  return Point<T, N>(this->_vector + other.asEigen());
97 }
ItemVariant const * other
Definition: Schema.cc:56

◆ operator+() [2/3]

template<typename T, int N>
Extent<T, N> lsst::geom::ExtentBase< T, N >::operator+ ( Extent< T, N > const &  other) const
inlinenoexceptinherited

Definition at line 132 of file Extent.h.

132  {
133  return Extent<T, N>(this->_vector + other._vector);
134  }
ItemVariant const * other
Definition: Schema.cc:56

◆ operator+() [3/3]

template<typename T, int N>
Extent<T, N> lsst::geom::ExtentBase< T, N >::operator+ ( ) const
inlinenoexceptinherited

Definition at line 146 of file Extent.h.

146  {
147  return static_cast<Extent<T, N> const &>(*this);
148  }

◆ operator+=()

template<typename T, int N>
Extent<T, N>& lsst::geom::ExtentBase< T, N >::operator+= ( Extent< T, N > const &  other)
inlinenoexceptinherited

Definition at line 138 of file Extent.h.

138  {
139  this->_vector += other._vector;
140  return static_cast<Extent<T, N> &>(*this);
141  }
ItemVariant const * other
Definition: Schema.cc:56

◆ operator-() [1/2]

template<typename T, int N>
Extent<T, N> lsst::geom::ExtentBase< T, N >::operator- ( Extent< T, N > const &  other) const
inlinenoexceptinherited

Definition at line 135 of file Extent.h.

135  {
136  return Extent<T, N>(this->_vector - other._vector);
137  }
ItemVariant const * other
Definition: Schema.cc:56

◆ operator-() [2/2]

template<typename T, int N>
Extent<T, N> lsst::geom::ExtentBase< T, N >::operator- ( ) const
inlinenoexceptinherited

Definition at line 149 of file Extent.h.

149  {
150  return Extent<T, N>(-this->_vector);
151  }

◆ operator-=()

template<typename T, int N>
Extent<T, N>& lsst::geom::ExtentBase< T, N >::operator-= ( Extent< T, N > const &  other)
inlinenoexceptinherited

Definition at line 142 of file Extent.h.

142  {
143  this->_vector -= other._vector;
144  return static_cast<Extent<T, N> &>(*this);
145  }
ItemVariant const * other
Definition: Schema.cc:56

◆ operator/()

template<typename T, int N>
Extent<T, N> lsst::geom::ExtentBase< T, N >::operator/ ( scalar) const
inlinenoexceptinherited

Definition at line 167 of file Extent.h.

167  {
168  return Extent<T, N>(this->_vector / scalar);
169  }

◆ operator/=()

template<typename T, int N>
Extent<T, N>& lsst::geom::ExtentBase< T, N >::operator/= ( scalar)
inlinenoexceptinherited

Definition at line 170 of file Extent.h.

170  {
171  this->_vector /= scalar;
172  return static_cast<Extent<T, N> &>(*this);
173  }

◆ operator=() [1/2]

template<typename T, int N>
Extent& lsst::geom::Extent< T, N >::operator= ( Extent< T, N > const &  other)
default

◆ operator=() [2/2]

template<typename T, int N>
Extent& lsst::geom::Extent< T, N >::operator= ( Extent< T, N > &&  other)
default

◆ operator==()

template<typename T, int N>
bool lsst::geom::ExtentBase< T, N >::operator== ( Extent< T, N > const &  other) const
inlinenoexceptinherited

Standard equality comparison.

Returns true iff all(this->eq(other));

Definition at line 77 of file Extent.h.

77 { return all(this->eq(other)); }
ItemVariant const * other
Definition: Schema.cc:56
bool all(CoordinateExpr< N > const &expr) noexcept
Return true if all elements are true.
CoordinateExpr< N > eq(Extent< T, N > const &other) const noexcept
Definition: Extent.cc:47

◆ operator[]() [1/2]

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

Definition at line 78 of file CoordinateBase.h.

◆ operator[]() [2/2]

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

Definition at line 79 of file CoordinateBase.h.

79 { return const_cast<EigenVector&>(_vector)[n]; }
Eigen::Matrix< T, N, 1, Eigen::DontAlign > EigenVector

◆ swap()

template<typename T, int N>
void lsst::geom::Extent< T, N >::swap ( Extent< T, N > &  other)
inlinenoexcept

Definition at line 245 of file Extent.h.

245 { this->_swap(other); }
ItemVariant const * other
Definition: Schema.cc:56
void _swap(CoordinateBase &other) noexcept

◆ toString()

template<typename T, int N>
std::string lsst::geom::ExtentBase< T, N >::toString ( ) const
inlineinherited

Definition at line 179 of file Extent.h.

179  {
180  std::stringstream out;
181  out << "Extent(";
182  for (size_t i = 0; i < N; ++i) {
183  if (i != 0) {
184  out << ",";
185  }
186  out << (*this)[i];
187  }
188  out << ")";
189  return out.str();
190  }
T str(T... args)

Friends And Related Function Documentation

◆ allclose()

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

Floating-point comparison with tolerance.

Interface, naming, and default tolerances matches Numpy.

Definition at line 30 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 }
T atol(T... args)
Angle abs(Angle const &a)
Definition: Angle.h:106
table::Key< int > b
table::Key< int > a

Member Data Documentation

◆ _vector

EigenVector lsst::geom::CoordinateBase< Extent< T, N > , T, N >::_vector
protectedinherited

Definition at line 109 of file CoordinateBase.h.

◆ dimensions

int const lsst::geom::CoordinateBase< Extent< T, N > , T, N >::dimensions
staticinherited

Definition at line 58 of file CoordinateBase.h.

◆ IS_ELEMENT_NOTHROW_ASSIGNABLE

bool constexpr lsst::geom::CoordinateBase< Extent< T, N > , T, N >::IS_ELEMENT_NOTHROW_ASSIGNABLE
staticinherited

Definition at line 61 of file CoordinateBase.h.

◆ IS_ELEMENT_NOTHROW_COPYABLE

bool constexpr lsst::geom::CoordinateBase< Extent< T, N > , T, N >::IS_ELEMENT_NOTHROW_COPYABLE
staticinherited

Definition at line 60 of file CoordinateBase.h.


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