lsst.afw
g3a5ebb7d8a+28b83bf6a5
Toggle main menu visibility
Loading...
Searching...
No Matches
include
lsst
afw
geom
ellipses
EllipticityBase.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_EllipticityBase_h_INCLUDED
26
#define LSST_AFW_GEOM_ELLIPSES_EllipticityBase_h_INCLUDED
27
28
#include "Eigen/Core"
29
#include <complex>
30
31
namespace
lsst
{
32
namespace
afw
{
33
namespace
geom
{
34
namespace
ellipses
{
35
36
namespace
detail
{
37
45
class
EllipticityBase
{
46
public
:
47
using
Jacobian
= Eigen::Matrix2d;
48
49
enum
ParameterEnum
{
E1
= 0,
E2
= 1 };
50
51
std::complex<double>
&
getComplex
() {
return
_complex
; }
52
53
std::complex<double>
const
&
getComplex
()
const
{
return
_complex
; }
54
55
void
setComplex
(
std::complex<double>
const
& v) {
_complex
= v; }
56
57
double
getE1
()
const
{
return
_complex
.real(); }
58
void
setE1
(
double
e1) {
59
#if __cplusplus < 201103L
60
_complex
=
std::complex<double>
(e1,
_complex
.imag());
61
#else
62
_complex
.real(e1);
63
#endif
64
}
65
66
double
getE2
()
const
{
return
_complex
.imag(); }
67
void
setE2
(
double
e2) {
68
#if __cplusplus < 201103L
69
_complex
=
std::complex<double>
(
_complex
.real(), e2);
70
#else
71
_complex
.imag(e2);
72
#endif
73
}
74
75
double
getE
()
const
{
return
std::sqrt
(std::norm(
_complex
)); }
76
void
setE
(
double
e) {
_complex
*= e /
getE
(); }
77
78
double
getTheta
()
const
{
return
0.5 * std::arg(
_complex
); }
79
80
EllipticityBase
(
EllipticityBase
const
&) =
default
;
81
EllipticityBase
(
EllipticityBase
&&) =
default
;
82
EllipticityBase
&
operator=
(
EllipticityBase
const
&) =
default
;
83
EllipticityBase
&
operator=
(
EllipticityBase
&&) =
default
;
84
~EllipticityBase
() =
default
;
85
86
protected
:
87
explicit
EllipticityBase
(
std::complex<double>
const
& complex) :
_complex
(complex) {}
88
89
explicit
EllipticityBase
(
double
e1 = 0.0,
double
e2 = 0.0) :
_complex
(e1, e2) {}
90
91
std::complex<double>
_complex
;
92
};
93
94
}
// namespace detail
95
}
// namespace ellipses
96
}
// namespace geom
97
}
// namespace afw
98
}
// namespace lsst
99
100
#endif
// !LSST_AFW_GEOM_ELLIPSES_EllipticityBase_h_INCLUDED
lsst::afw::geom::ellipses::detail::EllipticityBase::EllipticityBase
EllipticityBase(EllipticityBase const &)=default
lsst::afw::geom::ellipses::detail::EllipticityBase::ParameterEnum
ParameterEnum
Definition
EllipticityBase.h:49
lsst::afw::geom::ellipses::detail::EllipticityBase::E1
@ E1
Definition
EllipticityBase.h:49
lsst::afw::geom::ellipses::detail::EllipticityBase::E2
@ E2
Definition
EllipticityBase.h:49
lsst::afw::geom::ellipses::detail::EllipticityBase::getE2
double getE2() const
Definition
EllipticityBase.h:66
lsst::afw::geom::ellipses::detail::EllipticityBase::Jacobian
Eigen::Matrix2d Jacobian
Definition
EllipticityBase.h:47
lsst::afw::geom::ellipses::detail::EllipticityBase::setE
void setE(double e)
Definition
EllipticityBase.h:76
lsst::afw::geom::ellipses::detail::EllipticityBase::getE1
double getE1() const
Definition
EllipticityBase.h:57
lsst::afw::geom::ellipses::detail::EllipticityBase::getComplex
std::complex< double > const & getComplex() const
Definition
EllipticityBase.h:53
lsst::afw::geom::ellipses::detail::EllipticityBase::setComplex
void setComplex(std::complex< double > const &v)
Definition
EllipticityBase.h:55
lsst::afw::geom::ellipses::detail::EllipticityBase::setE1
void setE1(double e1)
Definition
EllipticityBase.h:58
lsst::afw::geom::ellipses::detail::EllipticityBase::_complex
std::complex< double > _complex
Definition
EllipticityBase.h:91
lsst::afw::geom::ellipses::detail::EllipticityBase::getE
double getE() const
Definition
EllipticityBase.h:75
lsst::afw::geom::ellipses::detail::EllipticityBase::EllipticityBase
EllipticityBase(EllipticityBase &&)=default
lsst::afw::geom::ellipses::detail::EllipticityBase::operator=
EllipticityBase & operator=(EllipticityBase &&)=default
lsst::afw::geom::ellipses::detail::EllipticityBase::EllipticityBase
EllipticityBase(std::complex< double > const &complex)
Definition
EllipticityBase.h:87
lsst::afw::geom::ellipses::detail::EllipticityBase::operator=
EllipticityBase & operator=(EllipticityBase const &)=default
lsst::afw::geom::ellipses::detail::EllipticityBase::getTheta
double getTheta() const
Definition
EllipticityBase.h:78
lsst::afw::geom::ellipses::detail::EllipticityBase::~EllipticityBase
~EllipticityBase()=default
lsst::afw::geom::ellipses::detail::EllipticityBase::getComplex
std::complex< double > & getComplex()
Definition
EllipticityBase.h:51
lsst::afw::geom::ellipses::detail::EllipticityBase::EllipticityBase
EllipticityBase(double e1=0.0, double e2=0.0)
Definition
EllipticityBase.h:89
lsst::afw::geom::ellipses::detail::EllipticityBase::setE2
void setE2(double e2)
Definition
EllipticityBase.h:67
std::complex
lsst::afw::geom::ellipses::detail
Definition
EllipticityBase.h:36
lsst::afw::geom::ellipses
Definition
ellipses.h:50
lsst::afw::geom
Definition
frameSetUtils.h:40
lsst::afw
Definition
imageAlgorithm.dox:1
lsst
std::sqrt
T sqrt(T... args)
Generated on
for lsst.afw by
1.17.0