X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FINTERP_KERNEL%2FGeometric2D%2FInterpKernelGeo2DEdge.hxx;h=43eed2a8727c519d5f58b26da8a5beebb160cef4;hb=7de62920cadf9bfcd33addf31d4a8256bffaf1ec;hp=dd67a8000c3c1ae7786a66d4a7a3a02d69d08bca;hpb=872c3f1848696792fb3db8bb5cdcca79095f8b1c;p=tools%2Fmedcoupling.git diff --git a/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.hxx b/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.hxx index dd67a8000..43eed2a87 100644 --- a/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.hxx +++ b/src/INTERP_KERNEL/Geometric2D/InterpKernelGeo2DEdge.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D +// Copyright (C) 2007-2016 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -34,34 +34,34 @@ namespace INTERP_KERNEL { typedef enum - { - SEG = 1, - ARC_CIRCLE = 4, - ARC_PARABOL = 8 - } TypeOfFunction; + { + SEG = 1, + ARC_CIRCLE = 4, + ARC_PARABOL = 8 + } TypeOfFunction; typedef enum - { - CIRCLE = 0 , - PARABOL = 1 - } TypeOfMod4QuadEdge; + { + CIRCLE = 0 , + PARABOL = 1 + } TypeOfMod4QuadEdge; typedef enum - { - START = 5, - END = 1, - INSIDE = 2, - OUT_BEFORE = 3, - OUT_AFTER = 4 - } TypeOfLocInEdge; //see Edge::OFFSET_FOR_TYPEOFLOCINEDGE - + { + START = 5, + END = 1, + INSIDE = 2, + OUT_BEFORE = 3, + OUT_AFTER = 4 + } TypeOfLocInEdge; //see Edge::OFFSET_FOR_TYPEOFLOCINEDGE + typedef enum - { - FULL_IN_1 = 1, - FULL_ON_1 = 4, - FULL_OUT_1 = 2, - FULL_UNKNOWN = 3 - } TypeOfEdgeLocInPolygon; + { + FULL_IN_1 = 1, + FULL_ON_1 = 4, + FULL_OUT_1 = 2, + FULL_UNKNOWN = 3 + } TypeOfEdgeLocInPolygon; class INTERPKERNEL_EXPORT MergePoints { @@ -82,6 +82,9 @@ namespace INTERP_KERNEL bool isEnd2(unsigned rk) const; void clear(); unsigned getNumberOfAssociations() const; + void updateMergedNodes(int e1Start, int e1End, int e2Start, int e2End, std::map& mergedNodes); + private: + static void PushInMap(int key, int value, std::map& mergedNodes); private: unsigned _ass1Start1 : 1; unsigned _ass1End1 : 1; @@ -143,11 +146,12 @@ namespace INTERP_KERNEL class INTERPKERNEL_EXPORT EdgeIntersector { protected: - //! All non symetric methods are relative to 'e1'. + //! All non symmetric methods are relative to 'e1'. EdgeIntersector(const Edge& e1, const Edge& e2):_e1(e1),_e2(e2) { } public: virtual ~EdgeIntersector() { } virtual bool keepOrder() const = 0; + virtual bool areColinears() const = 0; //!to call only if 'areOverlapped' have been set to true when areOverlappedOrOnlyColinears was called virtual bool haveTheySameDirection() const = 0; //!to call only if 'areOverlapped' have been set to true when areOverlappedOrOnlyColinears was called @@ -244,7 +248,10 @@ namespace INTERP_KERNEL virtual double getCurveLength() const = 0; virtual void getBarycenter(double *bary) const = 0; virtual void getBarycenterOfZone(double *bary) const = 0; + //! return the middle of two points virtual void getMiddleOfPoints(const double *p1, const double *p2, double *mid) const = 0; + //! return the middle of two points respecting the orientation defined by this (relevant for arc of circle). By default same as getMiddleOfPoints() + virtual void getMiddleOfPointsOriented(const double *p1, const double *p2, double *mid) const; //! Retrieves a point that is owning to this, well placed for IN/OUT detection of this. Typically midlle of this is returned. virtual Node *buildRepresentantOfMySelf() const = 0; //! Given a magnitude specified by sub-type returns if in or not. See getCharactValue method.