LSST Applications g0f08755f38+9c285cab97,g1635faa6d4+13f3999e92,g1653933729+a8ce1bb630,g1a0ca8cf93+bf6eb00ceb,g28da252d5a+0829b12dee,g29321ee8c0+5700dc9eac,g2bbee38e9b+9634bc57db,g2bc492864f+9634bc57db,g2cdde0e794+c2c89b37c4,g3156d2b45e+41e33cbcdc,g347aa1857d+9634bc57db,g35bb328faa+a8ce1bb630,g3a166c0a6a+9634bc57db,g3e281a1b8c+9f2c4e2fc3,g414038480c+077ccc18e7,g41af890bb2+fde0dd39b6,g5fbc88fb19+17cd334064,g781aacb6e4+a8ce1bb630,g80478fca09+55a9465950,g82479be7b0+d730eedb7d,g858d7b2824+9c285cab97,g9125e01d80+a8ce1bb630,g9726552aa6+10f999ec6a,ga5288a1d22+2a84bb7594,gacf8899fa4+c69c5206e8,gae0086650b+a8ce1bb630,gb58c049af0+d64f4d3760,gc28159a63d+9634bc57db,gcf0d15dbbd+4b7d09cae4,gda3e153d99+9c285cab97,gda6a2b7d83+4b7d09cae4,gdaeeff99f8+1711a396fd,ge2409df99d+5e831397f4,ge79ae78c31+9634bc57db,gf0baf85859+147a0692ba,gf3967379c6+41c94011de,gf3fb38a9a8+8f07a9901b,gfb92a5be7c+9c285cab97,w.2024.46
LSST Data Management Base Package
|
A 2-d basis that transforms all input points before evaluating nested basis. More...
#include <ScaledBasis2d.h>
Public Types | |
using | Function = Function2d<ScaledBasis2d> |
A Function2d object that uses this basis. | |
using | Scaled = ScaledBasis2d<Nested> |
The type returned by scale(). | |
using | Workspace = typename Nested::Workspace |
The type returned by makeWorkspace(). | |
using | IndexRange = typename Nested::IndexRange |
The type returned by getIndices(). | |
Public Member Functions | |
ScaledBasis2d (Nested const &nested, Scaling2d const &scaling) | |
Construct a scaled basis from a nested basis and a scaling transform. | |
ScaledBasis2d (std::size_t order, Box2D const &box) | |
Construct a basis that remaps the given box to [-1, 1]x[-1, 1] before evaluating the nested polynomials polynomials. | |
ScaledBasis2d (ScaledBasis2d const &)=default | |
Default copy constructor. | |
ScaledBasis2d (ScaledBasis2d &&)=default | |
Default move constructor. | |
ScaledBasis2d & | operator= (ScaledBasis2d const &)=default |
Default copy assignment. | |
ScaledBasis2d & | operator= (ScaledBasis2d &&)=default |
Default move assignment. | |
Nested const & | getNested () const noexcept |
Return the nested basis. | |
Scaling2d const & | getScaling () const noexcept |
Return the scaling transform. | |
std::size_t | getOrder () const |
Return the order of the basis. | |
std::size_t | size () const |
Return the number of elements in the basis. | |
Scaled | scaled (Scaling2d const &first) const |
Return a scaled basis that delegates to a copy of this . | |
int | index (int x, int y) const |
Return the flattened index of the basis function with the given x and y orders. | |
IndexRange | getIndices () const |
Return a range of iterators that dereference to Index2d. | |
Workspace | makeWorkspace () const |
Allocate a workspace that can be passed to sumWith() and fill() to avoid repeated memory allocations. | |
template<typename Vector > | |
double | sumWith (geom::Point2D const &point, Vector const &coefficients, SumMode mode=SumMode::FAST) const |
Evaluate a basis expansion with the given coefficients. | |
template<typename Vector > | |
double | sumWith (geom::Point2D const &point, Vector const &coefficients, Workspace &workspace, SumMode mode=SumMode::FAST) const |
Evaluate a basis expansion with the given coefficients (external workspace version). | |
template<typename Vector > | |
void | fill (geom::Point2D const &point, Vector &&basis) const |
Evaluate the basis at a given point. | |
template<typename Vector > | |
void | fill (geom::Point2D const &point, Vector &&basis, Workspace &workspace) const |
Evaluate the basis at a given point (external workspace version). | |
A 2-d basis that transforms all input points before evaluating nested basis.
If the nested basis is defined by basis functions \(B_m(x)B_n(y)\), the scaled basis functions are \(B_m(U(x))B_n(V(y))\), where \(U(x)\) and \(V(y)\) together represent the scaling transform.
Both the nested basis and ScaledBasis2d itself are models of the Basis2d concept.
Definition at line 43 of file ScaledBasis2d.h.
using lsst::geom::polynomials::ScaledBasis2d< Nested >::Function = Function2d<ScaledBasis2d> |
A Function2d object that uses this basis.
Definition at line 47 of file ScaledBasis2d.h.
using lsst::geom::polynomials::ScaledBasis2d< Nested >::IndexRange = typename Nested::IndexRange |
The type returned by getIndices().
Definition at line 56 of file ScaledBasis2d.h.
using lsst::geom::polynomials::ScaledBasis2d< Nested >::Scaled = ScaledBasis2d<Nested> |
The type returned by scale().
Definition at line 50 of file ScaledBasis2d.h.
using lsst::geom::polynomials::ScaledBasis2d< Nested >::Workspace = typename Nested::Workspace |
The type returned by makeWorkspace().
Definition at line 53 of file ScaledBasis2d.h.
|
inlineexplicit |
Construct a scaled basis from a nested basis and a scaling transform.
Definition at line 59 of file ScaledBasis2d.h.
|
inline |
Construct a basis that remaps the given box to [-1, 1]x[-1, 1] before evaluating the nested polynomials polynomials.
[in] | order | Maximum order of the basis (inclusive). |
[in] | box | Box to be mapped to [-1, 1]x[-1, 1]. |
This constructor is particularly useful for Chebyshev polynomials, for which most of the special functions of the basis are only active when the domain is limited to [-1, 1].
This signature requires that Nested(order) be a valid constructor.
Definition at line 77 of file ScaledBasis2d.h.
|
default |
Default copy constructor.
|
default |
Default move constructor.
|
inline |
Evaluate the basis at a given point.
[in] | point | Point at which to evaluate the basis functions. |
[out] | basis | Flattened output vector. See Basis1d::fill more information. |
coefficients[n]
does, and provides basic exception safety if it does. Definition at line 186 of file ScaledBasis2d.h.
|
inline |
Evaluate the basis at a given point (external workspace version).
Definition at line 193 of file ScaledBasis2d.h.
|
inline |
Return a range of iterators that dereference to Index2d.
This is the recommended way to interpret the packed coefficients and basis functions utilized by PackedBasis2d; for example,
Definition at line 139 of file ScaledBasis2d.h.
|
inlinenoexcept |
|
inline |
|
inlinenoexcept |
|
inline |
Return the flattened index of the basis function with the given x and y orders.
Definition at line 117 of file ScaledBasis2d.h.
|
inline |
Allocate a workspace that can be passed to sumWith() and fill() to avoid repeated memory allocations.
Definition at line 142 of file ScaledBasis2d.h.
|
default |
Default move assignment.
|
default |
Default copy assignment.
|
inline |
Return a scaled basis that delegates to a copy of this
.
The scaled basis will transform all points by the given scaling before evaluating the basis functions in the same way as this
.
Definition at line 112 of file ScaledBasis2d.h.
|
inline |
|
inline |
Evaluate a basis expansion with the given coefficients.
If the 1-d basis elements are \(B_n(x)\) and the given coefficients are a vector \(a_{p, q}\), this computes
\[ \sum_{p = 0, q = 0}^{p + q \le N} a_{p,q} B_{p}(x) B_{q}(y) \]
[in] | point | Point at which to evaluate the expansion. |
[in] | coefficients | Flattened coefficients vector. See Basis1d::sumWith for more information. |
[in] | mode | Enum indicating the tradeoff to make between speed and numerical precision. |
coefficients[n]
does, and provides the same exception safety as it if it does. Definition at line 163 of file ScaledBasis2d.h.
|
inline |
Evaluate a basis expansion with the given coefficients (external workspace version).
Definition at line 170 of file ScaledBasis2d.h.