MeVisLab Toolbox 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... | |
Tool namespace for performing set operations on WEM patches.
enum ml::WEMSetOp::Axis |
void ml::WEMSetOp::_addFacesToOutputPatch | ( | WEMVector< WEMFace > * | faces, |
WEMNode ** | nodeTable, | ||
WEMTrianglePatch * | outPatch | ||
) |
Adds the given faces to the output patch.
Returns whether the bounding boxes of the given WEMs are intersecting.
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.
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.
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.
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.
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.
void ml::WEMSetOp::_removeNonValidCuts | ( | WEMVector< WEMFace > * | intersectedFaces, |
WEMVector< WEMFaceCut > ** | faceCuts | ||
) |
Removes all non-valid face cuts from the common face cuts vector.
void ml::WEMSetOp::_resetOuterAndIntersectingFlags | ( | WEMTrianglePatch * | inPatch1, |
WEMTrianglePatch * | inPatch2 | ||
) |
Resets the status flags of nodes and faces.
WEMVector<WEMFaceCut>** ml::WEMSetOp::_setupFaceCuts | ( | WEMTrianglePatch * | inPatch, |
WEMVector< WEMFace > * | intersectedFaces, | ||
WEMVector< WEMPartialFaceCut > ** | partialFaceCuts | ||
) |
Sets up the face cut vector.
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.
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.
MLWEM_EXPORT void ml::WEMSetOp::intersect | ( | WEMTrianglePatch * | inPatch1, |
WEMTrianglePatch * | inPatch2, | ||
WEMTrianglePatch * | outPatch, | ||
unsigned int | outputMode, | ||
TriangulationModes | triangulationMode, | ||
WEMVector< WEMCut > * | cuts = nullptr |
||
) |
Returns the intersection of the given patches.
Referenced by ml::TSubImage< DATATYPE >::calculateMinMax(), ml::TVirtualVolume< DATATYPE >::copyFromSubImage(), ml::TVirtualVolume< DATATYPE >::copyMaskToSubImage(), ml::TSubImage< DATATYPE >::copySubImageReorderColorPlanesToInterleaved(), ml::TSubImage< DATATYPE >::copySubImageTyped(), ml::TVirtualVolume< DATATYPE >::fill(), ml::SubImage::getValidRegion(), ml::SubImageBoxd::intersect(), and ml::TSubImageBox< intT >::intersect().
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.