-// 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
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
{
bool isEnd2(unsigned rk) const;
void clear();
unsigned getNumberOfAssociations() const;
+ void updateMergedNodes(int e1Start, int e1End, int e2Start, int e2End, std::map<int,int>& mergedNodes);
+ private:
+ static void PushInMap(int key, int value, std::map<int,int>& mergedNodes);
private:
unsigned _ass1Start1 : 1;
unsigned _ass1End1 : 1;
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 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.