Skip to content
Snippets Groups Projects
Commit a30d20be authored by Marco Biasini's avatar Marco Biasini Committed by Tobias Schmidt
Browse files

added repr() for vector and matrix types

parent 582a2879
No related branches found
No related tags found
No related merge requests found
......@@ -26,7 +26,13 @@ using namespace boost::python;
const Real Mat2_getitem(const geom::Mat2& m, tuple i) {return m(extract<int> (i[0]),extract<int> (i[1]));}
void Mat2_setitem(geom::Mat2& m,const tuple i,const Real val) {m(extract<int> (i[0]),extract<int> (i[1]))=val;}
String mat2_repr(const geom::Mat2& m) {
std::stringstream ss;
ss << "geom.Mat2(" << m(0,0) << ", " << m(0,1) << ", "
<< m(1,0) << ", " << m(1,1) << ")";
return ss.str();
}
void export_Mat2()
{
using namespace geom;
......@@ -36,6 +42,7 @@ void export_Mat2()
.def(self += self)
.def(self -= self)
.def(self + self)
.def("__repr__", mat2_repr)
.def(self - self)
.def(self *= Real())
.def(self /= Real())
......
......@@ -53,6 +53,17 @@ void Mat3_setslice(geom::Mat3& m,const slice s,const Mat2& m2)
m(start0+1,start1+1)=m2(1,1);
}
String mat3_repr(const geom::Mat3& m)
{
std::stringstream ss;
ss << "geom.Mat3(" << m(0,0) << ", " << m(0,1) << ", " << m(0,2) << ", "
<< m(1, 0) << ", " << m(1,1) << ", " << m(1, 2) << ", "
<< m(2, 0) << "," << m(2, 1) << ", " << m(2, 2) << ")";
return ss.str();
}
void export_Mat3()
{
class_<Mat3>("Mat3",init<>())
......@@ -61,6 +72,7 @@ void export_Mat3()
.def(init<Real,Real,Real>())
.def(self += self)
.def(self -= self)
.def("__repr__", mat3_repr)
.def(self + self)
.def(self - self)
.def(self *= Real())
......
......@@ -74,6 +74,17 @@ void Mat4_setslice3(geom::Mat4& m,const slice s,const Mat3& m2)
m(start0+2,start1+2)=m2(2,2);
}
String mat4_repr(const geom::Mat4& m) {
std::stringstream ss;
ss << "geom.Mat4("
<< m(0,0) << ", " << m(0,1) << ", " << m(0,2) << ", " << m(0,3) << ", "
<< m(1,0) << ", " << m(1,1) << ", " << m(1,2) << ", " << m(1,3) << ", "
<< m(2,0) << ", " << m(2,1) << ", " << m(2,2) << ", " << m(2,3) << ", "
<< m(3,0) << ", " << m(3,1) << ", " << m(3,2) << ", " << m(3,3) << ")";
return ss.str();
}
void export_Mat4()
{
......@@ -94,6 +105,7 @@ void export_Mat4()
.def(self * Vec4())
.def(self / Real())
.def(self_ns::str(self))
.def("__repr__", mat4_repr)
.def("__getitem__",Mat4_getitem)
.def("__getitem__",Mat4_getslice)
.def("__setitem__",Mat4_setitem)
......
......@@ -27,6 +27,14 @@ using namespace boost::python;
const Real Vec2_getitem(const geom::Vec2& v, int i) {return v[i];}
void Vec2_setitem(geom::Vec2& v,const int i,const Real val) {v[i]=val;}
String vec2_repr(const geom::Vec2& v)
{
std::stringstream ss;
ss << "geom.Vec2(" << v[0] << ", " << v[1] << ")";
return ss.str();
}
void export_Vec2()
{
using namespace geom;
......@@ -50,6 +58,7 @@ void export_Vec2()
.def(self / Real())
.def(self + self)
.def(self - self)
.def("__repr__", vec2_repr)
.def(self_ns::str(self))
.def("__getitem__",Vec2_getitem)
.def("__setitem__",Vec2_setitem)
......
......@@ -31,13 +31,13 @@ geom::Vec3 NormalizeV3(const geom::Vec3& v) {
return geom::Normalize(v);
}
void vec_test(const geom::Vec3List& v)
String vec3_repr(const geom::Vec3& v)
{
for (size_t i=0; i<v.size(); ++i) {
std::cout << i << v[i] << std::endl;
}
std::stringstream ss;
ss << "geom.Vec3(" << v[0] << ", " << v[1] << "," << v[2] << ")";
return ss.str();
}
void export_Vec3()
{
using namespace geom;
......@@ -64,6 +64,7 @@ void export_Vec3()
.def(self_ns::str(self))
.def("__getitem__",Vec3_getitem)
.def("__setitem__",Vec3_setitem)
.def("__repr__", vec3_repr)
.def("GetX", &Vec3::GetX)
.def("GetY", &Vec3::GetY)
.def("GetZ", &Vec3::GetZ)
......@@ -82,5 +83,4 @@ void export_Vec3()
.add_property("inertia", &Vec3List::GetInertia)
.add_property("principal_axes", &Vec3List::GetPrincipalAxes)
;
def("vec_test", &vec_test);
}
......@@ -26,6 +26,13 @@ using namespace boost::python;
const Real Vec4_getitem(const geom::Vec4& v, int i) {return v[i];}
void Vec4_setitem(geom::Vec4& v,const int i,const Real val) {v[i]=val;}
String vec4_repr(const geom::Vec4& v)
{
std::stringstream ss;
ss << "geom.Vec4(" << v[0] << ", " << v[1] << "," << v[2]
<< ", " << v[3] << ")";
return ss.str();
}
void export_Vec4()
{
......@@ -40,6 +47,7 @@ void export_Vec4()
.def(self /= Real())
.def(self += Real())
.def(self += self)
.def("__repr__", vec4_repr)
.def(self -= self)
.def(-self)
.def(self * Real())
......
......@@ -42,10 +42,10 @@ void export_VecMat2_op()
def("Length",Vec2Length);
def("Length2",Vec2Length2);
def("Equal",Vec2Equal);
def("Equal",Vec2Equal, (arg("v1"), arg("v2"), arg("epsilon")=EPSILON));
def("CompMultiply",Vec2CompMultiply);
def("CompDivide",Vec2CompDivide);
def("Equal",Mat2Equal);
def("Equal",Mat2Equal, (arg("m1"), arg("m2"), arg("epsilon")=EPSILON));
def("Dot",Mat2Dot);
def("Det",Mat2Det);
def("Invert",Mat2Invert);
......
......@@ -44,11 +44,11 @@ void export_VecMat3_op()
def("Length",Vec3Length);
def("Length2",Vec3Length2);
def("Equal",Vec3Equal);
def("Equal",Vec3Equal, (arg("v1"), arg("v2"), arg("epsilon")=EPSILON));
def("CompMultiply",Vec3CompMultiply);
def("CompDivide",Vec3CompDivide);
def("Distance",Vec3Distance);
def("Equal",Mat3Equal);
def("Equal",Mat3Equal, (arg("m1"), arg("m2"), arg("epsilon")=EPSILON));
def("DihedralAngle", &DihedralAngle);
def("Dot",Mat3Dot);
def("Det",Mat3Det);
......
......@@ -42,12 +42,12 @@ void export_VecMat4_op()
{
using namespace geom;
def("Length",Vec4Length);
def("Equal",Vec4Equal, (arg("v1"), arg("v2"), arg("epsilon")=EPSILON));
def("Length2",Vec4Length2);
def("Equal",Vec4Equal);
def("CompMultiply",Vec4CompMultiply);
def("CompDivide",Vec4CompDivide);
def("Equal",Mat4Equal);
def("Equal",Mat4Equal, (arg("m1"), arg("m2"), arg("epsilon")=EPSILON));
def("Dot",Mat4Dot);
def("Det",Mat4Det);
def("Transpose",Mat4Transpose);
......
......@@ -11,6 +11,7 @@ set(GEOM_UNITTESTS
test_vec3.cc
test_vec4.cc
tests.cc
test_repr.py
)
ost_unittest(geom "${GEOM_UNITTESTS}")
import unittest
from ost import geom
class TestRepr(unittest.TestCase):
def testReprVec2(self):
v=geom.Vec2(1,2)
v2=eval(repr(v))
assert geom.Equal(v, v2)
def testReprVec3(self):
v=geom.Vec3(1,2,3)
v2=eval(repr(v))
assert geom.Equal(v, v2)
def testReprVec4(self):
v=geom.Vec4(1,2,3,4)
v2=eval(repr(v))
assert geom.Equal(v, v2)
def testReprMat2(self):
m=geom.Mat2(1,2,3,4)
m2=eval(repr(m))
assert geom.Equal(m, m2)
def testReprMat3(self):
m=geom.Mat3(1,2,3,4,5,6,7,8,9)
m2=eval(repr(m))
assert geom.Equal(m, m2)
def testReprMat4(self):
m=geom.Mat4(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
m2=eval(repr(m))
assert geom.Equal(m, m2)
if __name__ == "__main__":
try:
unittest.main()
except Exception, e:
print e
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment