lsst.geom
g19811a7679+d02280c829
Toggle main menu visibility
Loading...
Searching...
No Matches
include
lsst
geom
polynomials
Scaling1d.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_Scaling1d_h_INCLUDED
23
#define LSST_AFW_MATH_POLYNOMIALS_Scaling1d_h_INCLUDED
24
25
26
namespace
lsst
{
namespace
geom
{
namespace
polynomials
{
27
46
class
Scaling1d
{
47
public
:
48
50
Scaling1d
(
double
scale,
double
shift)
noexcept
:
51
_scale(scale),
52
_shift(shift)
53
{}
54
56
Scaling1d
(
Scaling1d
const
&)
noexcept
=
default
;
57
59
Scaling1d
(
Scaling1d
&&) noexcept = default;
60
62
Scaling1d
& operator=(
Scaling1d
const &) noexcept = default;
63
65
Scaling1d
& operator=(
Scaling1d
&&) noexcept = default;
66
72
double
applyForward
(
double
x) const noexcept {
73
return
(x +
getShift
())*
getScale
();
74
}
75
79
double
applyInverse
(
double
y)
const
noexcept
{
80
return
y/_scale - _shift;
81
}
82
84
double
getScale
() const noexcept {
return
_scale; }
85
87
double
getShift
() const noexcept {
return
_shift; }
88
96
Scaling1d
inverted
() const noexcept {
97
return
Scaling1d
(1.0/_scale, -_shift*_scale);
98
}
99
107
Scaling1d
then
(
Scaling1d
const
& second)
const
noexcept
{
108
return
Scaling1d
(
getScale
()*second.getScale(),
109
getShift
() + second.getShift()/
getScale
());
110
}
111
112
private
:
113
double
_scale;
114
double
_shift;
115
};
116
120
inline
Scaling1d
makeUnitRangeScaling1d
(
double
min,
double
max)
noexcept
{
121
return
Scaling1d
(2.0/(max - min), -0.5*(min + max));
122
}
123
124
}}}
// namespace lsst::geom::polynomials
125
126
#endif
// !LSST_AFW_MATH_POLYNOMIALS_Scaling1d_h_INCLUDED
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
lsst::geom::polynomials::Scaling1d::applyForward
double applyForward(double x) const noexcept
Apply the transform in the forward direction.
Definition
Scaling1d.h:72
lsst::geom::polynomials::Scaling1d::Scaling1d
Scaling1d(Scaling1d const &) noexcept=default
Default copy constructor.
lsst::geom::polynomials::Scaling1d::Scaling1d
Scaling1d(double scale, double shift) noexcept
Construct from the given multiplicative scale and additive shift.
Definition
Scaling1d.h:50
lsst::geom::polynomials::Scaling1d::inverted
Scaling1d inverted() const noexcept
Invert the transform.
Definition
Scaling1d.h:96
lsst::geom::polynomials::Scaling1d::getShift
double getShift() const noexcept
Return the additive shift.
Definition
Scaling1d.h:87
lsst::geom::polynomials::Scaling1d::getScale
double getScale() const noexcept
Return the multiplicative scaling.
Definition
Scaling1d.h:84
lsst::geom::polynomials::Scaling1d::Scaling1d
Scaling1d(Scaling1d &&) noexcept=default
Default move constructor.
lsst::geom::polynomials::Scaling1d::applyInverse
double applyInverse(double y) const noexcept
Apply the inverse of the forward transform;.
Definition
Scaling1d.h:79
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
Definition
AffineTransform.h:36
lsst
Generated on
for lsst.geom by
1.17.0