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
GaussHermiteProjection.h
Go to the documentation of this file.
1 // -*- LSST-C++ -*-
2 /*
3  * LSST Data Management System
4  * Copyright 2008, 2009, 2010, 2011 LSST Corporation.
5  *
6  * This product includes software developed by the
7  * LSST Project (http://www.lsst.org/).
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 LSST License Statement and
20  * the GNU General Public License along with this program. If not,
21  * see <http://www.lsstcorp.org/LegalNotices/>.
22  */
23 
24 #ifndef LSST_AFW_MATH_SHAPELETS_GaussHermiteProjection
25 #define LSST_AFW_MATH_SHAPELETS_GaussHermiteProjection
26 
27 #include "Eigen/Core"
28 #include "lsst/afw/geom/ellipses.h"
29 #include "lsst/geom.h"
31 
32 namespace lsst { namespace shapelet {
33 
35 public:
36 
38  Eigen::MatrixXd compute(
39  afw::geom::ellipses::Quadrupole const & inputEllipse, int inputOrder,
40  afw::geom::ellipses::Quadrupole const & outputEllipse, int outputOrder
41  ) const {
42  return compute(
43  inputEllipse.getGridTransform().getMatrix(), inputOrder,
44  outputEllipse.getGridTransform().getMatrix(), outputOrder
45  );
46  }
47 
49  Eigen::MatrixXd compute(
50  geom::LinearTransform const & inputTransform, int inputOrder,
51  geom::LinearTransform const & outputTransform, int outputOrder
52  ) const {
53  return compute(
54  inputTransform.getMatrix(), inputOrder,
55  outputTransform.getMatrix(), outputOrder
56  );
57  }
58 
60  Eigen::MatrixXd compute(
61  Eigen::Matrix2d const & inputTransform, int inputOrder,
62  Eigen::Matrix2d const & outputTransform, int outputOrder
63  ) const;
64 
65  int getMaxOrder() const { return _htm.getOrder(); }
66 
67  explicit GaussHermiteProjection(int maxOrder) : _htm(maxOrder) {}
68 
69 private:
71 };
72 }} // namespace lsst::shapelet
73 
74 #endif // !LSST_AFW_MATH_SHAPELETS_GaussHermiteProjection
lsst::geom::LinearTransform::Matrix getMatrix() const
Return the transform matrix as an Eigen object.
GridTransform const getGridTransform() const
Return the transform that maps the ellipse to the unit circle.
An ellipse core with quadrupole moments as parameters.
Definition: Quadrupole.h:47
A 2D linear coordinate transformation.
Matrix const & getMatrix() const noexcept
Eigen::MatrixXd compute(afw::geom::ellipses::Quadrupole const &inputEllipse, int inputOrder, afw::geom::ellipses::Quadrupole const &outputEllipse, int outputOrder) const
Compute a matrix that projects from one shapelet basis ellipse to another.
Eigen::MatrixXd compute(geom::LinearTransform const &inputTransform, int inputOrder, geom::LinearTransform const &outputTransform, int outputOrder) const
Compute a matrix that projects from one shapelet basis "grid transform" to another.
Eigen::MatrixXd compute(Eigen::Matrix2d const &inputTransform, int inputOrder, Eigen::Matrix2d const &outputTransform, int outputOrder) const
Compute a matrix that projects from one shapelet basis "grid transform" to another.
A class that computes a matrix that applies a linear transform to a 2-d Hermite polynomial expansion.
int getOrder() const
Return the maximum order at which the matrix can be computed.
A base class for image defects.