LSSTApplications  19.0.0-10-g920eed2,19.0.0-11-g48a0200+2,19.0.0-18-gfc4e62b+17,19.0.0-2-g3b2f90d+2,19.0.0-2-gd671419+5,19.0.0-20-g5a5a17ab+15,19.0.0-21-g2644856+18,19.0.0-23-g84eeccb+6,19.0.0-24-g878c510+5,19.0.0-25-g6c8df7140,19.0.0-25-gb330496+5,19.0.0-3-g2b32d65+5,19.0.0-3-g8227491+16,19.0.0-3-g9c54d0d+16,19.0.0-3-gca68e65+12,19.0.0-3-gcfc5f51+5,19.0.0-3-ge110943+15,19.0.0-3-ge74d124,19.0.0-3-gfe04aa6+16,19.0.0-30-g9c3fd16+6,19.0.0-4-g06f5963+5,19.0.0-4-g3d16501+18,19.0.0-4-g4a9c019+5,19.0.0-4-g5a8b323,19.0.0-4-g66397f0+1,19.0.0-4-g8278b9b+1,19.0.0-4-g8557e14,19.0.0-4-g8964aba+17,19.0.0-4-ge404a01+16,19.0.0-5-g40f3a5a,19.0.0-5-g4db63b3,19.0.0-5-gfb03ce7+17,19.0.0-6-gbaebbfb+16,19.0.0-61-gec4c6e08+6,19.0.0-7-g039c0b5+16,19.0.0-7-gbea9075+4,19.0.0-7-gc567de5+17,19.0.0-70-g334bf3e+1,19.0.0-9-g463f923+16,b.20.0.x-g5487ab2134,v20.0.0.rc1
LSSTDataManagementBasePackage
ellipse.cc
Go to the documentation of this file.
1 /*
2  * LSST Data Management System
3  * Copyright 2008-2016 AURA/LSST.
4  *
5  * This product includes software developed by the
6  * LSST Project (http://www.lsst.org/).
7  *
8  * This program is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the LSST License Statement and
19  * the GNU General Public License along with this program. If not,
20  * see <https://www.lsstcorp.org/LegalNotices/>.
21  */
22 
23 #include "pybind11/pybind11.h"
24 #include "pybind11/eigen.h"
25 #include "pybind11/stl.h"
26 
27 #include "ndarray/pybind11.h"
28 
29 #include "lsst/geom.h"
35 
36 namespace py = pybind11;
37 using namespace pybind11::literals;
38 
39 using namespace lsst::afw::geom;
40 using namespace ellipses;
41 
42 PYBIND11_MODULE(ellipse, mod) {
43  /* Module level */
44  py::class_<Ellipse, std::shared_ptr<Ellipse>> clsEllipse(mod, "Ellipse");
45 
46  // /* Member types and enums */
47  // py::class_<Ellipse::GridTransform> clsEllipseGridTransform(clsEllipse, "GridTransform");
48  //
49  // /* Constructors */
50  // clsEllipseGridTransform.def(py::init<Ellipse const &>());
51  //
52  // /* Members */
53  // clsEllipseGridTransform.def("getMatrix", &Ellipse::GridTransform::getMatrix);
54  // clsEllipseGridTransform.def("d", &Ellipse::GridTransform::d);
55  // clsEllipseGridTransform.def("getDeterminant", &Ellipse::GridTransform::getDeterminant);
56  // clsEllipseGridTransform.def("inverted", &Ellipse::GridTransform::inverted);
57 
58  py::module::import("lsst.geom");
59 
60  /* Constructors */
61  clsEllipse.def(py::init<BaseCore const &, lsst::geom::Point2D const &>(), "core"_a, "center"_a = lsst::geom::Point2D());
62  clsEllipse.def(py::init<Ellipse const &>());
63  clsEllipse.def(py::init<Ellipse::Convolution const &>());
64 
65  py::implicitly_convertible<Ellipse::Convolution, Ellipse>();
66 
67  /* Operators */
68 
69  /* Members */
70  clsEllipse.def("getCore", [](Ellipse &ellipse) { return ellipse.getCorePtr(); });
71  clsEllipse.def("getCenter", (lsst::geom::Point2D & (Ellipse::*)()) & Ellipse::getCenter);
72  clsEllipse.def("setCenter", &Ellipse::setCenter);
73  clsEllipse.def("setCore", &Ellipse::setCore);
74  clsEllipse.def("normalize", &Ellipse::normalize);
75  clsEllipse.def("grow", &Ellipse::grow);
76  clsEllipse.def("scale", &Ellipse::scale);
77  clsEllipse.def("shift", &Ellipse::shift);
78  clsEllipse.def("getParameterVector", &Ellipse::getParameterVector);
79  clsEllipse.def("setParameterVector", &Ellipse::setParameterVector);
80  clsEllipse.def("transform",
81  [](Ellipse const &self, lsst::geom::AffineTransform const &t) -> Ellipse { return self.transform(t); },
82  "transform"_a);
83  // clsEllipse.def("convolve", (Convolution const (Ellipse::*)(Ellipse const &) const)
84  // &Ellipse::convolve);
85  clsEllipse.def("getGridTransform", [](Ellipse &self) -> lsst::geom::AffineTransform {
86  return self.getGridTransform(); // delibarate conversion to lsst::geom::AffineTransform
87  });
88  clsEllipse.def("computeBBox", &Ellipse::computeBBox);
89 }
ellipses
GridTransform.h
lsst::afw::geom::ellipses::Ellipse::getCorePtr
std::shared_ptr< BaseCore const > getCorePtr() const
Return the ellipse core.
Definition: Ellipse.h:77
lsst::geom::AffineTransform
An affine coordinate transformation consisting of a linear transformation and an offset.
Definition: AffineTransform.h:75
lsst::afw::geom::ellipses::Ellipse::transform
Transformer transform(lsst::geom::AffineTransform const &transform)
Definition: Transformer.h:124
Transformer.h
geom.h
lsst::afw::geom::ellipses::Ellipse
An ellipse defined by an arbitrary BaseCore and a center point.
Definition: Ellipse.h:51
lsst::geom::Point< double, 2 >
lsst::afw.display.ds9.scale
def scale(algorithm, min, max=None, frame=None)
Definition: ds9.py:109
pybind11
Definition: _GenericMap.cc:40
Ellipse.h
PYBIND11_MODULE
PYBIND11_MODULE(ellipse, mod)
Definition: ellipse.cc:42
BaseCore.h
Convolution.h
lsst::afw::geom
Definition: frameSetUtils.h:40