@@ -17,6 +17,42 @@ PYBIND11_MODULE(_eigen, m) {
17
17
}),
18
18
" matrix" _a.none (false ))
19
19
20
+ .def (" copy" , [](const Eigen::Affine2d& self) {
21
+ return Eigen::Affine2d (self);
22
+ })
23
+ .def (" __copy__" , [](const Eigen::Affine2d& self) {
24
+ return Eigen::Affine2d (self);
25
+ })
26
+ .def (" __deepcopy__" , [](const Eigen::Affine2d& self, py::dict) {
27
+ return Eigen::Affine2d (self);
28
+ }, " memo" _a)
29
+ .def (py::pickle (
30
+ [](const Eigen::Affine2d &self) { // __getstate__
31
+ return py::make_tuple (
32
+ self (0 , 0 ), self (0 , 1 ), self (0 , 2 ),
33
+ self (1 , 0 ), self (1 , 1 ), self (1 , 2 ));
34
+ },
35
+ [](const py::tuple& t) { // __setstate__
36
+ if (t.size () != 6 ) {
37
+ throw std::runtime_error (" Invalid state!" );
38
+ }
39
+
40
+ Eigen::Affine2d ret;
41
+
42
+ ret (0 , 0 ) = t[0 ].cast <double >();
43
+ ret (0 , 1 ) = t[1 ].cast <double >();
44
+ ret (0 , 2 ) = t[2 ].cast <double >();
45
+
46
+ ret (1 , 0 ) = t[3 ].cast <double >();
47
+ ret (1 , 1 ) = t[4 ].cast <double >();
48
+ ret (1 , 2 ) = t[5 ].cast <double >();
49
+
50
+ ret.makeAffine ();
51
+
52
+ return ret;
53
+ }
54
+ ))
55
+
20
56
.def (" get_matrix" , [](const Eigen::Affine2d& self) {
21
57
return self.matrix ();
22
58
})
0 commit comments