LSSTApplications  11.0-24-g0a022a1,14.0+64,15.0,15.0+1,15.0-1-g14e9bfd,15.0-1-g1eca518,15.0-1-g499c38d,15.0-1-g60afb23,15.0-1-g6668b0b,15.0-1-g788a293,15.0-1-g82223af,15.0-1-ga91101e,15.0-1-gae1598d,15.0-1-gc45031d,15.0-1-gd076f1f,15.0-1-gf4f1c34,15.0-1-gfe1617d,15.0-16-g953e39cab,15.0-2-g2010ef9,15.0-2-g33d94b3,15.0-2-g5218728,15.0-2-g947dc0d,15.0-3-g9103c06,15.0-3-ga03b4ca,15.0-3-ga659d1f3,15.0-3-ga695220+2,15.0-3-gaec6799,15.0-3-gb7a597c,15.0-3-gd5b9ff95,15.0-4-g0478fed+2,15.0-4-g45f767a,15.0-4-gff20472+2,15.0-6-ge2d9597
LSSTDataManagementBasePackage
xyTransform.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/stl.h"
25 
27 
28 namespace py = pybind11;
29 using namespace pybind11::literals;
30 
31 namespace lsst {
32 namespace afw {
33 namespace geom {
34 namespace {
35 
36 using PyXYTransform = py::class_<XYTransform, std::shared_ptr<XYTransform>>;
37 
38 using PyIdentityXYTransform =
39  py::class_<IdentityXYTransform, std::shared_ptr<IdentityXYTransform>, XYTransform>;
40 
41 using PyInvertedXYTransform =
42  py::class_<InvertedXYTransform, std::shared_ptr<InvertedXYTransform>, XYTransform>;
43 
44 using PyMultiXYTransform = py::class_<MultiXYTransform, std::shared_ptr<MultiXYTransform>, XYTransform>;
45 
46 using PyAffineXYTransfrom = py::class_<AffineXYTransform, std::shared_ptr<AffineXYTransform>, XYTransform>;
47 
48 using PyRadialXYTransform = py::class_<RadialXYTransform, std::shared_ptr<RadialXYTransform>, XYTransform>;
49 
51  py::module mod("xyTransform");
52 
53  py::module::import("lsst.afw.geom.coordinates");
54  py::module::import("lsst.afw.geom.affineTransform");
55 
56  PyXYTransform clsXYTransform(mod, "XYTransform");
57  clsXYTransform.def("clone", &XYTransform::clone);
58  clsXYTransform.def("invert", &XYTransform::invert);
59  clsXYTransform.def("forwardTransform", &XYTransform::forwardTransform);
60  clsXYTransform.def("reverseTransform", &XYTransform::reverseTransform);
61  clsXYTransform.def("linearizeForwardTransform", &XYTransform::linearizeForwardTransform);
62  clsXYTransform.def("linearizeReverseTransform", &XYTransform::linearizeReverseTransform);
63 
64  PyIdentityXYTransform clsIdentityXYTransform(mod, "IdentityXYTransform");
65  clsIdentityXYTransform.def(py::init<>());
66  clsIdentityXYTransform.def("forwardTransform", &IdentityXYTransform::forwardTransform);
67  clsIdentityXYTransform.def("reverseTransform", &IdentityXYTransform::reverseTransform);
68  clsIdentityXYTransform.def("linearizeForwardTransform", &IdentityXYTransform::linearizeForwardTransform);
69  clsIdentityXYTransform.def("linearizeReverseTransform", &IdentityXYTransform::linearizeReverseTransform);
70 
71  PyInvertedXYTransform clsInvertedXYTransform(mod, "InvertedXYTransform");
72  clsInvertedXYTransform.def(py::init<std::shared_ptr<XYTransform const>>());
73  clsInvertedXYTransform.def("invert", &InvertedXYTransform::invert);
74  clsInvertedXYTransform.def("forwardTransform", &InvertedXYTransform::forwardTransform);
75  clsInvertedXYTransform.def("reverseTransform", &InvertedXYTransform::reverseTransform);
76  clsInvertedXYTransform.def("linearizeForwardTransform", &InvertedXYTransform::linearizeForwardTransform);
77  clsInvertedXYTransform.def("linearizeReverseTransform", &InvertedXYTransform::linearizeReverseTransform);
78 
79  PyMultiXYTransform clsMultiXYTransform(mod, "MultiXYTransform");
80  clsMultiXYTransform.def(py::init<MultiXYTransform::TransformList const &>());
81  clsMultiXYTransform.def("clone", &MultiXYTransform::clone);
82  clsMultiXYTransform.def("forwardTransform", &MultiXYTransform::forwardTransform);
83  clsMultiXYTransform.def("reverseTransform", &MultiXYTransform::reverseTransform);
84  clsMultiXYTransform.def("linearizeForwardTransform", &MultiXYTransform::linearizeForwardTransform);
85  clsMultiXYTransform.def("linearizeReverseTransform", &MultiXYTransform::linearizeReverseTransform);
86  clsMultiXYTransform.def("getTransformList", &MultiXYTransform::getTransformList);
87 
88  PyAffineXYTransfrom clsAffineXYTransform(mod, "AffineXYTransform");
89  clsAffineXYTransform.def(py::init<AffineTransform const &>());
90 
91  clsAffineXYTransform.def("clone", &AffineXYTransform::clone);
92  clsAffineXYTransform.def("forwardTransform", &AffineXYTransform::forwardTransform);
93  clsAffineXYTransform.def("reverseTransform", &AffineXYTransform::reverseTransform);
94  clsAffineXYTransform.def("linearizeForwardTransform", &AffineXYTransform::linearizeForwardTransform);
95  clsAffineXYTransform.def("linearizeReverseTransform", &AffineXYTransform::linearizeReverseTransform);
96  clsAffineXYTransform.def("getForwardTransform", &AffineXYTransform::getForwardTransform);
97  clsAffineXYTransform.def("getReverseTransform", &AffineXYTransform::getReverseTransform);
98 
99  PyRadialXYTransform clsRadialXYTransform(mod, "RadialXYTransform");
100  clsRadialXYTransform.def(py::init<std::vector<double> const &>());
101  clsRadialXYTransform.def("clone", &RadialXYTransform::clone);
102  clsRadialXYTransform.def("invert", &RadialXYTransform::invert);
103  clsRadialXYTransform.def("forwardTransform", &RadialXYTransform::forwardTransform);
104  clsRadialXYTransform.def("reverseTransform", &RadialXYTransform::reverseTransform);
105  clsRadialXYTransform.def("linearizeForwardTransform", &RadialXYTransform::linearizeForwardTransform);
106  clsRadialXYTransform.def("linearizeReverseTransform", &RadialXYTransform::linearizeReverseTransform);
107  clsRadialXYTransform.def("getCoeffs", &RadialXYTransform::getCoeffs);
108  clsRadialXYTransform.def_static("polyInvert", &RadialXYTransform::polyInvert);
109  clsRadialXYTransform.def_static(
110  "polyEval", (double (*)(std::vector<double> const &, double)) & RadialXYTransform::polyEval);
111  clsRadialXYTransform.def_static("polyEval", (Point2D(*)(std::vector<double> const &, Point2D const &)) &
112  RadialXYTransform::polyEval);
113  clsRadialXYTransform.def_static("polyEvalDeriv", &RadialXYTransform::polyEvalDeriv);
114  clsRadialXYTransform.def_static("polyEvalJacobian", &RadialXYTransform::polyEvalJacobian);
115  clsRadialXYTransform.def_static("polyEvalInverse", (double (*)(std::vector<double> const &,
116  std::vector<double> const &, double)) &
117  RadialXYTransform::polyEvalInverse);
118  clsRadialXYTransform.def_static(
119  "polyEvalInverse",
120  (Point2D(*)(std::vector<double> const &, std::vector<double> const &, Point2D const &)) &
121  RadialXYTransform::polyEvalInverse);
122  clsRadialXYTransform.def_static("polyEvalInverseJacobian", &RadialXYTransform::polyEvalInverseJacobian);
123  clsRadialXYTransform.def_static("makeAffineTransform", &RadialXYTransform::makeAffineTransform);
124 
125  return mod.ptr();
126 }
127 }
128 }
129 }
130 } // namespace lsst::afw::geom::<anonymous>
def init()
Definition: tests.py:72
PYBIND11_PLUGIN(_cameraSys)
Definition: cameraSys.cc:62
A base class for image defects.
Definition: cameraGeom.dox:3
Point< double, 2 > Point2D
Definition: Point.h:304