lsst.afw
g3a5ebb7d8a+28b83bf6a5
Toggle main menu visibility
Loading...
Searching...
No Matches
src
geom
ellipses
Convolution.cc
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
#include "
lsst/afw/geom/ellipses/Quadrupole.h
"
25
#include "
lsst/afw/geom/ellipses/Convolution.h
"
26
27
namespace
lsst
{
28
namespace
afw
{
29
namespace
geom
{
30
namespace
ellipses
{
31
32
std::shared_ptr<BaseCore>
BaseCore::Convolution::copy
()
const
{
33
std::shared_ptr<BaseCore>
r(
self
.clone());
34
apply
(*r);
35
return
r;
36
}
37
38
void
BaseCore::Convolution::inPlace
() {
apply
(
self
); }
39
40
BaseCore::Convolution::DerivativeMatrix
BaseCore::Convolution::d
()
const
{
41
double
ixx1, iyy1, ixy1;
42
double
ixx2, iyy2, ixy2;
43
Jacobian
rhs =
self
._dAssignToQuadrupole(ixx1, iyy1, ixy1);
44
other
._assignToQuadrupole(ixx2, iyy2, ixy2);
45
std::shared_ptr<BaseCore>
convolved(
self
.clone());
46
Jacobian
lhs = convolved->_dAssignFromQuadrupole(ixx1 + ixx2, iyy1 + iyy2, ixy1 + ixy2);
47
return
lhs * rhs;
48
}
49
50
void
BaseCore::Convolution::apply
(
BaseCore
& result)
const
{
51
double
ixx1, iyy1, ixy1;
52
double
ixx2, iyy2, ixy2;
53
self
._assignToQuadrupole(ixx1, iyy1, ixy1);
54
other
._assignToQuadrupole(ixx2, iyy2, ixy2);
55
result.
_assignFromQuadrupole
(ixx1 + ixx2, iyy1 + iyy2, ixy1 + ixy2);
56
}
57
58
std::shared_ptr<Ellipse>
Ellipse::Convolution::copy
()
const
{
59
return
std::make_shared<Ellipse>
(
60
self
.getCore().convolve(
other
.getCore()).copy(),
61
lsst::geom::Point2D
(
self
.getCenter() +
lsst::geom::Extent2D
(
other
.getCenter())));
62
}
63
64
void
Ellipse::Convolution::inPlace
() {
65
self
.getCore().convolve(
other
.getCore()).inPlace();
66
self
.setCenter(
self
.getCenter() +
lsst::geom::Extent2D
(
other
.getCenter()));
67
}
68
69
Ellipse::Convolution::DerivativeMatrix
Ellipse::Convolution::d
()
const
{
70
Ellipse::Convolution::DerivativeMatrix
result = Ellipse::Convolution::DerivativeMatrix::Identity();
71
result.block<3, 3>(0, 0) =
self
.getCore().convolve(
other
.getCore()).d();
72
return
result;
73
}
74
75
Ellipse::Ellipse
(Convolution
const
& convolution)
76
: _core(convolution.self.
getCore
().
convolve
(convolution.other.
getCore
()).copy()),
77
_center(convolution.self.
getCenter
() +
lsst
::
geom
::Extent2D(convolution.other.
getCenter
())) {}
78
}
// namespace ellipses
79
}
// namespace geom
80
}
// namespace afw
81
}
// namespace lsst
Convolution.h
Quadrupole.h
lsst::afw::geom::ellipses::BaseCore::Convolution::self
BaseCore & self
Definition
Convolution.h:63
lsst::afw::geom::ellipses::BaseCore::Convolution::DerivativeMatrix
Eigen::Matrix3d DerivativeMatrix
Matrix type for derivative with respect to input ellipse parameters.
Definition
Convolution.h:47
lsst::afw::geom::ellipses::BaseCore::Convolution::apply
void apply(BaseCore &result) const
Definition
Convolution.cc:50
lsst::afw::geom::ellipses::BaseCore::Convolution::other
BaseCore const & other
Definition
Convolution.h:64
lsst::afw::geom::ellipses::BaseCore::Convolution::copy
std::shared_ptr< BaseCore > copy() const
Return a new convolved ellipse core.
Definition
Convolution.cc:32
lsst::afw::geom::ellipses::BaseCore::Convolution::inPlace
void inPlace()
Convolve the ellipse core in-place.
Definition
Convolution.cc:38
lsst::afw::geom::ellipses::BaseCore::Convolution::d
DerivativeMatrix d() const
Return the derivative of convolved core with respect to self.
Definition
Convolution.cc:40
lsst::afw::geom::ellipses::BaseCore::BaseCore
BaseCore()=default
Return the size of the bounding box for the ellipse core.
lsst::afw::geom::ellipses::BaseCore::_assignFromQuadrupole
virtual void _assignFromQuadrupole(double ixx, double iyy, double ixy)=0
Return the size of the bounding box for the ellipse core.
lsst::afw::geom::ellipses::BaseCore::Jacobian
Eigen::Matrix3d Jacobian
Parameter Jacobian matrix type.
Definition
BaseCore.h:64
_ellipses::Ellipse::Convolution::DerivativeMatrix
Eigen::Matrix< double, 5, 5 > DerivativeMatrix
Matrix type for derivative with respect to input ellipse parameters.
Definition
Convolution.h:73
_ellipses::Ellipse::Convolution::self
Ellipse & self
Definition
Convolution.h:87
_ellipses::Ellipse::Convolution::d
DerivativeMatrix d() const
Return the derivative of convolved ellipse with respect to self.
Definition
Convolution.cc:69
_ellipses::Ellipse::Convolution::inPlace
void inPlace()
Convolve the ellipse in-place.
Definition
Convolution.cc:64
_ellipses::Ellipse::Convolution::copy
std::shared_ptr< Ellipse > copy() const
Return a new convolved ellipse.
Definition
Convolution.cc:58
_ellipses::Ellipse::Convolution::other
Ellipse const & other
Definition
Convolution.h:88
lsst::afw::geom::ellipses::Ellipse::getCenter
lsst::geom::Point2D const & getCenter() const
Return the center point.
Definition
Ellipse.h:62
lsst::afw::geom::ellipses::Ellipse::getCore
BaseCore const & getCore() const
Return the ellipse core.
Definition
Ellipse.h:71
lsst::afw::geom::ellipses::Ellipse::Ellipse
Ellipse(BaseCore const &core, lsst::geom::Point2D const ¢er=lsst::geom::Point2D())
Return the transform that maps the ellipse to the unit circle.
Definition
Ellipse.h:164
lsst::afw::geom::ellipses::Ellipse::convolve
Convolution convolve(Ellipse const &other)
Return the transform that maps the ellipse to the unit circle.
Definition
Convolution.h:99
std::make_shared
T make_shared(T... args)
lsst::afw::geom::ellipses
Definition
ellipses.h:50
lsst::afw::geom
Definition
frameSetUtils.h:40
lsst::afw
Definition
imageAlgorithm.dox:1
lsst::geom
lsst::geom::Extent2D
Extent< double, 2 > Extent2D
lsst::geom::Point2D
Point< double, 2 > Point2D
lsst
std::shared_ptr
Generated on
for lsst.afw by
1.17.0