LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Types | Public Member Functions | List of all members
lsst::geom::polynomials::Function2d< Basis_ > Class Template Reference

A 2-d function defined by a series expansion and its coefficients. More...

#include <Function2d.h>

Public Types

using iterator = double *
 
using const_iterator = double const *
 
using Basis = Basis_
 The basis type used by this function. More...
 
using Workspace = typename Basis::Workspace
 Type returned by makeWorkspace(). More...
 

Public Member Functions

 Function2d (Basis const &basis)
 Construct with zero-valued coefficients. More...
 
 Function2d (Basis const &basis, Eigen::VectorXd const &coefficients)
 Construct with coefficients from an Eigen object. More...
 
template<typename Iterator >
 Function2d (Basis const &basis, Iterator first, Iterator last)
 Construct by copying coefficients from an STL iterator range. More...
 
 Function2d (Function2d const &)=default
 Default copy constructor. More...
 
 Function2d (Function2d &&)=default
 Default move constructor. More...
 
Function2doperator= (Function2d const &)=default
 Default copy assignment. More...
 
Function2doperator= (Function2d &&)=default
 Default move assignment. More...
 
iterator begin ()
 Iterators over coefficients. More...
 
iterator end ()
 
const_iterator cbegin () const
 
const_iterator cend () const
 
const_iterator begin () const
 
const_iterator end () const
 
Basis const & getBasis () const
 Return the associated Basis2d object. More...
 
std::size_t size () const
 Return the number of coefficients. More...
 
Workspace makeWorkspace () const
 Allocate workspace that can be passed to operator() to avoid repeated memory allocations. More...
 
double operator() (geom::Point2D const &point, SumMode mode=SumMode::FAST) const
 Evaluate the function at the given point. More...
 
double operator() (geom::Point2D const &point, Workspace &workspace, SumMode mode=SumMode::FAST) const
 Evaluate the function at the given point. More...
 
double & operator[] (std::size_t n)
 Return the coefficient associated with the nth basis function. More...
 
double const & operator[] (std::size_t n) const
 
auto getCoefficients ()
 Return the coefficient vector as an Eigen matrix-like object. More...
 
auto getCoefficients () const
 
Function2d< typename Basis::Scaled > scaled (Scaling2d const &scaling) const
 Return a new function that applies the given scaling to all points before evaluation. More...
 

Detailed Description

template<typename Basis_>
class lsst::geom::polynomials::Function2d< Basis_ >

A 2-d function defined by a series expansion and its coefficients.

A Function1d combines a Basis2d that defines basis functions \(B_{n}(x, y)\) with a flattened vector of associated coefficients \(a_{n}\). The basis defines the order of coefficients. Evaluating the function computes

\[ \sum_{n}^{n \le N} a_{n} B_{n}(x, y) \]

Definition at line 42 of file Function2d.h.

Member Typedef Documentation

◆ Basis

template<typename Basis_ >
using lsst::geom::polynomials::Function2d< Basis_ >::Basis = Basis_

The basis type used by this function.

Definition at line 49 of file Function2d.h.

◆ const_iterator

template<typename Basis_ >
using lsst::geom::polynomials::Function2d< Basis_ >::const_iterator = double const *

Definition at line 46 of file Function2d.h.

◆ iterator

template<typename Basis_ >
using lsst::geom::polynomials::Function2d< Basis_ >::iterator = double *

Definition at line 45 of file Function2d.h.

◆ Workspace

template<typename Basis_ >
using lsst::geom::polynomials::Function2d< Basis_ >::Workspace = typename Basis::Workspace

Type returned by makeWorkspace().

Definition at line 52 of file Function2d.h.

Constructor & Destructor Documentation

◆ Function2d() [1/5]

template<typename Basis_ >
lsst::geom::polynomials::Function2d< Basis_ >::Function2d ( Basis const &  basis)
inlineexplicit

Construct with zero-valued coefficients.

Definition at line 55 of file Function2d.h.

55  :
56  _basis(basis),
57  _coefficients(Eigen::VectorXd::Zero(basis.size()))
58  {}
table::Key< table::Array< double > > basis
Definition: PsfexPsf.cc:361

◆ Function2d() [2/5]

template<typename Basis_ >
lsst::geom::polynomials::Function2d< Basis_ >::Function2d ( Basis const &  basis,
Eigen::VectorXd const &  coefficients 
)
inlineexplicit

Construct with coefficients from an Eigen object.

Definition at line 61 of file Function2d.h.

61  :
62  _basis(basis),
63  _coefficients(coefficients)
64  {
65  assert(basis.size() == static_cast<std::size_t>(_coefficients.size()));
66  }
ndarray::Array< double const, 2, 2 > coefficients

◆ Function2d() [3/5]

template<typename Basis_ >
template<typename Iterator >
lsst::geom::polynomials::Function2d< Basis_ >::Function2d ( Basis const &  basis,
Iterator  first,
Iterator  last 
)
inlineexplicit

Construct by copying coefficients from an STL iterator range.

Definition at line 70 of file Function2d.h.

70  :
71  _basis(basis),
72  _coefficients(basis.size())
73  {
74  assert(std::distance(first, last) == static_cast<std::ptrdiff_t>(basis.size()));
75  std::copy(first, last, &_coefficients[0]);
76  }
T copy(T... args)
T distance(T... args)

◆ Function2d() [4/5]

template<typename Basis_ >
lsst::geom::polynomials::Function2d< Basis_ >::Function2d ( Function2d< Basis_ > const &  )
default

Default copy constructor.

◆ Function2d() [5/5]

template<typename Basis_ >
lsst::geom::polynomials::Function2d< Basis_ >::Function2d ( Function2d< Basis_ > &&  )
default

Default move constructor.

Member Function Documentation

◆ begin() [1/2]

template<typename Basis_ >
iterator lsst::geom::polynomials::Function2d< Basis_ >::begin ( )
inline

Iterators over coefficients.

Definition at line 92 of file Function2d.h.

92 { return _coefficients.data(); }

◆ begin() [2/2]

template<typename Basis_ >
const_iterator lsst::geom::polynomials::Function2d< Basis_ >::begin ( ) const
inline

Definition at line 96 of file Function2d.h.

96 { return _coefficients.data(); }

◆ cbegin()

template<typename Basis_ >
const_iterator lsst::geom::polynomials::Function2d< Basis_ >::cbegin ( ) const
inline

Definition at line 94 of file Function2d.h.

94 { return _coefficients.data(); }

◆ cend()

template<typename Basis_ >
const_iterator lsst::geom::polynomials::Function2d< Basis_ >::cend ( ) const
inline

Definition at line 95 of file Function2d.h.

95 { return begin() + size(); }
std::size_t size() const
Return the number of coefficients.
Definition: Function2d.h:104
iterator begin()
Iterators over coefficients.
Definition: Function2d.h:92

◆ end() [1/2]

template<typename Basis_ >
iterator lsst::geom::polynomials::Function2d< Basis_ >::end ( )
inline

Definition at line 93 of file Function2d.h.

93 { return begin() + size(); }

◆ end() [2/2]

template<typename Basis_ >
const_iterator lsst::geom::polynomials::Function2d< Basis_ >::end ( ) const
inline

Definition at line 97 of file Function2d.h.

97 { return begin() + size(); }

◆ getBasis()

template<typename Basis_ >
Basis const& lsst::geom::polynomials::Function2d< Basis_ >::getBasis ( ) const
inline

Return the associated Basis2d object.

Definition at line 101 of file Function2d.h.

101 { return _basis; }

◆ getCoefficients() [1/2]

template<typename Basis_ >
auto lsst::geom::polynomials::Function2d< Basis_ >::getCoefficients ( )
inline

Return the coefficient vector as an Eigen matrix-like object.

The exact type of the returned object is unspecified, but it is guaranteed to be a view.

Definition at line 136 of file Function2d.h.

136  {
137  // Return a block view to ensure the caller only modify the values, not the size.
138  return _coefficients.head(size());
139  }

◆ getCoefficients() [2/2]

template<typename Basis_ >
auto lsst::geom::polynomials::Function2d< Basis_ >::getCoefficients ( ) const
inline

Definition at line 140 of file Function2d.h.

140 { return _coefficients.head(size()); }

◆ makeWorkspace()

template<typename Basis_ >
Workspace lsst::geom::polynomials::Function2d< Basis_ >::makeWorkspace ( ) const
inline

Allocate workspace that can be passed to operator() to avoid repeated memory allocations.

Definition at line 107 of file Function2d.h.

107 { return _basis.makeWorkspace(); }

◆ operator()() [1/2]

template<typename Basis_ >
double lsst::geom::polynomials::Function2d< Basis_ >::operator() ( geom::Point2D const &  point,
SumMode  mode = SumMode::FAST 
) const
inline

Evaluate the function at the given point.

Definition at line 110 of file Function2d.h.

110  {
111  return _basis.sumWith(point, _coefficients, mode);
112  }

◆ operator()() [2/2]

template<typename Basis_ >
double lsst::geom::polynomials::Function2d< Basis_ >::operator() ( geom::Point2D const &  point,
Workspace workspace,
SumMode  mode = SumMode::FAST 
) const
inline

Evaluate the function at the given point.

Definition at line 115 of file Function2d.h.

115  {
116  return _basis.sumWith(point, _coefficients, workspace, mode);
117  }

◆ operator=() [1/2]

template<typename Basis_ >
Function2d& lsst::geom::polynomials::Function2d< Basis_ >::operator= ( Function2d< Basis_ > &&  )
default

Default move assignment.

◆ operator=() [2/2]

template<typename Basis_ >
Function2d& lsst::geom::polynomials::Function2d< Basis_ >::operator= ( Function2d< Basis_ > const &  )
default

Default copy assignment.

◆ operator[]() [1/2]

template<typename Basis_ >
double& lsst::geom::polynomials::Function2d< Basis_ >::operator[] ( std::size_t  n)
inline

Return the coefficient associated with the nth basis function.

Caller is responsible for ensuring that the given index is valid.

Definition at line 125 of file Function2d.h.

125 { return begin()[n]; }

◆ operator[]() [2/2]

template<typename Basis_ >
double const& lsst::geom::polynomials::Function2d< Basis_ >::operator[] ( std::size_t  n) const
inline

Definition at line 126 of file Function2d.h.

126 { return begin()[n]; }

◆ scaled()

template<typename Basis_ >
Function2d<typename Basis::Scaled> lsst::geom::polynomials::Function2d< Basis_ >::scaled ( Scaling2d const &  scaling) const
inline

Return a new function that applies the given scaling to all points before evaluation.

Definition at line 144 of file Function2d.h.

144  {
145  return Function2d<typename Basis::Scaled>(getBasis().scaled(scaling), _coefficients);
146  }
table::Key< double > scaling
Basis const & getBasis() const
Return the associated Basis2d object.
Definition: Function2d.h:101
Function2d< typename Basis::Scaled > scaled(Scaling2d const &scaling) const
Return a new function that applies the given scaling to all points before evaluation.
Definition: Function2d.h:144

◆ size()

template<typename Basis_ >
std::size_t lsst::geom::polynomials::Function2d< Basis_ >::size ( ) const
inline

Return the number of coefficients.

Definition at line 104 of file Function2d.h.

104 { return _basis.size(); }

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