1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
//------------------------------------------------------------------------------
// This file is part of the OpenStructure project <www.openstructure.org>
//
// Copyright (C) 2008-2020 by the OpenStructure authors
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License as published by the Free
// Software Foundation; either version 3.0 of the License, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
// details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this library; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
//------------------------------------------------------------------------------
#include <boost/python.hpp>
using namespace boost::python;
#include <ost/geom/geom.hh>
geom::Vec2 Rectangle2_getitem(const geom::Rectangle2& r, unsigned int i)
{
return r[i];
}
void Rectangle2_setitem(geom::Rectangle2& r,unsigned int i,
const geom::Vec2& val)
{
r[i]=val;
}
void export_Composite2()
{
using namespace geom;
class_<Line2>("Line2",init<>())
.def(init<const Vec2&,const Vec2&>())
.def(self == self)
.def("At",&Line2::At)
.def("GetOrigin",&Line2::GetOrigin)
.def("GetDirection",&Line2::GetDirection)
.add_property("direction", &Line2::GetDirection)
.add_property("origin", &Line2::GetOrigin)
;
class_<Polygon2>("Polygon2",init<>())
.def(init<const std::vector<Vec2>& >())
.def("GetNode",&Polygon2::GetNode)
.def("AddNode",&Polygon2::AddNode)
.def("GetNodeCount",&Polygon2::GetNodeCount)
.def("GetArea",&Polygon2::GetArea)
.def("GetCentroid",&Polygon2::GetCentroid)
.def("Expand",&Polygon2::Expand)
.def(self + Vec2())
.def(self * Real())
;
class_<Rectangle2>("Rectangle2",init<>())
.def(init<Vec2,Vec2 >())
.def("GetWidth",&Rectangle2::GetWidth)
.def("GetHeight",&Rectangle2::GetHeight)
.def("GetArea",&Rectangle2::GetArea)
.def("GetStart",&Rectangle2::GetStart)
.def("GetEnd",&Rectangle2::GetEnd)
.def("SetStart",&Rectangle2::SetStart)
.def("SetEnd",&Rectangle2::SetEnd)
.def("__getitem__",Rectangle2_getitem)
.def("__setitem__",Rectangle2_setitem)
;
class_<Ellipse2>("Ellipse2",init<>())
.def(init<Vec2,Real,Real,Real >())
.def("At",&Ellipse2::At)
.def("AtAngle",&Ellipse2::AtAngle)
.def("GetBoundingBox",&Ellipse2::GetBoundingBox)
.def("GetA",&Ellipse2::GetA)
.def("GetB",&Ellipse2::GetB)
.def("GetGamma",&Ellipse2::GetGamma)
.def("GetArea",&Ellipse2::GetArea)
.def("GetOrigin",&Ellipse2::GetOrigin)
.def("SetA",&Ellipse2::SetA)
.def("SetB",&Ellipse2::SetB)
.def("SetGamma",&Ellipse2::SetGamma)
.def("SetOrigin",&Ellipse2::SetOrigin)
;
class_<Circle2>("Circle2",init<>())
.def(init<Vec2&,Real>())
.def("GetRadius",&Circle2::GetRadius)
.def("SetRadius",&Circle2::SetRadius)
.def("GetCenter",&Circle2::GetCenter)
.def("SetCenter",&Circle2::SetCenter)
.def("GetCircumference",&Circle2::GetCircumference)
.def("GetArea",&Circle2::GetArea)
;
}
|