lsst.geom
g19811a7679+d02280c829
Toggle main menu visibility
Loading...
Searching...
No Matches
include
lsst
geom
polynomials
Scaling2d.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_Scaling2d_h_INCLUDED
23
#define LSST_AFW_MATH_POLYNOMIALS_Scaling2d_h_INCLUDED
24
25
#include "
lsst/geom/polynomials/Scaling1d.h
"
26
#include "
lsst/geom/Point.h
"
27
#include "
lsst/geom/Box.h
"
28
29
namespace
lsst
{
namespace
geom
{
namespace
polynomials
{
30
48
class
Scaling2d
{
49
public
:
50
52
Scaling2d
(
Scaling1d
const
& x,
Scaling1d
const
& y) noexcept : _x(x), _y(y) {}
53
55
Scaling2d
(
Scaling2d
const
&)
noexcept
=
default
;
56
58
Scaling2d
(
Scaling2d
&&) noexcept = default;
59
61
Scaling2d
& operator=(
Scaling2d
const &) noexcept = default;
62
64
Scaling2d
& operator=(
Scaling2d
&&) noexcept = default;
65
67
Scaling1d
const &
getX
() const noexcept {
return
_x; }
68
70
Scaling1d
const
&
getY
() const noexcept {
return
_y; }
71
73
geom::Point2D
applyForward
(
geom::Point2D
const
& p)
const
noexcept
{
74
return
geom::Point2D
(
getX
().
applyForward
(p.getX()),
getY
().
applyForward
(p.getY()));
75
}
76
78
geom::Point2D
applyInverse
(
geom::Point2D
const
& p)
const
noexcept
{
79
return
geom::Point2D
(
getX
().
applyInverse
(p.getX()),
getY
().
applyInverse
(p.getY()));
80
}
81
89
Scaling2d
inverted
() const noexcept {
90
return
Scaling2d
(
getX
().
inverted
(),
getY
().
inverted
());
91
}
92
100
Scaling2d
then
(
Scaling2d
const
& second)
const
noexcept
{
101
return
Scaling2d
(
getX
().
then
(second.getX()),
getY
().
then
(second.getY()));
102
}
103
104
private
:
105
Scaling1d
_x;
106
Scaling1d
_y;
107
};
108
112
inline
Scaling2d
makeUnitRangeScaling2d
(
geom::Box2D
const
& box) {
113
return
Scaling2d
(
114
makeUnitRangeScaling1d
(box.
getMinX
(), box.
getMaxX
()),
115
makeUnitRangeScaling1d
(box.
getMinY
(), box.
getMaxY
())
116
);
117
}
118
119
}}}
// namespace lsst::geom::polynomials
120
121
#endif
// !LSST_AFW_MATH_POLYNOMIALS_Scaling2d_h_INCLUDED
Box.h
Point.h
Scaling1d.h
lsst::geom::Box2D
A floating-point coordinate rectangle geometry.
Definition
Box.h:413
lsst::geom::Box2D::getMaxY
double getMaxY() const noexcept
Definition
Box.h:519
lsst::geom::Box2D::getMaxX
double getMaxX() const noexcept
Definition
Box.h:518
lsst::geom::Box2D::getMinY
double getMinY() const noexcept
Definition
Box.h:515
lsst::geom::Box2D::getMinX
double getMinX() const noexcept
Definition
Box.h:514
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::Scaling2d
A 2-d separable affine transform that can be used to map one interval to another.
Definition
Scaling2d.h:48
lsst::geom::polynomials::Scaling2d::applyInverse
geom::Point2D applyInverse(geom::Point2D const &p) const noexcept
Apply the inverse of the forward transform.
Definition
Scaling2d.h:78
lsst::geom::polynomials::Scaling2d::Scaling2d
Scaling2d(Scaling2d &&) noexcept=default
Default move constructor.
lsst::geom::polynomials::Scaling2d::applyForward
geom::Point2D applyForward(geom::Point2D const &p) const noexcept
Apply the transform in the forward direction.
Definition
Scaling2d.h:73
lsst::geom::polynomials::Scaling2d::inverted
Scaling2d inverted() const noexcept
Invert the transform.
Definition
Scaling2d.h:89
lsst::geom::polynomials::Scaling2d::getX
Scaling1d const & getX() const noexcept
Return the 1-d scaling in the X direction.
Definition
Scaling2d.h:67
lsst::geom::polynomials::Scaling2d::Scaling2d
Scaling2d(Scaling1d const &x, Scaling1d const &y) noexcept
Construct from the given 1-d scalings.
Definition
Scaling2d.h:52
lsst::geom::polynomials::Scaling2d::then
Scaling2d then(Scaling2d const &second) const noexcept
Compose two transforms.
Definition
Scaling2d.h:100
lsst::geom::polynomials::Scaling2d::getY
Scaling1d const & getY() const noexcept
Return the 1-d scaling in the Y direction.
Definition
Scaling2d.h:70
lsst::geom::polynomials::Scaling2d::Scaling2d
Scaling2d(Scaling2d const &) noexcept=default
Default copy constructor.
lsst::geom::polynomials
Low-level polynomials (including special polynomials) in C++.
lsst::geom::polynomials::makeUnitRangeScaling2d
Scaling2d makeUnitRangeScaling2d(geom::Box2D const &box)
Return a Scaling1d that maps the given box to [-1, 1]x[-1, 1].
Definition
Scaling2d.h:112
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::geom::Point2D
Point< double, 2 > Point2D
Definition
Point.h:324
lsst
Generated on
for lsst.geom by
1.17.0