Go to the documentation of this file.
56 #ifndef surfaceIntersection_H
57 #define surfaceIntersection_H
73 class triSurfaceSearch;
75 class edgeIntersections;
187 const scalar startTol,
198 const bool isFirstSurf,
212 const bool isFirstSurf,
227 const bool isFirstSurf,
228 const bool isSelfIntersection,
const labelListList & surf2EdgeCuts() const
const labelPairLookup & facePairToVertex() const
const labelPairLookup & facePairToEdge() const
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects.
static labelList filterLabels(const labelList &elems, labelList &map)
Remove all duplicate elements.
const labelListList & edgeCuts(const bool) const
Access either surf1EdgeCuts (isFirstSurface = true) or.
static label classify(const scalar startTol, const scalar endTol, const point &p, const edge &e, const pointField &points)
Detect if point close to edge of end. Returns -1: not close.
static void removeDuplicates(const labelList &map, labelList &labels)
Remove duplicates from ordered dynamic list. Returns map from old.
pointField cutPoints_
Newly introduced points.
An edge is a list of two point labels. The functionality it provides supports the discretisation on a...
void doCutEdges(const triSurface &surf1, const triSurfaceSearch &querySurf2, const bool isFirstSurf, const bool isSelfIntersection, DynamicList< edge > &allCutEdges, DynamicList< point > &allCutPoints, List< DynamicList< label > > &surfEdgeCuts)
Cut edges of surf1 with surface 2.
static edgeList filterEdges(const edgeList &, labelList &map)
surfaceIntersection()
Construct null.
static void writeOBJ(const point &pt, Ostream &os)
Write point in obj format.
void writeIntersectedEdges(const triSurface &surf, const labelListList &edgeCutVerts, Ostream &os) const
Debugging: Dump intersected edges to stream.
ClassName("surfaceIntersection")
Helper class to search on triSurface.
static label getEdge(const triSurface &surf, const label faceI, const label fp)
Get edge label of edge between face vertices fp and fp+1.
const labelListList & surf1EdgeCuts() const
This class describes the interaction of (usually) a face and a point. It carries the info of a succes...
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Pre-declare SubField and related Field type.
Basic surface-surface intersection description. Constructed from two surfaces it creates a descriptio...
Triangulated surface description with patch information.
labelListList surf2EdgeCuts_
Edges on surf2 that are cut. From edge on surf2 to label in cutPoint.
static void inlineRemap(const labelList &map, labelList &elems)
Apply map to elements of a labelList.
void classifyHit(const triSurface &surf1, const scalarField &surf1PointTol, const triSurface &surf2, const bool isFirstSurf, const label edgeI, const scalar tolDim, const pointIndexHit &pHit, DynamicList< edge > &allCutEdges, DynamicList< point > &allCutPoints, List< DynamicList< label > > &surfEdgeCuts)
Investigate pHit to whether is case of point hits point,.
edgeList cutEdges_
Newly introduced edges (are on both surfaces). Reference into.
const pointField & cutPoints() const
const double e
Elementary charge.
const edgeList & cutEdges() const
static void transfer(List< DynamicList< T > > &, List< List< T > > &)
Transfer contents of List<DynamicList<..> > to List<List<..>>
void storeIntersection(const bool isFirstSurf, const labelList &facesA, const label faceB, DynamicList< edge > &, DynamicList< point > &)
Update reference between faceA and faceB. Updates facePairToVertex_.
labelPairLookup facePairToEdge_
From face on surf1 and face on surf2 to intersection edge.
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
labelListList surf1EdgeCuts_
Edges on surf1 that are cut. From edge on surf1 to label in cutPoint.
static scalar minEdgeLen(const triSurface &surf, const label pointI)
Get minimum length of all edges connected to point.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Holder of intersections of edges of a surface with another surface. Optionally shuffles around points...
labelPairLookup facePairToVertex_
From face on surf1 and face on surf2 to intersection point.
static bool excludeEdgeHit(const triSurface &surf, const label edgeI, const label faceI, const scalar tol)
Do some checks if edge and face (resulting from hit)