X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FINTERP_KERNEL%2FGeometric2D%2FInterpKernelGeo2DQuadraticPolygon.cxx;h=9bbe6ce5527972076ed35979623475828e6196d2;hb=1a9af3cb21941312cdda3f0466677b61beba7ade;hp=e4ecd62bcfb339bb1a5cb530f80921f7e6d4acfd;hpb=b4b11b30ec3c8c59b9124a2c4efbd4b99039556f;p=tools%2Fmedcoupling.git diff --git a/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DQuadraticPolygon.cxx b/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DQuadraticPolygon.cxx index e4ecd62bc..9bbe6ce55 100644 --- a/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DQuadraticPolygon.cxx +++ b/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DQuadraticPolygon.cxx @@ -72,7 +72,7 @@ QuadraticPolygon::~QuadraticPolygon() QuadraticPolygon *QuadraticPolygon::BuildLinearPolygon(std::vector& nodes) { - QuadraticPolygon *ret=new QuadraticPolygon; + QuadraticPolygon *ret(new QuadraticPolygon); std::size_t size=nodes.size(); for(std::size_t i=0;i& node QuadraticPolygon *QuadraticPolygon::BuildArcCirclePolygon(std::vector& nodes) { - QuadraticPolygon *ret=new QuadraticPolygon; + QuadraticPolygon *ret(new QuadraticPolygon); std::size_t size=nodes.size(); for(std::size_t i=0;i& n return ret; } +Edge *QuadraticPolygon::BuildLinearEdge(std::vector& nodes) +{ + if(nodes.size()!=2) + throw INTERP_KERNEL::Exception("QuadraticPolygon::BuildLinearEdge : input vector is expected to be of size 2 !"); + Edge *ret(new EdgeLin(nodes[0],nodes[1])); + nodes[0]->decrRef(); nodes[1]->decrRef(); + return ret; +} + +Edge *QuadraticPolygon::BuildArcCircleEdge(std::vector& nodes) +{ + if(nodes.size()!=3) + throw INTERP_KERNEL::Exception("QuadraticPolygon::BuildArcCircleEdge : input vector is expected to be of size 3 !"); + EdgeLin *e1(new EdgeLin(nodes[0],nodes[2])),*e2(new EdgeLin(nodes[2],nodes[1])); + SegSegIntersector inters(*e1,*e2); + bool colinearity=inters.areColinears(); + delete e1; delete e2; + Edge *ret(0); + if(colinearity) + ret=new EdgeLin(nodes[0],nodes[1]); + else + ret=new EdgeArcCircle(nodes[0],nodes[2],nodes[1]); + nodes[0]->decrRef(); nodes[1]->decrRef(); nodes[2]->decrRef(); + return ret; +} + void QuadraticPolygon::BuildDbgFile(const std::vector& nodes, const char *fileName) { std::ofstream file(fileName);