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
Public Types | Public Member Functions | Public Attributes | List of all members
lsst::afw::geom::ellipses::BaseCore::Transformer Class Referencefinal

A temporary-only expression object for ellipse core transformations. More...

#include <Transformer.h>

Public Types

typedef Eigen::Matrix3d DerivativeMatrix
 Matrix type for derivative with respect to input ellipse parameters. More...
 
typedef Eigen::Matrix< double, 3, 4 > TransformDerivativeMatrix
 Matrix type for derivative with respect to transform parameters. More...
 

Public Member Functions

 Transformer (BaseCore &input_, lsst::geom::LinearTransform const &transform_)
 Standard constructor. More...
 
std::shared_ptr< BaseCorecopy () const
 Return a new transformed ellipse core. More...
 
void inPlace ()
 Transform the ellipse core in-place. More...
 
void apply (BaseCore &result) const
 
DerivativeMatrix d () const
 Return the derivative of transformed core with respect to input core. More...
 
TransformDerivativeMatrix dTransform () const
 Return the derivative of transformed core with respect to transform parameters. More...
 

Public Attributes

BaseCoreinput
 input core to be transformed More...
 
lsst::geom::LinearTransform const & transform
 transform object More...
 

Detailed Description

A temporary-only expression object for ellipse core transformations.

Transformer simply provides a clean syntax for transform-related operations, including in-place and new-object transformations, derivatives of the transformations, and implicit conversion to a shared_ptr to a new transformed core.

Definition at line 49 of file Transformer.h.

Member Typedef Documentation

◆ DerivativeMatrix

Matrix type for derivative with respect to input ellipse parameters.

Definition at line 52 of file Transformer.h.

◆ TransformDerivativeMatrix

Matrix type for derivative with respect to transform parameters.

Definition at line 55 of file Transformer.h.

Constructor & Destructor Documentation

◆ Transformer()

lsst::afw::geom::ellipses::BaseCore::Transformer::Transformer ( BaseCore input_,
lsst::geom::LinearTransform const &  transform_ 
)
inline

Standard constructor.

Definition at line 58 of file Transformer.h.

59  : input(input_), transform(transform_) {}
BaseCore & input
input core to be transformed
Definition: Transformer.h:75
lsst::geom::LinearTransform const & transform
transform object
Definition: Transformer.h:76

Member Function Documentation

◆ apply()

void lsst::afw::geom::ellipses::BaseCore::Transformer::apply ( BaseCore result) const

Definition at line 41 of file Transformer.cc.

41  {
42  Eigen::Matrix2d m;
43  input._assignToQuadrupole(m(0, 0), m(1, 1), m(0, 1));
44  m(1, 0) = m(0, 1);
45  m = transform.getMatrix() * m * transform.getMatrix().transpose();
46  result._assignFromQuadrupole(m(0, 0), m(1, 1), m(0, 1));
47 }
BaseCore & input
input core to be transformed
Definition: Transformer.h:75
int m
Definition: SpanSet.cc:49
virtual void _assignToQuadrupole(double &ixx, double &iyy, double &ixy) const =0
py::object result
Definition: _schema.cc:429

◆ copy()

std::shared_ptr< BaseCore > lsst::afw::geom::ellipses::BaseCore::Transformer::copy ( ) const

Return a new transformed ellipse core.

Definition at line 33 of file Transformer.cc.

33  {
35  apply(*r);
36  return r;
37 }
BaseCore & input
input core to be transformed
Definition: Transformer.h:75
std::shared_ptr< BaseCore > clone() const
Deep-copy the Core.
Definition: BaseCore.h:82

◆ d()

BaseCore::Transformer::DerivativeMatrix lsst::afw::geom::ellipses::BaseCore::Transformer::d ( ) const

Return the derivative of transformed core with respect to input core.

Definition at line 49 of file Transformer.cc.

49  {
51  Eigen::Matrix2d m;
52  Jacobian rhs = input._dAssignToQuadrupole(m(0, 0), m(1, 1), m(0, 1));
53  m(1, 0) = m(0, 1);
54  m = transform.getMatrix() * m * transform.getMatrix().transpose();
55  Jacobian lhs = output->_dAssignFromQuadrupole(m(0, 0), m(1, 1), m(0, 1));
56  Jacobian mid = Jacobian::Zero();
58  mid(0, 1) = transform[lsst::geom::LinearTransform::XY] * transform[lsst::geom::LinearTransform::XY];
59  mid(0, 2) = 2 * transform[lsst::geom::LinearTransform::XY] * transform[lsst::geom::LinearTransform::XX];
60  mid(1, 0) = transform[lsst::geom::LinearTransform::YX] * transform[lsst::geom::LinearTransform::YX];
61  mid(1, 1) = transform[lsst::geom::LinearTransform::YY] * transform[lsst::geom::LinearTransform::YY];
62  mid(1, 2) = 2 * transform[lsst::geom::LinearTransform::YY] * transform[lsst::geom::LinearTransform::YX];
63  mid(2, 0) = transform[lsst::geom::LinearTransform::YX] * transform[lsst::geom::LinearTransform::XX];
64  mid(2, 1) = transform[lsst::geom::LinearTransform::YY] * transform[lsst::geom::LinearTransform::XY];
65  mid(2, 2) = transform[lsst::geom::LinearTransform::XX] * transform[lsst::geom::LinearTransform::YY] +
67  return lhs * mid * rhs;
68 }
virtual Jacobian _dAssignToQuadrupole(double &ixx, double &iyy, double &ixy) const =0
BaseCore & input
input core to be transformed
Definition: Transformer.h:75
std::shared_ptr< BaseCore > clone() const
Deep-copy the Core.
Definition: BaseCore.h:82
Eigen::Matrix3d Jacobian
Parameter Jacobian matrix type.
Definition: BaseCore.h:64
int m
Definition: SpanSet.cc:49

◆ dTransform()

BaseCore::Transformer::TransformDerivativeMatrix lsst::afw::geom::ellipses::BaseCore::Transformer::dTransform ( ) const

Return the derivative of transformed core with respect to transform parameters.

Definition at line 70 of file Transformer.cc.

70  {
72  Eigen::Matrix2d m;
73  input._assignToQuadrupole(m(0, 0), m(1, 1), m(0, 1));
74  Eigen::Matrix<double, 3, 4> mid = Eigen::Matrix<double, 3, 4>::Zero();
75  m(1, 0) = m(0, 1);
92  m = transform.getMatrix() * m * transform.getMatrix().transpose();
93  Jacobian lhs = output->_dAssignFromQuadrupole(m(0, 0), m(1, 1), m(0, 1));
94  return lhs * mid;
95 }
BaseCore & input
input core to be transformed
Definition: Transformer.h:75
std::shared_ptr< BaseCore > clone() const
Deep-copy the Core.
Definition: BaseCore.h:82
Eigen::Matrix3d Jacobian
Parameter Jacobian matrix type.
Definition: BaseCore.h:64
int m
Definition: SpanSet.cc:49
virtual void _assignToQuadrupole(double &ixx, double &iyy, double &ixy) const =0

◆ inPlace()

void lsst::afw::geom::ellipses::BaseCore::Transformer::inPlace ( )

Transform the ellipse core in-place.

Definition at line 39 of file Transformer.cc.

39 { apply(input); }
BaseCore & input
input core to be transformed
Definition: Transformer.h:75

Member Data Documentation

◆ input

BaseCore& lsst::afw::geom::ellipses::BaseCore::Transformer::input

input core to be transformed

Definition at line 75 of file Transformer.h.

◆ transform

lsst::geom::LinearTransform const& lsst::afw::geom::ellipses::BaseCore::Transformer::transform

transform object

Definition at line 76 of file Transformer.h.


The documentation for this class was generated from the following files: