Searching...
No Matches
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.

using Workspace = typename Basis::Workspace
Type returned by makeWorkspace().

## Public Member Functions

Function2d (Basis const &basis)
Construct with zero-valued coefficients.

Function2d (Basis const &basis, Eigen::VectorXd const &coefficients)
Construct with coefficients from an Eigen object.

template<typename Iterator >
Function2d (Basis const &basis, Iterator first, Iterator last)
Construct by copying coefficients from an STL iterator range.

Function2d (Function2d const &)=default
Default copy constructor.

Function2d (Function2d &&)=default
Default move constructor.

Function2doperator= (Function2d const &)=default
Default copy assignment.

Function2doperator= (Function2d &&)=default
Default move assignment.

iterator begin ()
Iterators over coefficients.

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.

std::size_t size () const
Return the number of coefficients.

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

double operator() (geom::Point2D const &point, SumMode mode=SumMode::FAST) const
Evaluate the function at the given point.

double operator() (geom::Point2D const &point, Workspace &workspace, SumMode mode=SumMode::FAST) const
Evaluate the function at the given point.

double & operator[] (std::size_t n)
Return the coefficient associated with the nth basis function.

double const & operator[] (std::size_t n) const

auto getCoefficients ()
Return the coefficient vector as an Eigen matrix-like object.

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.

## 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.

## ◆ 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.

## ◆ 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.

## ◆ 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.
139 }

## ◆ getCoefficients() [2/2]

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

Definition at line 140 of file Function2d.h.

## ◆ 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:
• /j/snowflake/release/lsstsw/stack/lsst-scipipe-8.0.0/Linux64/geom/ga1e77700b3+246acaaf9c/include/lsst/geom/polynomials/Function2d.h