LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Public Member Functions | List of all members
lsst::geom::polynomials::Scaling1d Class Reference

A 1-d affine transform that can be used to map one interval to another. More...

#include <Scaling1d.h>

Public Member Functions

 Scaling1d (double scale, double shift) noexcept
 Construct from the given multiplicative scale and additive shift. More...
 
 Scaling1d (Scaling1d const &) noexcept=default
 Default copy constructor. More...
 
 Scaling1d (Scaling1d &&) noexcept=default
 Default move constructor. More...
 
Scaling1doperator= (Scaling1d const &) noexcept=default
 Default copy assignment. More...
 
Scaling1doperator= (Scaling1d &&) noexcept=default
 Default move assignment. More...
 
double applyForward (double x) const noexcept
 Apply the transform in the forward direction. More...
 
double applyInverse (double y) const noexcept
 Apply the inverse of the forward transform;. More...
 
double getScale () const noexcept
 Return the multiplicative scaling. More...
 
double getShift () const noexcept
 Return the additive shift. More...
 
Scaling1d inverted () const noexcept
 Invert the transform. More...
 
Scaling1d then (Scaling1d const &second) const noexcept
 Compose two transforms. More...
 

Detailed Description

A 1-d affine transform that can be used to map one interval to another.

The transform is represented as an additive shift followed by a multiplicative scaling.

Note
This class (and especially its 2-d counterpart, Scaling2d) has a lot in common with geom::AffineTransform, and ideally they should share code and be highly interoperable. Doing that well would require a larger-scale rethink of geom, however, and at present we don't actually have a use case for that interoperability, so it's something we should keep in mind for the future, not a high priority for the present.
Exception Safety
All operations on Scaling1d are noexcept.
See also
makeUnitRangeScaling1d

Definition at line 46 of file Scaling1d.h.

Constructor & Destructor Documentation

◆ Scaling1d() [1/3]

lsst::geom::polynomials::Scaling1d::Scaling1d ( double  scale,
double  shift 
)
inlinenoexcept

Construct from the given multiplicative scale and additive shift.

Definition at line 50 of file Scaling1d.h.

50  :
51  _scale(scale),
52  _shift(shift)
53  {}
def scale(algorithm, min, max=None, frame=None)
Definition: ds9.py:108

◆ Scaling1d() [2/3]

lsst::geom::polynomials::Scaling1d::Scaling1d ( Scaling1d const &  )
defaultnoexcept

Default copy constructor.

◆ Scaling1d() [3/3]

lsst::geom::polynomials::Scaling1d::Scaling1d ( Scaling1d &&  )
defaultnoexcept

Default move constructor.

Member Function Documentation

◆ applyForward()

double lsst::geom::polynomials::Scaling1d::applyForward ( double  x) const
inlinenoexcept

Apply the transform in the forward direction.

Result is defined to be (x + getShift()) * getScale().

Definition at line 72 of file Scaling1d.h.

72  {
73  return (x + getShift())*getScale();
74  }
double x
double getShift() const noexcept
Return the additive shift.
Definition: Scaling1d.h:87
double getScale() const noexcept
Return the multiplicative scaling.
Definition: Scaling1d.h:84

◆ applyInverse()

double lsst::geom::polynomials::Scaling1d::applyInverse ( double  y) const
inlinenoexcept

Apply the inverse of the forward transform;.

Definition at line 79 of file Scaling1d.h.

79  {
80  return y/_scale - _shift;
81  }
int y
Definition: SpanSet.cc:48

◆ getScale()

double lsst::geom::polynomials::Scaling1d::getScale ( ) const
inlinenoexcept

Return the multiplicative scaling.

Definition at line 84 of file Scaling1d.h.

84 { return _scale; }

◆ getShift()

double lsst::geom::polynomials::Scaling1d::getShift ( ) const
inlinenoexcept

Return the additive shift.

Definition at line 87 of file Scaling1d.h.

87 { return _shift; }

◆ inverted()

Scaling1d lsst::geom::polynomials::Scaling1d::inverted ( ) const
inlinenoexcept

Invert the transform.

If r = t.inverted(), then r.applyForward(x) is equivalent to t.applyInverse(x) and r.applyInverse(y) is equivalent to t.applyForward(y).

Definition at line 96 of file Scaling1d.h.

96  {
97  return Scaling1d(1.0/_scale, -_shift*_scale);
98  }
Scaling1d(double scale, double shift) noexcept
Construct from the given multiplicative scale and additive shift.
Definition: Scaling1d.h:50

◆ operator=() [1/2]

Scaling1d& lsst::geom::polynomials::Scaling1d::operator= ( Scaling1d &&  )
defaultnoexcept

Default move assignment.

◆ operator=() [2/2]

Scaling1d& lsst::geom::polynomials::Scaling1d::operator= ( Scaling1d const &  )
defaultnoexcept

Default copy assignment.

◆ then()

Scaling1d lsst::geom::polynomials::Scaling1d::then ( Scaling1d const &  second) const
inlinenoexcept

Compose two transforms.

If r = a.then(b), then r.applyForward(x) is equivalent to b.applyForward(a.applyForward(x)) and r.applyInverse(y) is equivalent to a.applyInverse(b.applyInverse(y)).

Definition at line 107 of file Scaling1d.h.

107  {
108  return Scaling1d(getScale()*second.getScale(),
109  getShift() + second.getShift()/getScale());
110  }

The documentation for this class was generated from the following file: