-// Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+// Copyright (C) 2007-2014 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
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 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
#define __INTERPKERNELGEO2DEDGE_HXX__
#include "INTERPKERNELDefines.hxx"
-#include "InterpKernelGeo2DComposedEdge.hxx"
#include "InterpKernelException.hxx"
#include "InterpKernelGeo2DBounds.hxx"
#include "InterpKernelGeo2DNode.hxx"
unsigned _ass2End2 : 1;
};
+ class Edge;
+ class ComposedEdge;
/*!
* This class is in charge to store an intersection point as result of \b non oververlapping edge intersection.
* This class manages the cases when intersect element is one of the extrimities of edge1 and/or edge2.
/*!
* Deal with an oriented edge of a polygon.
- * An Edge is definied with a start node a end node and an equation of 1D curve.
+ * An Edge is defined with a start node, an end node and an equation of 1D curve.
* All other attributes are mutable because they don't impact these 3 invariant attributes.
- * To be exact start and end node can change (adress) but their location remain
+ * To be exact start and end nodes can change (address) but their location remain
* the same (at precision).
*/
class INTERPKERNEL_EXPORT Edge
static Edge *BuildEdgeFrom(Node *start, Node *end);
template<TypeOfMod4QuadEdge type>
static Edge *BuildEdgeFrom(Node *start, Node *middle, Node *end);
+ static Edge *BuildEdgeFrom3Points(const double *start, const double *middle, const double *end);
virtual void update(Node *m) = 0;
//! returns area between this and axe Ox delimited along Ox by _start and _end.
virtual double getAreaOfZone() const = 0;
virtual double getCurveLength() const = 0;
virtual void getBarycenter(double *bary) const = 0;
virtual void getBarycenterOfZone(double *bary) const = 0;
+ virtual void getMiddleOfPoints(const double *p1, const double *p2, double *mid) const = 0;
//! 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.
virtual void dumpInXfigFile(std::ostream& stream, bool direction, int resolution, const Bounds& box) const = 0;
bool isEqual(const Edge& other) const;
public:
+ bool sortSubNodesAbs(const double *coo, std::vector<int>& subNodes);
void sortIdsAbs(const std::vector<INTERP_KERNEL::Node *>& addNodes, const std::map<INTERP_KERNEL::Node *, int>& mapp1, const std::map<INTERP_KERNEL::Node *, int>& mapp2, std::vector<int>& edgesThis);
virtual void fillGlobalInfoAbs(bool direction, const std::map<INTERP_KERNEL::Node *,int>& mapThis, const std::map<INTERP_KERNEL::Node *,int>& mapOther, int offset1, int offset2, double fact, double baryX, double baryY,
std::vector<int>& edgesThis, std::vector<double>& addCoo, std::map<INTERP_KERNEL::Node *,int> mapAddCoo) const = 0;