| 14 | |
| 15 | namespace py = pybind11; |
| 16 | void cstrXYZW(py::module_&m) |
| 17 | { |
| 18 | py::class_<LNLib::XYZW>(m, "XYZW") |
| 19 | .def(py::init<>()) |
| 20 | .def(py::init<LNLib::XYZ, double>()) |
| 21 | .def(py::init<double, double, double, double>()) |
| 22 | .def("GetWX", &LNLib::XYZW::GetWX) |
| 23 | .def("GetWY", &LNLib::XYZW::GetWY) |
| 24 | .def("GetWZ", &LNLib::XYZW::GetWZ) |
| 25 | .def("SetW", &LNLib::XYZW::SetW) |
| 26 | .def("GetW", &LNLib::XYZW::GetW) |
| 27 | .def_property("WX", |
| 28 | [](const LNLib::XYZW& self) { return self.WX(); }, |
| 29 | [](LNLib::XYZW& self, double val) { self.WX() = val; }) |
| 30 | .def_property("WY", |
| 31 | [](const LNLib::XYZW& self) { return self.WY(); }, |
| 32 | [](LNLib::XYZW& self, double val) { self.WY() = val; }) |
| 33 | .def_property("WZ", |
| 34 | [](const LNLib::XYZW& self) { return self.WZ(); }, |
| 35 | [](LNLib::XYZW& self, double val) { self.WZ() = val; }) |
| 36 | .def_property("W", |
| 37 | [](const LNLib::XYZW& self) { return self.W(); }, |
| 38 | [](LNLib::XYZW& self, double val) { self.W() = val; }) |
| 39 | .def("ToXYZ", &LNLib::XYZW::ToXYZ, py::arg("divideWeight")) |
| 40 | .def("IsAlmostEqualTo", &LNLib::XYZW::IsAlmostEqualTo) |
| 41 | .def("Distance", &LNLib::XYZW::Distance) |
| 42 | .def("__getitem__", [](const LNLib::XYZW& self, int index) { return self[index]; }) |
| 43 | .def("__setitem__", [](LNLib::XYZW& self, int index, double val) { self[index] = val; }) |
| 44 | .def(py::self + py::self) |
| 45 | .def(py::self - py::self) |
| 46 | .def(py::self * double()) |
| 47 | .def(double() * py::self) |
| 48 | .def(py::self / double()); |
| 49 | } |