lsst.geom
g19811a7679+d02280c829
Toggle main menu visibility
Loading...
Searching...
No Matches
include
lsst
geom
polynomials
ScaledBasis1d.h
Go to the documentation of this file.
1
// -*- LSST-C++ -*-
2
/*
3
* Developed for the LSST Data Management System.
4
* This product includes software developed by the LSST Project
5
* (https://www.lsst.org).
6
* See the COPYRIGHT file at the top-level directory of this distribution
7
* for details of code ownership.
8
*
9
* This program is free software: you can redistribute it and/or modify
10
* it under the terms of the GNU General Public License as published by
11
* the Free Software Foundation, either version 3 of the License, or
12
* (at your option) any later version.
13
*
14
* This program is distributed in the hope that it will be useful,
15
* but WITHOUT ANY WARRANTY; without even the implied warranty of
16
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17
* GNU General Public License for more details.
18
*
19
* You should have received a copy of the GNU General Public License
20
* along with this program. If not, see <https://www.gnu.org/licenses/>.
21
*/
22
#ifndef LSST_AFW_MATH_POLYNOMIALS_ScaledBasis1d_h_INCLUDED
23
#define LSST_AFW_MATH_POLYNOMIALS_ScaledBasis1d_h_INCLUDED
24
25
#include "
lsst/geom/polynomials/SafeSum.h
"
26
#include "
lsst/geom/polynomials/Scaling1d.h
"
27
28
namespace
lsst
{
namespace
geom
{
namespace
polynomials
{
29
30
template
<
typename
Basis>
31
class
Function1d
;
32
43
template
<
typename
Nested>
44
class
ScaledBasis1d
{
45
public
:
46
48
using
Function
=
Function1d<ScaledBasis1d>
;
49
51
using
Scaled
=
ScaledBasis1d<Nested>
;
52
54
explicit
ScaledBasis1d
(Nested
const
& nested,
Scaling1d
const
& scaling) :
55
_nested(nested),
56
_scaling(scaling)
57
{}
58
73
ScaledBasis1d
(
std::size_t
order,
double
min,
double
max) :
74
_nested(order),
75
_scaling(
makeUnitRangeScaling1d
(min, max))
76
{}
77
79
ScaledBasis1d
(
ScaledBasis1d
const
&) =
default
;
80
82
ScaledBasis1d
(
ScaledBasis1d
&&) =
default
;
83
85
ScaledBasis1d
&
operator=
(
ScaledBasis1d
const
&) =
default
;
86
88
ScaledBasis1d
&
operator=
(
ScaledBasis1d
&&) =
default
;
89
91
Nested
const
&
getNested
() const noexcept {
return
_nested; }
92
94
Scaling1d
const
&
getScaling
() const noexcept {
return
_scaling; }
95
97
std::size_t
getOrder
()
const
{
return
getNested
().getOrder(); }
98
100
std::size_t
size
()
const
{
return
getNested
().size(); }
101
108
Scaled
scaled
(
Scaling1d
const
& first)
const
{
109
return
getNested
().
scaled
(first.
then
(
getScaling
()));
110
}
111
130
template
<
typename
Vector>
131
double
sumWith
(
double
x, Vector
const
& coefficients,
SumMode
mode=
SumMode::FAST
)
const
{
132
return
getNested
().sumWith(
getScaling
().applyForward(x), coefficients, mode);
133
}
134
145
template
<
typename
Vector>
146
void
fill
(
double
x, Vector && basis)
const
{
147
return
getNested
().fill(
getScaling
().applyForward(x),
std::forward<Vector>
(basis));
148
}
149
150
private
:
151
Nested _nested;
152
Scaling1d
_scaling;
153
};
154
155
}}}
// namespace lsst::geom::polynomials
156
157
#endif
// !LSST_AFW_MATH_POLYNOMIALS_ScaledBasis1d_h_INCLUDED
SafeSum.h
Scaling1d.h
lsst::geom::polynomials::Function1d
A 1-d function defined by a series expansion and its coefficients.
Definition
Function1d.h:42
lsst::geom::polynomials::ScaledBasis1d< Chebyshev1Basis1d >::Function
Function1d< ScaledBasis1d > Function
Definition
ScaledBasis1d.h:48
lsst::geom::polynomials::ScaledBasis1d::getScaling
Scaling1d const & getScaling() const noexcept
Return the scaling transform.
Definition
ScaledBasis1d.h:94
lsst::geom::polynomials::ScaledBasis1d::operator=
ScaledBasis1d & operator=(ScaledBasis1d &&)=default
Default move assignment.
lsst::geom::polynomials::ScaledBasis1d::ScaledBasis1d
ScaledBasis1d(std::size_t order, double min, double max)
Construct a basis that remaps the given interval to [-1, 1] before evaluating the nested basis.
Definition
ScaledBasis1d.h:73
lsst::geom::polynomials::ScaledBasis1d::fill
void fill(double x, Vector &&basis) const
Evaluate the basis at a given point.
Definition
ScaledBasis1d.h:146
lsst::geom::polynomials::ScaledBasis1d::getNested
Nested const & getNested() const noexcept
Return the nested basis.
Definition
ScaledBasis1d.h:91
lsst::geom::polynomials::ScaledBasis1d::ScaledBasis1d
ScaledBasis1d(ScaledBasis1d const &)=default
Default copy constructor.
lsst::geom::polynomials::ScaledBasis1d::ScaledBasis1d
ScaledBasis1d(Nested const &nested, Scaling1d const &scaling)
Construct a scaled basis from a nested basis and a scaling transform.
Definition
ScaledBasis1d.h:54
lsst::geom::polynomials::ScaledBasis1d::scaled
Scaled scaled(Scaling1d const &first) const
Return a further-scaled basis with the same order.
Definition
ScaledBasis1d.h:108
lsst::geom::polynomials::ScaledBasis1d< Chebyshev1Basis1d >::Scaled
ScaledBasis1d< Chebyshev1Basis1d > Scaled
Definition
ScaledBasis1d.h:51
lsst::geom::polynomials::ScaledBasis1d::size
std::size_t size() const
Return the number of elements in the basis.
Definition
ScaledBasis1d.h:100
lsst::geom::polynomials::ScaledBasis1d::sumWith
double sumWith(double x, Vector const &coefficients, SumMode mode=SumMode::FAST) const
Evaluate a basis expansion with the given coefficients.
Definition
ScaledBasis1d.h:131
lsst::geom::polynomials::ScaledBasis1d::getOrder
std::size_t getOrder() const
Return the order of the basis.
Definition
ScaledBasis1d.h:97
lsst::geom::polynomials::ScaledBasis1d::operator=
ScaledBasis1d & operator=(ScaledBasis1d const &)=default
Default copy assignment.
lsst::geom::polynomials::ScaledBasis1d::ScaledBasis1d
ScaledBasis1d(ScaledBasis1d &&)=default
Default move constructor.
lsst::geom::polynomials::Scaling1d
A 1-d affine transform that can be used to map one interval to another.
Definition
Scaling1d.h:46
lsst::geom::polynomials::Scaling1d::then
Scaling1d then(Scaling1d const &second) const noexcept
Compose two transforms.
Definition
Scaling1d.h:107
std::forward
T forward(T... args)
lsst::geom::polynomials
Low-level polynomials (including special polynomials) in C++.
lsst::geom::polynomials::makeUnitRangeScaling1d
Scaling1d makeUnitRangeScaling1d(double min, double max) noexcept
Return a Scaling1d that maps the interval [min, max] to [-1, 1].
Definition
Scaling1d.h:120
lsst::geom::polynomials::SumMode
SumMode
Enum used to control how to sum polynomial terms.
Definition
SafeSum.h:32
lsst::geom::polynomials::SumMode::FAST
@ FAST
Summation using regular floating-point addition.
Definition
SafeSum.h:34
lsst::geom
Definition
AffineTransform.h:36
lsst
std::size_t
Generated on
for lsst.geom by
1.17.0