MeVisLab Toolbox Reference
ml::WEMSetOp Namespace Reference

Tool namespace for performing set operations on WEM patches. More...

Enumerations

enum  Axis { xAxis = 0 , yAxis , zAxis }
 Defines the main axes. More...
 

Functions

MLWEM_EXPORT void unify (WEMTrianglePatch *inPatch1, WEMTrianglePatch *inPatch2, WEMTrianglePatch *outPatch, unsigned int outputMode, TriangulationModes triangulationMode, WEMVector< WEMCut > *cuts=nullptr)
 Returns the union of the given patches. More...
 
MLWEM_EXPORT void intersect (WEMTrianglePatch *inPatch1, WEMTrianglePatch *inPatch2, WEMTrianglePatch *outPatch, unsigned int outputMode, TriangulationModes triangulationMode, WEMVector< WEMCut > *cuts=nullptr)
 Returns the intersection of the given patches. More...
 
MLWEM_EXPORT void difference (WEMTrianglePatch *inPatch1, WEMTrianglePatch *inPatch2, WEMTrianglePatch *outPatch, unsigned int outputMode, TriangulationModes triangulationMode, WEMVector< WEMCut > *cuts=nullptr)
 Returns the difference of the given patches. More...
 
void _boolOp (WEMTrianglePatch *inPatch1, WEMTrianglePatch *inPatch2, WEMTrianglePatch *outPatch, unsigned int boolOpMode, unsigned int outputMode, TriangulationModes triangulationMode, WEMVector< WEMCut > *cuts)
 Performs a boolean operation (union, intersection, difference) on given patches. More...
 
bool _intersectBoundingBoxes (WEMTrianglePatch *triPatch1, WEMTrianglePatch *triPatch2)
 Intersects bounding boxes of given patches. More...
 
void _updateClassification (WEMTrianglePatch *triPatch, WEMVector< WEMFaceCut > **faceCutTable, WEMTrianglePatch *rayPatch, WEMVector< WEMFace > *outerFaces=nullptr, WEMVector< WEMFace > *innerFaces=nullptr)
 Updates classification of nodes and faces based on face cuts. More...
 
Axis _getMinimalOverlapAxisOfBoundingBoxes (const Vector3 &min1, const Vector3 &min2, const Vector3 &max1, const Vector3 &max2)
 Returns the minimal overlap axis of the given bounding boxes. More...
 
void _resetOuterAndIntersectingFlags (WEMTrianglePatch *inPatch1, WEMTrianglePatch *inPatch2)
 Resets the status flags of nodes and faces. More...
 
void _performTrivialBoolOp (WEMTrianglePatch *inPatch1, WEMTrianglePatch *inPatch2, WEMTrianglePatch *outPatch, unsigned int boolOpMode, unsigned int outputMode)
 If the bounding boxes of the input WEMs do not intersect, perform a trivial Boolean operation. More...
 
bool _areWEMBoundingBoxesIntersecting (WEMPatch *wemPatch1, WEMPatch *wemPatch2)
 Returns whether the bounding boxes of the given WEMs are intersecting. More...
 
void _removeNonValidCuts (WEMVector< WEMFace > *intersectedFaces, WEMVector< WEMFaceCut > **faceCuts)
 Removes all non-valid face cuts from the common face cuts vector. More...
 
void _classifyIntersectionAndOutsideFaces (WEMTrianglePatch *inPatch1, WEMVector< WEMFace > *intersectedFaces)
 Checks all faces; if a face if fully outside, it is just marked, else it is also added to the given intersectedFaces vector. More...
 
void _addFacesToOutputPatch (WEMVector< WEMFace > *faces, WEMNode **nodeTable, WEMTrianglePatch *outPatch)
 Adds the given faces to the output patch. More...
 
WEMVector< WEMFaceCut > ** _setupFaceCuts (WEMTrianglePatch *inPatch, WEMVector< WEMFace > *intersectedFaces, WEMVector< WEMPartialFaceCut > **partialFaceCuts)
 Sets up the face cut vector. More...
 

Detailed Description

Tool namespace for performing set operations on WEM patches.

Enumeration Type Documentation

◆ Axis

Defines the main axes.

Enumerator
xAxis 
yAxis 
zAxis 

Definition at line 43 of file WEMSetOp.h.

Function Documentation

◆ _addFacesToOutputPatch()

void ml::WEMSetOp::_addFacesToOutputPatch ( WEMVector< WEMFace > *  faces,
WEMNode **  nodeTable,
WEMTrianglePatch outPatch 
)

Adds the given faces to the output patch.

◆ _areWEMBoundingBoxesIntersecting()

bool ml::WEMSetOp::_areWEMBoundingBoxesIntersecting ( WEMPatch wemPatch1,
WEMPatch wemPatch2 
)

Returns whether the bounding boxes of the given WEMs are intersecting.

◆ _boolOp()

void ml::WEMSetOp::_boolOp ( WEMTrianglePatch inPatch1,
WEMTrianglePatch inPatch2,
WEMTrianglePatch outPatch,
unsigned int  boolOpMode,
unsigned int  outputMode,
TriangulationModes  triangulationMode,
WEMVector< WEMCut > *  cuts 
)

Performs a boolean operation (union, intersection, difference) on given patches.

◆ _classifyIntersectionAndOutsideFaces()

void ml::WEMSetOp::_classifyIntersectionAndOutsideFaces ( WEMTrianglePatch inPatch1,
WEMVector< WEMFace > *  intersectedFaces 
)

Checks all faces; if a face if fully outside, it is just marked, else it is also added to the given intersectedFaces vector.

◆ _getMinimalOverlapAxisOfBoundingBoxes()

Axis ml::WEMSetOp::_getMinimalOverlapAxisOfBoundingBoxes ( const Vector3 min1,
const Vector3 min2,
const Vector3 max1,
const Vector3 max2 
)

Returns the minimal overlap axis of the given bounding boxes.

◆ _intersectBoundingBoxes()

bool ml::WEMSetOp::_intersectBoundingBoxes ( WEMTrianglePatch triPatch1,
WEMTrianglePatch triPatch2 
)

Intersects bounding boxes of given patches.

Sets outer and intersecting flags on nodes and faces. Returns whether there was any intersection.

◆ _performTrivialBoolOp()

void ml::WEMSetOp::_performTrivialBoolOp ( WEMTrianglePatch inPatch1,
WEMTrianglePatch inPatch2,
WEMTrianglePatch outPatch,
unsigned int  boolOpMode,
unsigned int  outputMode 
)

If the bounding boxes of the input WEMs do not intersect, perform a trivial Boolean operation.

◆ _removeNonValidCuts()

void ml::WEMSetOp::_removeNonValidCuts ( WEMVector< WEMFace > *  intersectedFaces,
WEMVector< WEMFaceCut > **  faceCuts 
)

Removes all non-valid face cuts from the common face cuts vector.

◆ _resetOuterAndIntersectingFlags()

void ml::WEMSetOp::_resetOuterAndIntersectingFlags ( WEMTrianglePatch inPatch1,
WEMTrianglePatch inPatch2 
)

Resets the status flags of nodes and faces.

◆ _setupFaceCuts()

WEMVector<WEMFaceCut>** ml::WEMSetOp::_setupFaceCuts ( WEMTrianglePatch inPatch,
WEMVector< WEMFace > *  intersectedFaces,
WEMVector< WEMPartialFaceCut > **  partialFaceCuts 
)

Sets up the face cut vector.

◆ _updateClassification()

void ml::WEMSetOp::_updateClassification ( WEMTrianglePatch triPatch,
WEMVector< WEMFaceCut > **  faceCutTable,
WEMTrianglePatch rayPatch,
WEMVector< WEMFace > *  outerFaces = nullptr,
WEMVector< WEMFace > *  innerFaces = nullptr 
)

Updates classification of nodes and faces based on face cuts.

◆ difference()

MLWEM_EXPORT void ml::WEMSetOp::difference ( WEMTrianglePatch inPatch1,
WEMTrianglePatch inPatch2,
WEMTrianglePatch outPatch,
unsigned int  outputMode,
TriangulationModes  triangulationMode,
WEMVector< WEMCut > *  cuts = nullptr 
)

Returns the difference of the given patches.

◆ intersect()

◆ unify()

MLWEM_EXPORT void ml::WEMSetOp::unify ( WEMTrianglePatch inPatch1,
WEMTrianglePatch inPatch2,
WEMTrianglePatch outPatch,
unsigned int  outputMode,
TriangulationModes  triangulationMode,
WEMVector< WEMCut > *  cuts = nullptr 
)

Returns the union of the given patches.