lsst.geom  15.0-1-g417ea41+6
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))
 Construct an Extent with all elements set to the same scalar value. More...
 
 Extent (EigenVector const &vector)
 Construct an Extent from an Eigen vector. More...
 
 Extent (Point< T, N > const &other)
 Explicit constructor from Point. More...
 
template<typename U >
 Extent (Extent< U, N > const &other)
 Explicit constructor from Extent of different type (if allowed) More...
 
template<typename U >
 Extent (Point< U, N > const &other)
 
 Extent (Extent const &other)
 
 Extent (Extent &&other)
 
 ~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)
 
bool operator== (Extent< T, N > const &other) const
 Standard equality comparison. More...
 
bool operator!= (Extent< T, N > const &other) const
 Standard inequality comparison. More...
 
Point< T, N > asPoint () const
 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
 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
 
CoordinateExpr< N > eq (T scalar) const
 
CoordinateExpr< N > ne (Extent< T, N > const &other) const
 
CoordinateExpr< N > ne (T scalar) const
 
CoordinateExpr< N > lt (Extent< T, N > const &other) const
 
CoordinateExpr< N > lt (T scalar) const
 
CoordinateExpr< N > le (Extent< T, N > const &other) const
 
CoordinateExpr< N > le (T scalar) const
 
CoordinateExpr< N > gt (Extent< T, N > const &other) const
 
CoordinateExpr< N > gt (T scalar) const
 
CoordinateExpr< N > ge (Extent< T, N > const &other) const
 
CoordinateExpr< N > ge (T scalar) const
 
Additive arithmetic operators

No scalar interoperability is provided for Extent additive arithmetic operations.

Point< T, N > operator+ (Point< T, N > const &other) const
 
Extent< T, N > operator+ (Extent< T, N > const &other) const
 
Extent< T, N > operator+ () const
 
Extent< T, N > operator- (Extent< T, N > const &other) const
 
Extent< T, N > operator- () const
 
Extent< T, N > & operator+= (Extent< T, N > const &other)
 
Extent< T, N > & operator-= (Extent< T, N > const &other)
 
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
 
Extent< T, N > & operator*= (T scalar)
 
Extent< T, N > operator/ (T scalar) const
 
Extent< T, N > & operator/= (T scalar)
 

Static Public Attributes

static int const dimensions
 

Protected Member Functions

void _swap (CoordinateBase &other)
 

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))
 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 40 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 193 of file Extent.h.

◆ Element

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

Definition at line 50 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))
inlineexplicit

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

Definition at line 196 of file Extent.h.

◆ Extent() [2/7]

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

Construct an Extent from an Eigen vector.

Definition at line 199 of file Extent.h.

◆ Extent() [3/7]

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

Explicit constructor from Point.

Definition at line 30 of file Extent.cc.

◆ Extent() [4/7]

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

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)
explicit

◆ Extent() [6/7]

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

◆ Extent() [7/7]

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

◆ ~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)
inlineprotectedinherited

Definition at line 89 of file CoordinateBase.h.

◆ asEigen()

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

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 71 of file CoordinateBase.h.

◆ asPoint()

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

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

Definition at line 85 of file Extent.cc.

◆ coeffRef() [1/2]

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

Definition at line 62 of file CoordinateBase.h.

◆ coeffRef() [2/2]

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

Definition at line 63 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 221 of file Extent.h.

◆ 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 218 of file Extent.h.

◆ eq() [1/2]

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

Definition at line 43 of file Extent.cc.

◆ eq() [2/2]

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

Definition at line 105 of file Extent.h.

◆ ge() [1/2]

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

Definition at line 78 of file Extent.cc.

◆ ge() [2/2]

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

Definition at line 110 of file Extent.h.

◆ gt() [1/2]

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

Definition at line 71 of file Extent.cc.

◆ gt() [2/2]

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

Definition at line 109 of file Extent.h.

◆ le() [1/2]

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

Definition at line 64 of file Extent.cc.

◆ le() [2/2]

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

Definition at line 108 of file Extent.h.

◆ lt() [1/2]

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

Definition at line 57 of file Extent.cc.

◆ lt() [2/2]

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

Definition at line 107 of file Extent.h.

◆ ne() [1/2]

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

Definition at line 50 of file Extent.cc.

◆ ne() [2/2]

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

Definition at line 106 of file Extent.h.

◆ operator!=()

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

Standard inequality comparison.

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

Definition at line 84 of file Extent.h.

◆ operator*()

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

Definition at line 144 of file Extent.h.

◆ operator*=()

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

Definition at line 145 of file Extent.h.

◆ operator+() [1/3]

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

Definition at line 90 of file Extent.cc.

◆ operator+() [2/3]

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

Definition at line 120 of file Extent.h.

◆ operator+() [3/3]

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

Definition at line 134 of file Extent.h.

◆ operator+=()

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

Definition at line 126 of file Extent.h.

◆ operator-() [1/2]

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

Definition at line 123 of file Extent.h.

◆ operator-() [2/2]

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

Definition at line 135 of file Extent.h.

◆ operator-=()

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

Definition at line 130 of file Extent.h.

◆ operator/()

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

Definition at line 149 of file Extent.h.

◆ operator/=()

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

Definition at line 150 of file Extent.h.

◆ 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
inlineinherited

Standard equality comparison.

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

Definition at line 77 of file Extent.h.

◆ operator[]() [1/2]

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

Definition at line 60 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 61 of file CoordinateBase.h.

◆ swap()

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

Definition at line 223 of file Extent.h.

◆ toString()

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

Definition at line 159 of file Extent.h.

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.

Member Data Documentation

◆ _vector

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

Definition at line 90 of file CoordinateBase.h.

◆ dimensions

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

Definition at line 51 of file CoordinateBase.h.


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