LSSTApplications  18.0.0+106,18.0.0+50,19.0.0,19.0.0+1,19.0.0+10,19.0.0+11,19.0.0+13,19.0.0+17,19.0.0+2,19.0.0-1-g20d9b18+6,19.0.0-1-g425ff20,19.0.0-1-g5549ca4,19.0.0-1-g580fafe+6,19.0.0-1-g6fe20d0+1,19.0.0-1-g7011481+9,19.0.0-1-g8c57eb9+6,19.0.0-1-gb5175dc+11,19.0.0-1-gdc0e4a7+9,19.0.0-1-ge272bc4+6,19.0.0-1-ge3aa853,19.0.0-10-g448f008b,19.0.0-12-g6990b2c,19.0.0-2-g0d9f9cd+11,19.0.0-2-g3d9e4fb2+11,19.0.0-2-g5037de4,19.0.0-2-gb96a1c4+3,19.0.0-2-gd955cfd+15,19.0.0-3-g2d13df8,19.0.0-3-g6f3c7dc,19.0.0-4-g725f80e+11,19.0.0-4-ga671dab3b+1,19.0.0-4-gad373c5+3,19.0.0-5-ga2acb9c+2,19.0.0-5-gfe96e6c+2,w.2020.01
LSSTDataManagementBasePackage
GridTransform.h
Go to the documentation of this file.
1 // -*- lsst-c++ -*-
2 
3 /*
4  * LSST Data Management System
5  * Copyright 2008, 2009, 2010 LSST Corporation.
6  *
7  * This product includes software developed by the
8  * LSST Project (http://www.lsst.org/).
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the LSST License Statement and
21  * the GNU General Public License along with this program. If not,
22  * see <http://www.lsstcorp.org/LegalNotices/>.
23  */
24 
25 #ifndef LSST_AFW_GEOM_ELLIPSES_GridTransform_h_INCLUDED
26 #define LSST_AFW_GEOM_ELLIPSES_GridTransform_h_INCLUDED
27 
28 /*
29  * Definitions for Ellipse::GridTransform and BaseCore::GridTransform.
30  *
31  * Note: do not include directly; use the main ellipse header file.
32  */
33 
34 #include "Eigen/Eigenvalues"
35 
38 
39 namespace lsst {
40 namespace afw {
41 namespace geom {
42 namespace ellipses {
43 
49 public:
51  typedef Eigen::Matrix<double, 4, 3> DerivativeMatrix;
52 
54  explicit GridTransform(BaseCore const& input);
55 
57  operator lsst::geom::LinearTransform() const;
58 
61 
63  DerivativeMatrix d() const;
64 
66  double getDeterminant() const;
67 
69 
75  [[deprecated("Use `inverted` instead. To be removed after 20.0.0.")]] // DM-22276
77  invert() const {
78  return inverted();
79  };
81 
82 private:
83  BaseCore const& _input;
84  Eigen::SelfAdjointEigenSolver<Eigen::Matrix2d> _eig;
85 };
86 
92 public:
94  typedef Eigen::Matrix<double, 6, 5> DerivativeMatrix;
95 
97  explicit GridTransform(Ellipse const& input);
98 
101 
103  DerivativeMatrix d() const;
104 
106  double getDeterminant() const;
107 
109  operator lsst::geom::AffineTransform() const;
110 
114 
115 private:
116  Ellipse const& _input;
117  BaseCore::GridTransform _coreGt;
118 };
119 
121  return BaseCore::GridTransform(*this);
122 }
123 
125  return Ellipse::GridTransform(*this);
126 }
127 } // namespace ellipses
128 } // namespace geom
129 } // namespace afw
130 } // namespace lsst
131 
132 #endif // !LSST_AFW_GEOM_ELLIPSES_GridTransform_h_INCLUDED
A temporary-only expression object representing an lsst::geom::LinearTransform that maps the ellipse ...
Definition: GridTransform.h:48
An affine coordinate transformation consisting of a linear transformation and an offset.
Eigen::Matrix< double, 2, 2, Eigen::DontAlign > Matrix
GridTransform const getGridTransform() const
Return the transform that maps the ellipse to the unit circle.
DerivativeMatrix d() const
Return the derivative of the transform with respect to input core.
double getDeterminant() const
Return the determinant of the lsst::geom::LinearTransform.
Eigen::Matrix< double, 4, 3 > DerivativeMatrix
Matrix type for derivative with respect to ellipse parameters.
Definition: GridTransform.h:51
A base class for image defects.
An ellipse defined by an arbitrary BaseCore and a center point.
Definition: Ellipse.h:51
lsst::geom::LinearTransform invert() const
Return the inverse of the lsst::geom::LinearTransform;.
Definition: GridTransform.h:77
GridTransform(BaseCore const &input)
Standard constructor.
GridTransform const getGridTransform() const
Return the transform that maps the ellipse to the unit circle.
A base class for parametrizations of the "core" of an ellipse - the ellipticity and size...
Definition: BaseCore.h:55
lsst::geom::LinearTransform inverted() const
Return the inverse of the lsst::geom::LinearTransform;.
A temporary-only expression object representing an lsst::geom::AffineTransform that maps the Ellipse ...
Definition: GridTransform.h:91
lsst::geom::AffineTransform invert() const
Eigen::Matrix< double, 6, 5 > DerivativeMatrix
Matrix type for derivative with respect to input ellipse parameters.
Definition: GridTransform.h:94
lsst::geom::LinearTransform::Matrix getMatrix() const
Return the transform matrix as an Eigen object.
A 2D linear coordinate transformation.