22 #include "pybind11/pybind11.h"
39 using namespace pybind11::literals;
46 uint8_t
const *buffer =
reinterpret_cast<uint8_t
const *
>(
47 PYBIND11_BYTES_AS_STRING(
bytes.ptr()));
48 size_t n =
static_cast<size_t>(PYBIND11_BYTES_SIZE(
bytes.ptr()));
49 return Ellipse::decode(buffer, n);
53 py::module::import(
"lsst.sphgeom.region");
55 py::class_<Ellipse, std::unique_ptr<Ellipse>, Region>
cls(mod,
"Ellipse");
57 cls.attr(
"TYPE_CODE") = py::int_(Ellipse::TYPE_CODE);
59 cls.def_static(
"empty", &Ellipse::empty);
60 cls.def_static(
"full", &Ellipse::full);
62 cls.def(py::init<>());
63 cls.def(py::init<Circle const &>(),
"circle"_a);
64 cls.def(py::init<UnitVector3d const &, Angle>(),
"center"_a,
65 "angle"_a =
Angle(0.0));
66 cls.def(py::init<UnitVector3d const &, UnitVector3d const &, Angle>(),
67 "focus1"_a,
"focus2"_a,
"alpha"_a);
68 cls.def(py::init<UnitVector3d const &, Angle, Angle, Angle>(),
"center"_a,
69 "alpha"_a,
"beta"_a,
"orientation"_a);
70 cls.def(py::init<Ellipse const &>(),
"ellipse"_a);
72 cls.def(
"__eq__", &Ellipse::operator==, py::is_operator());
73 cls.def(
"__ne__", &Ellipse::operator!=, py::is_operator());
75 cls.def(
"isEmpty", &Ellipse::isEmpty);
76 cls.def(
"isFull", &Ellipse::isFull);
77 cls.def(
"isGreatCircle", &Ellipse::isGreatCircle);
78 cls.def(
"isCircle", &Ellipse::isCircle);
79 cls.def(
"getTransformMatrix", &Ellipse::getTransformMatrix);
80 cls.def(
"getCenter", &Ellipse::getCenter);
81 cls.def(
"getF1", &Ellipse::getF1);
82 cls.def(
"getF2", &Ellipse::getF2);
83 cls.def(
"getAlpha", &Ellipse::getAlpha);
84 cls.def(
"getBeta", &Ellipse::getBeta);
85 cls.def(
"getGamma", &Ellipse::getGamma);
86 cls.def(
"complement", &Ellipse::complement);
87 cls.def(
"complemented", &Ellipse::complemented);
93 cls.def_static(
"decode",
97 cls.def(
"__str__", [](Ellipse
const &
self) {
98 return py::str(
"Ellipse({!s}, {!s}, {!s})")
99 .format(
self.getF1(),
self.getF2(),
self.getAlpha());
101 cls.def(
"__repr__", [](Ellipse
const &
self) {
102 return py::str(
"Ellipse({!r}, {!r}, {!r})")
103 .format(
self.getF1(),
self.getF2(),
self.getAlpha());
106 [](
const Ellipse &
self) {
return python::encode(
self); },