25#ifndef LSST_AFW_GEOM_ELLIPSES_Quadrupole_h_INCLUDED
26#define LSST_AFW_GEOM_ELLIPSES_Quadrupole_h_INCLUDED
52 using Matrix = Eigen::Matrix<double, 2, 2, Eigen::DontAlign>;
54 double const getIxx()
const {
return _matrix(0, 0); }
55 void setIxx(
double ixx) { _matrix(0, 0) = ixx; }
57 double const getIyy()
const {
return _matrix(1, 1); }
58 void setIyy(
double iyy) { _matrix(1, 1) = iyy; }
60 double const getIxy()
const {
return _matrix(1, 0); }
61 void setIxy(
double ixy) { _matrix(0, 1) = _matrix(1, 0) = ixy; }
87 _matrix = other._matrix;
101 explicit Quadrupole(
double ixx = 1.0,
double iyy = 1.0,
double ixy = 0.0,
bool normalize =
false);
132 void _assignToAxes(
double&
a,
double&
b,
double& theta)
const override;
142 static Registrar<Quadrupole> registrar;
A temporary-only expression object for ellipse core convolution.
void apply(BaseCore &result) const
A base class for parametrizations of the "core" of an ellipse - the ellipticity and size.
Eigen::Vector3d ParameterVector
Parameter vector type.
BaseCore & operator=(BaseCore const &other)
Set the parameters of this ellipse core from another.
Eigen::Matrix3d Jacobian
Parameter Jacobian matrix type.
An ellipse core with quadrupole moments as parameters.
Eigen::Matrix< double, 2, 2, Eigen::DontAlign > Matrix
Matrix type for the matrix representation of Quadrupole parameters.
Quadrupole & operator=(Quadrupole const &other)
Standard assignment.
void _assignToAxes(double &a, double &b, double &theta) const override
Return the size of the bounding box for the ellipse core.
double const getIxy() const
~Quadrupole() override=default
double getDeterminant() const
Return the determinant of the matrix representation.
void normalize() override
Put the parameters into a "standard form", and throw InvalidParameterError if they cannot be normaliz...
Matrix const & getMatrix() const
Return a 2x2 symmetric matrix of the parameters.
Quadrupole(Quadrupole const &other)
Copy constructor.
Quadrupole(BaseCore::Convolution const &convolution)
Converting copy constructor.
std::shared_ptr< Quadrupole > clone() const
Deep copy the ellipse core.
Jacobian _dAssignToQuadrupole(double &ixx, double &iyy, double &ixy) const override
Return the size of the bounding box for the ellipse core.
Quadrupole(double ixx=1.0, double iyy=1.0, double ixy=0.0, bool normalize=false)
Construct from parameter values.
void _assignFromQuadrupole(double ixx, double iyy, double ixy) override
Return the size of the bounding box for the ellipse core.
std::string getName() const override
Return a string that identifies this parametrization.
Quadrupole & operator=(BaseCore const &other)
Converting assignment.
void writeParameters(double *iter) const override
Return the size of the bounding box for the ellipse core.
void _assignToQuadrupole(double &ixx, double &iyy, double &ixy) const override
Return the size of the bounding box for the ellipse core.
double const getIxx() const
Quadrupole(Quadrupole &&other)
double const getIyy() const
Jacobian _dAssignToAxes(double &a, double &b, double &theta) const override
Return the size of the bounding box for the ellipse core.
Quadrupole(BaseCore const &other)
Converting copy constructor.
Quadrupole(BaseCore::Transformer const &transformer)
Converting copy constructor.
Jacobian _dAssignFromAxes(double a, double b, double theta) override
Return the size of the bounding box for the ellipse core.
void _assignFromAxes(double a, double b, double theta) override
Return the size of the bounding box for the ellipse core.
void readParameters(double const *iter) override
Return the size of the bounding box for the ellipse core.
Jacobian _dAssignFromQuadrupole(double ixx, double iyy, double ixy) override
Return the size of the bounding box for the ellipse core.
Quadrupole & operator=(Quadrupole &&other)
std::shared_ptr< BaseCore > _clone() const override
Return the size of the bounding box for the ellipse core.
A base class for image defects.