LSST Applications g044012fb7c+304891ab8a,g04a91732dc+4e1b87f259,g07dc498a13+f701f15b83,g114c6a66ad+c7887c1284,g1409bbee79+f701f15b83,g1a7e361dbc+f701f15b83,g1fd858c14a+6ebd102b59,g35bb328faa+0eb18584fe,g3bd4b5ce2c+e83bf4edc8,g4e0f332c67+976ceb6bc8,g53246c7159+0eb18584fe,g5477a8d5ce+51234355ef,g60b5630c4e+c7887c1284,g623d845a50+c7887c1284,g6f0c2978f1+98123c34b6,g71fabbc107+c7887c1284,g75b6c65c88+ce466f4385,g78460c75b0+85633614c8,g786e29fd12+02b9b86fc9,g8852436030+cfe5cf5b7b,g89139ef638+f701f15b83,g9125e01d80+0eb18584fe,g95236ca021+d4f98599f0,g974caa22f6+0eb18584fe,g989de1cb63+f701f15b83,g9f33ca652e+b4908f5dcd,gaaedd4e678+f701f15b83,gabe3b4be73+543c3c03c9,gace736f484+07e57cea59,gb1101e3267+487fd1b06d,gb58c049af0+492386d360,gc99c83e5f0+a513197d39,gcf25f946ba+cfe5cf5b7b,gd0fa69b896+babbe6e5fe,gd6cbbdb0b4+3fef02d88a,gde0f65d7ad+e8379653a2,ge278dab8ac+ae64226a64,gfba249425e+0eb18584fe,w.2025.07
LSST Data Management Base Package
Loading...
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 30 of file ScaledBasis2d.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:365

◆ 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(); }
iterator begin()
Iterators over coefficients.
Definition Function2d.h:92
std::size_t size() const
Return the number of coefficients.
Definition Function2d.h:104

◆ 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 {
146 }
table::Key< double > scaling
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
Function2d(Basis const &basis)
Construct with zero-valued coefficients.
Definition Function2d.h:55
Basis const & getBasis() const
Return the associated Basis2d object.
Definition Function2d.h:101

◆ 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 files: