Basic surface-surface intersection description. Constructed from two surfaces it creates a description of the intersection. More...
#include <meshTools/surfaceIntersection.H>
Basic surface-surface intersection description. Constructed from two surfaces it creates a description of the intersection.
The intersection information consists of the intersection line(s) with new points, new edges between points (note that these edges and points are on both surfaces) and various addressing from original surface faces/edges to intersection and vice versa.
Gets either precalculated intersection information or calculates it itself. Algorithm works by intersecting all edges of one surface with the other surface and storing a reference from both faces (one on surface1, one on surface 2) to the vertex. If the reference re-occurs we have the second hit of both faces and an edge is created between the retrieved vertex and the new one.
Note: when doing intersecting itself uses intersection::planarTol() as a fraction of current edge length to determine if intersection is a point-touching one instead of an edge-piercing action.
Definition at line 81 of file surfaceIntersection.H.
Public Member Functions | |
ClassName ("surfaceIntersection") | |
surfaceIntersection () | |
Construct null.
| |
surfaceIntersection (const triSurface &surf1, const edgeIntersections &intersections1, const triSurface &surf2, const edgeIntersections &intersections2) | |
Construct from precalculated intersection information.
| |
surfaceIntersection (const triSurfaceSearch &querySurf1, const triSurfaceSearch &querySurf2) | |
Construct from two surfaces. Does all its own cutting.
| |
surfaceIntersection (const triSurfaceSearch &querySurf1) | |
Special: intersect surface with itself. Used to check for.
| |
const pointField & | cutPoints () const |
const edgeList & | cutEdges () const |
const labelPairLookup & | facePairToEdge () const |
const labelListList & | edgeCuts (const bool) const |
Access either surf1EdgeCuts (isFirstSurface = true) or.
| |
const labelListList & | surf1EdgeCuts () const |
const labelListList & | surf2EdgeCuts () const |
Construct null.
Definition at line 720 of file surfaceIntersection.C.
surfaceIntersection | ( | const triSurface & | surf1, |
const edgeIntersections & | intersections1, | ||
const triSurface & | surf2, | ||
const edgeIntersections & | intersections2 | ||
) |
Construct from precalculated intersection information.
Advantage: intersection information is guaranteed to have no degenerate cuts.
Definition at line 836 of file surfaceIntersection.C.
References Foam::abort(), DynamicList< T, SizeInc, SizeMult, SizeDiv >::append(), PrimitivePatch< Face, FaceList, PointField, PointType >::edgeFaces(), Foam::endl(), Foam::FatalError, FatalErrorIn, forAll, forAllConstIter, HashTable< T, Key, Hash >::found(), PointIndexHit< Point >::hitPoint(), PointIndexHit< Point >::index(), HashSet< Key, Hash >::insert(), PrimitivePatch< Face, FaceList, PointField, PointType >::nEdges(), PrimitivePatch< Face, FaceList, PointField, PointType >::nPoints(), Foam::Pout, List< T >::size(), and Foam::meshTools::writeOBJ().
surfaceIntersection | ( | const triSurfaceSearch & | querySurf1, |
const triSurfaceSearch & | querySurf2 | ||
) |
Construct from two surfaces. Does all its own cutting.
Has problems with degenerate cuts
Definition at line 733 of file surfaceIntersection.C.
References Foam::endl(), PrimitivePatch< Face, FaceList, PointField, PointType >::nEdges(), PrimitivePatch< Face, FaceList, PointField, PointType >::nPoints(), Foam::Pout, triSurfaceSearch::surface(), and Foam::meshTools::writeOBJ().
surfaceIntersection | ( | const triSurfaceSearch & | querySurf1 ) |
Special: intersect surface with itself. Used to check for.
self-intersection.
Definition at line 999 of file surfaceIntersection.C.
References PrimitivePatch< Face, FaceList, PointField, PointType >::edges(), edge::end(), Foam::endl(), forAll, PrimitivePatch< Face, FaceList, PointField, PointType >::localPoints(), edge::mag(), Foam::mergePoints(), Foam::min(), PrimitivePatch< Face, FaceList, PointField, PointType >::nEdges(), intersection::planarTol(), Foam::Pout, List< T >::size(), edge::start(), triSurfaceSearch::surface(), and Foam::meshTools::writeOBJ().
ClassName | ( | "surfaceIntersection" | ) |
const Foam::pointField & cutPoints | ( | ) | const |
Definition at line 1153 of file surfaceIntersection.C.
Referenced by edgeSurface::edgeSurface(), and intersectedSurface::intersectedSurface().
const Foam::edgeList & cutEdges | ( | ) | const |
Definition at line 1159 of file surfaceIntersection.C.
Referenced by edgeSurface::edgeSurface(), and intersectedSurface::intersectedSurface().
const Foam::labelPairLookup & facePairToEdge | ( | ) | const |
Definition at line 1165 of file surfaceIntersection.C.
Referenced by edgeSurface::edgeSurface().
const Foam::labelListList & edgeCuts | ( | const bool | isFirstSurf ) | const |
Access either surf1EdgeCuts (isFirstSurface = true) or.
surf2EdgeCuts
Definition at line 1172 of file surfaceIntersection.C.
Referenced by edgeSurface::edgeSurface().
const Foam::labelListList & surf1EdgeCuts | ( | ) | const |
Definition at line 1187 of file surfaceIntersection.C.
const Foam::labelListList & surf2EdgeCuts | ( | ) | const |
Definition at line 1193 of file surfaceIntersection.C.