LSSTApplications  10.0+286,10.0+36,10.0+46,10.0-2-g4f67435,10.1+152,10.1+37,11.0,11.0+1,11.0-1-g47edd16,11.0-1-g60db491,11.0-1-g7418c06,11.0-2-g04d2804,11.0-2-g68503cd,11.0-2-g818369d,11.0-2-gb8b8ce7
LSSTDataManagementBasePackage
Public Member Functions | Protected Member Functions | Private Types | List of all members
lsst::afw::geom::PointBase< T, N > Class Template Reference

#include <Point.h>

Inheritance diagram for lsst::afw::geom::PointBase< T, N >:
lsst::afw::geom::CoordinateBase< Point< T, N >, T, N > lsst::afw::geom::Point< T, N > lsst::afw::geom::Point< double, 2 > lsst::afw::geom::Point< int, 2 >

Public Member Functions

bool operator== (Point< T, N > const &other) const
 Standard equality comparison. More...
 
bool operator!= (Point< T, N > const &other) const
 Standard inequality comparison. More...
 
Extent< T, N > asExtent () const
 Cast this object to an Extent of the same numeric type and dimensionality. More...
 
void shift (Extent< T, N > const &offset)
 Shift the point by the given offset. More...
 
void scale (double factor)
 
double distanceSquared (PointBase< T, N > const &other) const
 
std::string toString () const
 
Named vectorized 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(point.gt(0))) ...
*

are both ubiquitous and easy to interpret.

CoordinateExpr< N > eq (Point< T, N > const &other) const
 
CoordinateExpr< N > ne (Point< T, N > const &other) const
 
CoordinateExpr< N > lt (Point< T, N > const &other) const
 
CoordinateExpr< N > le (Point< T, N > const &other) const
 
CoordinateExpr< N > gt (Point< T, N > const &other) const
 
CoordinateExpr< N > ge (Point< T, N > const &other) const
 
CoordinateExpr< N > eq (T scalar) const
 
CoordinateExpr< N > ne (T scalar) const
 
CoordinateExpr< N > lt (T scalar) const
 
CoordinateExpr< N > le (T scalar) const
 
CoordinateExpr< N > gt (T scalar) const
 
CoordinateExpr< N > ge (T scalar) const
 
Arithmetic operators

No scalar interoperability is provided for Point arithmetic operations.

Extent< T, N > operator- (Point< T, N > const &other) const
 
Point< T, N > operator+ (Extent< T, N > const &other) const
 
Point< T, N > operator- (Extent< T, N > const &other) const
 
Point< T, N > & operator+= (Extent< T, N > const &other)
 
Point< T, N > & operator-= (Extent< T, N > const &other)
 
- Public Member Functions inherited from lsst::afw::geom::CoordinateBase< Point< T, N >, T, N >
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...
 

Protected Member Functions

 PointBase (T val=static_cast< T >(0))
 
template<typename Vector >
 PointBase (Eigen::MatrixBase< Vector > const &vector)
 
- Protected Member Functions inherited from lsst::afw::geom::CoordinateBase< Point< T, N >, T, N >
 CoordinateBase (T val=static_cast< T >(0))
 Initialize all elements to a scalar. More...
 
 CoordinateBase (Eigen::MatrixBase< Vector > const &vector)
 Initialize all elements from an N-d Eigen vector. More...
 
void _swap (CoordinateBase &other)
 

Private Types

typedef CoordinateBase< Point
< T, N >, T, N > 
Super
 

Additional Inherited Members

- Public Types inherited from lsst::afw::geom::CoordinateBase< Point< T, N >, T, N >
typedef T Element
 
typedef Eigen::Matrix< T, N,
1, Eigen::DontAlign > 
EigenVector
 
- Static Public Attributes inherited from lsst::afw::geom::CoordinateBase< Point< T, N >, T, N >
static int const dimensions
 
- Protected Attributes inherited from lsst::afw::geom::CoordinateBase< Point< T, N >, T, N >
EigenVector _vector
 

Detailed Description

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

Definition at line 39 of file Point.h.

Member Typedef Documentation

template<typename T, int N>
typedef CoordinateBase<Point<T,N>,T,N> lsst::afw::geom::PointBase< T, N >::Super
private

Definition at line 40 of file Point.h.

Constructor & Destructor Documentation

template<typename T, int N>
lsst::afw::geom::PointBase< T, N >::PointBase ( val = static_cast<T>(0))
inlineexplicitprotected

Definition at line 138 of file Point.h.

138 : Super(val) {}
CoordinateBase< Point< T, N >, T, N > Super
Definition: Point.h:40
bool val
template<typename T, int N>
template<typename Vector >
lsst::afw::geom::PointBase< T, N >::PointBase ( Eigen::MatrixBase< Vector > const &  vector)
inlineexplicitprotected

Definition at line 141 of file Point.h.

141 : Super(vector) {}
CoordinateBase< Point< T, N >, T, N > Super
Definition: Point.h:40

Member Function Documentation

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

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

Definition at line 110 of file Point.h.

110 { return Extent<T,N>(static_cast<Point<T,N> const &>(*this)); }
template<typename T, int N>
double lsst::afw::geom::PointBase< T, N >::distanceSquared ( PointBase< T, N > const &  other) const
inline

Definition at line 118 of file Point.h.

118  {
119  // the cast to double is lame but Eigen seems to require they be the same type
120  return (this->asEigen() - other.asEigen()).squaredNorm();
121  }
EigenVector const & asEigen() const
Return a fixed-size Eigen representation of the coordinate object.
template<typename T, int N>
CoordinateExpr<N> lsst::afw::geom::PointBase< T, N >::eq ( Point< T, N > const &  other) const
template<typename T, int N>
CoordinateExpr<N> lsst::afw::geom::PointBase< T, N >::eq ( scalar) const
inline

Definition at line 76 of file Point.h.

76 { return this->eq(Point<T,N>(scalar)); }
CoordinateExpr< N > eq(Point< T, N > const &other) const
template<typename T, int N>
CoordinateExpr<N> lsst::afw::geom::PointBase< T, N >::ge ( Point< T, N > const &  other) const
template<typename T, int N>
CoordinateExpr<N> lsst::afw::geom::PointBase< T, N >::ge ( scalar) const
inline

Definition at line 81 of file Point.h.

81 { return this->ge(Point<T,N>(scalar)); }
CoordinateExpr< N > ge(Point< T, N > const &other) const
template<typename T, int N>
CoordinateExpr<N> lsst::afw::geom::PointBase< T, N >::gt ( Point< T, N > const &  other) const
template<typename T, int N>
CoordinateExpr<N> lsst::afw::geom::PointBase< T, N >::gt ( scalar) const
inline

Definition at line 80 of file Point.h.

80 { return this->gt(Point<T,N>(scalar)); }
CoordinateExpr< N > gt(Point< T, N > const &other) const
template<typename T, int N>
CoordinateExpr<N> lsst::afw::geom::PointBase< T, N >::le ( Point< T, N > const &  other) const
template<typename T, int N>
CoordinateExpr<N> lsst::afw::geom::PointBase< T, N >::le ( scalar) const
inline

Definition at line 79 of file Point.h.

79 { return this->le(Point<T,N>(scalar)); }
CoordinateExpr< N > le(Point< T, N > const &other) const
template<typename T, int N>
CoordinateExpr<N> lsst::afw::geom::PointBase< T, N >::lt ( Point< T, N > const &  other) const
template<typename T, int N>
CoordinateExpr<N> lsst::afw::geom::PointBase< T, N >::lt ( scalar) const
inline

Definition at line 78 of file Point.h.

78 { return this->lt(Point<T,N>(scalar)); }
CoordinateExpr< N > lt(Point< T, N > const &other) const
template<typename T, int N>
CoordinateExpr<N> lsst::afw::geom::PointBase< T, N >::ne ( Point< T, N > const &  other) const
template<typename T, int N>
CoordinateExpr<N> lsst::afw::geom::PointBase< T, N >::ne ( scalar) const
inline

Definition at line 77 of file Point.h.

77 { return this->ne(Point<T,N>(scalar)); }
CoordinateExpr< N > ne(Point< T, N > const &other) const
template<typename T, int N>
bool lsst::afw::geom::PointBase< T, N >::operator!= ( Point< T, N > const &  other) const
inline

Standard inequality comparison.

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

Definition at line 55 of file Point.h.

55 { return any(this->ne(other)); }
bool any(CoordinateExpr< N > const &expr)
Return true if any elements are true.
CoordinateExpr< N > ne(Point< T, N > const &other) const
template<typename T, int N>
Point<T,N> lsst::afw::geom::PointBase< T, N >::operator+ ( Extent< T, N > const &  other) const
inline

Definition at line 93 of file Point.h.

93  {
94  return Point<T,N>(this->_vector + other.asEigen());
95  }
template<typename T, int N>
Point<T,N>& lsst::afw::geom::PointBase< T, N >::operator+= ( Extent< T, N > const &  other)
inline

Definition at line 99 of file Point.h.

99  {
100  this->_vector += other.asEigen();
101  return static_cast<Point<T,N> &>(*this);
102  }
template<typename T, int N>
Extent<T,N> lsst::afw::geom::PointBase< T, N >::operator- ( Point< T, N > const &  other) const
inline

Definition at line 90 of file Point.h.

90  {
91  return Extent<T,N>(this->_vector - other._vector);
92  }
template<typename T, int N>
Point<T,N> lsst::afw::geom::PointBase< T, N >::operator- ( Extent< T, N > const &  other) const
inline

Definition at line 96 of file Point.h.

96  {
97  return Point<T,N>(this->_vector - other.asEigen());
98  }
template<typename T, int N>
Point<T,N>& lsst::afw::geom::PointBase< T, N >::operator-= ( Extent< T, N > const &  other)
inline

Definition at line 103 of file Point.h.

103  {
104  this->_vector -= other.asEigen();
105  return static_cast<Point<T,N> &>(*this);
106  }
template<typename T, int N>
bool lsst::afw::geom::PointBase< T, N >::operator== ( Point< T, N > const &  other) const
inline

Standard equality comparison.

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

Definition at line 48 of file Point.h.

48 { return all(this->eq(other)); }
bool all(CoordinateExpr< N > const &expr)
Return true if all elements are true.
CoordinateExpr< N > eq(Point< T, N > const &other) const
template<typename T, int N>
void lsst::afw::geom::PointBase< T, N >::scale ( double  factor)
inline

Definition at line 116 of file Point.h.

116 { this->_vector *= factor; }
template<typename T, int N>
void lsst::afw::geom::PointBase< T, N >::shift ( Extent< T, N > const &  offset)
inline

Shift the point by the given offset.

Definition at line 113 of file Point.h.

113 { this->_vector += offset.asEigen(); }
template<typename T, int N>
std::string lsst::afw::geom::PointBase< T, N >::toString ( ) const
inline

Definition at line 123 of file Point.h.

123  {
124  std::stringstream out;
125  out << "Point(";
126  for (size_t i = 0; i < N; ++i) {
127  if (i != 0) {
128  out << ",";
129  }
130  out << (*this)[i];
131  }
132  out << ")";
133  return out.str();
134  }

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