MeVisLab Toolbox Reference
ml::WEMTriangle Class Reference

Defines the mesh component: triangle. More...

#include <WEMTriangle.h>

Inheritance diagram for ml::WEMTriangle:
ml::WEMFace ml::WEMPrimitive

Public Member Functions

 WEMTriangle ()
 Standard constructor.
 
 WEMTriangle (const WEMTriangle &t)
 Standard copy constructor.
 
 WEMTriangle (WEMTriangle &&t) noexcept
 Move constructor.
 
WEMTriangleoperator= (WEMTriangle &&t) noexcept
 Move assignment operator.
 
 ~WEMTriangle () override
 Standard destructor.
 
void reset ()
 Resets the object to default constructed state.
 
void clone (WEMTriangle *triangle)
 Clones given triangle.
 
void computeNormal () override
 Computes the normal.
 
unsigned int getNumNodes () const override
 Returns the number of nodes.
 
int getIndex (WEMNode *node) const override
 Returns the index of the given node.
 
WEMNodegetNodeAt (unsigned int index) override
 Returns the node at the given index in this face.
 
const WEMNodegetNodeAt (unsigned int index) const override
 Returns the node at the given index in this face.
 
void setNode (unsigned int index, WEMNode *node) override
 Sets the given node to the given index in this face.
 
virtual void setNodes (WEMNode *node1, WEMNode *node2, WEMNode *node3)
 Sets the given nodes.
 
void replace (WEMNode *orig, WEMNode *replacement) override
 Replaces the given orig node by the given replace node.
 
bool contains (WEMNode *node) const override
 Returns whether this face contains the given node.
 
Vector3 getNodePositionAt (unsigned int index) const override
 Returns the position of a node at the given index.
 
int getIndex (WEMEdge *edge) const override
 Returns the index of the given edge.
 
WEMEdgegetEdgeAt (unsigned int index) override
 Returns the edge at the given index in this face.
 
const WEMEdgegetEdgeAt (unsigned int index) const override
 Returns the edge at the given index in this face.
 
void setEdge (unsigned int index, WEMEdge *edge) override
 Sets the given edge to the given index in this face.
 
virtual void setEdges (WEMEdge *edge1, WEMEdge *edge2, WEMEdge *edge3)
 Sets the given edges.
 
void replace (WEMEdge *orig, WEMEdge *replacement) override
 Replaces the given orig node by the given replace edge.
 
bool contains (WEMEdge *edge) const override
 Returns whether this face contains the given edge.
 
void removeEdges () override
 Removes all edge pointers of this face.
 
Vector3 getCentroid () const override
 Returns the geometric centroid of this face.
 
void getCentroid (Vector3 &centroid) const override
 
double getPerimeter () const override
 Calculates the perimeter of this face.
 
double getArea () const override
 Calculates the area of this face.
 
WEMNodegetOther (WEMNode *n1, WEMNode *n2) override
 Returns the node incident to this face that is not given as a parameter.
 
const WEMNodegetOther (WEMNode *n1, WEMNode *n2) const override
 Returns the node incident to this face that is not given as a parameter.
 
WEMEdgegetOther (WEMEdge *e1, WEMEdge *e2) override
 Returns the edge incident to this face that is not given as a parameter.
 
const WEMEdgegetOther (WEMEdge *e1, WEMEdge *e2) const override
 Returns the edge incident to this face that is not given as a parameter.
 
WEMEdgegetEdgeNotContaining (WEMNode *n) override
 Returns the edge not containing given node.
 
const WEMEdgegetEdgeNotContaining (WEMNode *n) const override
 Returns the edge not containing given node.
 
double getQuality () const override
 Calculates the quality of the face.
 
int isConcave () const override
 Checks whether this face a concave polygon. Return the number of concavities.
 
virtual bool isFolding (WEMNode *node, const Vector3 &position) const
 Returns whether this face is folding?
 
virtual bool pointInTriangle (const Vector3 &position) const
 Returns whether the given point is in this triangle.
 
virtual bool rayIntersect (const Vector3 &origin, const Vector3 &direction) const
 Returns whether the given ray intersects this triangle?
 
void mirror () override
 Mirrors this face. Note that the edge information gets corrupted! Use WEM::buildEdgeConnectivity afterwards!
 
- Public Member Functions inherited from ml::WEMFace
 WEMFace ()
 Standard constructor.
 
 WEMFace (const WEMFace &f)
 Standard copy constructor.
 
 WEMFace (WEMFace &&f) noexcept
 
WEMFaceoperator= (WEMFace &&f) noexcept
 
 ~WEMFace () override
 Standard destructor.
 
void reset ()
 Resets the object to default constructed state.
 
void clone (WEMFace *face)
 Clones given face.
 
Vector3 getNormal () const
 Returns the normal.
 
void setNormal (const Vector3 &normal)
 Sets the normal.
 
virtual WEMBoundingBox getBoundingBox ()
 Calculates the bounding box of face.
 
bool isBoundingBoxValid () const
 
void invalidateBoundingBox ()
 
- Public Member Functions inherited from ml::WEMPrimitive
 WEMPrimitive ()
 
 WEMPrimitive (const WEMPrimitive &)=default
 
 WEMPrimitive (WEMPrimitive &&p) noexcept
 
WEMPrimitiveoperator= (const WEMPrimitive &)=default
 
WEMPrimitiveoperator= (WEMPrimitive &&p) noexcept
 
virtual ~WEMPrimitive ()=default
 Standard destructor.
 
void resetPrimitive ()
 Resets the object to its default constructed state.
 
int getEntryNumber () const
 Returns the entry number.
 
void setEntryNumber (int e)
 Sets the entry number.
 
bool isSet (unsigned int bit) const
 Returns whether the bit-flag is set.
 
void setFlag (unsigned int bit)
 Sets the given bit-flag.
 
void unsetFlag (unsigned int bit)
 Unsets the given bit-flag.
 
void clearFlag ()
 Clears the bit-flag.
 
bool isTraversed () const
 Returns whether this primitive has been traversed.
 
void setTraversed (bool traversed)
 Sets the traversed flag.
 
int getHeapPosition () const
 Returns the heap position.
 
bool inHeap () const
 Returns whether this primitive is in the heap.
 
void setHeapPosition (int heapPosition)
 Sets the heap position.
 
double getHeapValue () const
 Returns the heap value.
 
void setHeapValue (double heapValue)
 Sets the heap value.
 

Public Attributes

std::array< WEMNode *, 3 > _nodes
 Node pointers.
 
std::array< WEMEdge *, 3 > _edges
 Edge pointers.
 

Friends

bool MLWEM_EXPORT operator== (const WEMTriangle &x, const WEMTriangle &y)
 Operator for equality. Currently only the node positions of the triangles and their orientation are compared.
 
bool MLWEM_EXPORT operator!= (const WEMTriangle &x, const WEMTriangle &y)
 Operator for not equality.
 

Additional Inherited Members

- Protected Attributes inherited from ml::WEMFace
Vector3 _normal
 Normal.
 
WEMBoundingBox _boundingBox
 Bounding Box.
 
bool _isBoundingBoxValid
 Is the bounding box valid?
 
- Protected Attributes inherited from ml::WEMPrimitive
unsigned int _bitFlag
 Bit-wise flag for custom use.
 
int _entryNumber
 Entry number in index vector, for easy deletion and reference.
 
int _heapPosition
 Heap position, same like entryNumber but for heaps.
 
double _heapValue
 Element value, used for heap sorting.
 

Detailed Description

Defines the mesh component: triangle.

Definition at line 26 of file WEMTriangle.h.

Constructor & Destructor Documentation

◆ WEMTriangle() [1/3]

ml::WEMTriangle::WEMTriangle ( )

Standard constructor.

◆ WEMTriangle() [2/3]

ml::WEMTriangle::WEMTriangle ( const WEMTriangle & t)

Standard copy constructor.

◆ WEMTriangle() [3/3]

ml::WEMTriangle::WEMTriangle ( WEMTriangle && t)
noexcept

Move constructor.

◆ ~WEMTriangle()

ml::WEMTriangle::~WEMTriangle ( )
override

Standard destructor.

Member Function Documentation

◆ clone()

void ml::WEMTriangle::clone ( WEMTriangle * triangle)

Clones given triangle.

◆ computeNormal()

void ml::WEMTriangle::computeNormal ( )
overridevirtual

Computes the normal.

Implements ml::WEMFace.

◆ contains() [1/2]

bool ml::WEMTriangle::contains ( WEMEdge * edge) const
overridevirtual

Returns whether this face contains the given edge.

Implements ml::WEMFace.

◆ contains() [2/2]

bool ml::WEMTriangle::contains ( WEMNode * node) const
overridevirtual

Returns whether this face contains the given node.

Implements ml::WEMFace.

◆ getArea()

double ml::WEMTriangle::getArea ( ) const
overridevirtual

Calculates the area of this face.

Implements ml::WEMFace.

◆ getCentroid() [1/2]

Vector3 ml::WEMTriangle::getCentroid ( ) const
overridevirtual

Returns the geometric centroid of this face.

Implements ml::WEMFace.

◆ getCentroid() [2/2]

void ml::WEMTriangle::getCentroid ( Vector3 & centroid) const
overridevirtual

Implements ml::WEMFace.

◆ getEdgeAt() [1/2]

const WEMEdge * ml::WEMTriangle::getEdgeAt ( unsigned int index) const
inlineoverridevirtual

Returns the edge at the given index in this face.

Reimplemented from ml::WEMFace.

Definition at line 76 of file WEMTriangle.h.

References getEdgeAt().

Referenced by getEdgeAt().

◆ getEdgeAt() [2/2]

WEMEdge * ml::WEMTriangle::getEdgeAt ( unsigned int index)
inlineoverridevirtual

Returns the edge at the given index in this face.

Reimplemented from ml::WEMFace.

Definition at line 74 of file WEMTriangle.h.

◆ getEdgeNotContaining() [1/2]

const WEMEdge * ml::WEMTriangle::getEdgeNotContaining ( WEMNode * n) const
inlineoverridevirtual

Returns the edge not containing given node.

Implements ml::WEMFace.

Definition at line 111 of file WEMTriangle.h.

References getEdgeNotContaining(), and mlrange_cast().

Referenced by getEdgeNotContaining().

◆ getEdgeNotContaining() [2/2]

WEMEdge * ml::WEMTriangle::getEdgeNotContaining ( WEMNode * n)
overridevirtual

Returns the edge not containing given node.

Implements ml::WEMFace.

◆ getIndex() [1/2]

int ml::WEMTriangle::getIndex ( WEMEdge * edge) const
overridevirtual

Returns the index of the given edge.

Implements ml::WEMFace.

◆ getIndex() [2/2]

int ml::WEMTriangle::getIndex ( WEMNode * node) const
overridevirtual

Returns the index of the given node.

Implements ml::WEMFace.

◆ getNodeAt() [1/2]

const WEMNode * ml::WEMTriangle::getNodeAt ( unsigned int index) const
inlineoverridevirtual

Returns the node at the given index in this face.

Implements ml::WEMFace.

Definition at line 56 of file WEMTriangle.h.

References getNodeAt().

Referenced by getNodeAt().

◆ getNodeAt() [2/2]

WEMNode * ml::WEMTriangle::getNodeAt ( unsigned int index)
inlineoverridevirtual

Returns the node at the given index in this face.

Implements ml::WEMFace.

Definition at line 54 of file WEMTriangle.h.

◆ getNodePositionAt()

Vector3 ml::WEMTriangle::getNodePositionAt ( unsigned int index) const
inlineoverridevirtual

Returns the position of a node at the given index.

Implements ml::WEMFace.

Definition at line 69 of file WEMTriangle.h.

◆ getNumNodes()

unsigned int ml::WEMTriangle::getNumNodes ( ) const
inlineoverridevirtual

Returns the number of nodes.

Implements ml::WEMFace.

Definition at line 50 of file WEMTriangle.h.

◆ getOther() [1/4]

const WEMEdge * ml::WEMTriangle::getOther ( WEMEdge * e1,
WEMEdge * e2 ) const
inlineoverridevirtual

Returns the edge incident to this face that is not given as a parameter.

Implements ml::WEMFace.

Definition at line 107 of file WEMTriangle.h.

References getOther(), and mlrange_cast().

Referenced by getOther().

◆ getOther() [2/4]

WEMEdge * ml::WEMTriangle::getOther ( WEMEdge * e1,
WEMEdge * e2 )
overridevirtual

Returns the edge incident to this face that is not given as a parameter.

Implements ml::WEMFace.

◆ getOther() [3/4]

const WEMNode * ml::WEMTriangle::getOther ( WEMNode * n1,
WEMNode * n2 ) const
inlineoverridevirtual

Returns the node incident to this face that is not given as a parameter.

Implements ml::WEMFace.

Definition at line 103 of file WEMTriangle.h.

References getOther(), and mlrange_cast().

Referenced by getOther().

◆ getOther() [4/4]

WEMNode * ml::WEMTriangle::getOther ( WEMNode * n1,
WEMNode * n2 )
overridevirtual

Returns the node incident to this face that is not given as a parameter.

Implements ml::WEMFace.

◆ getPerimeter()

double ml::WEMTriangle::getPerimeter ( ) const
overridevirtual

Calculates the perimeter of this face.

Implements ml::WEMFace.

◆ getQuality()

double ml::WEMTriangle::getQuality ( ) const
overridevirtual

Calculates the quality of the face.

The quality of a triangle is defined as the ratio of the square root of its surface area to its perimeter relative to this same ratio for an equilateral triangle with the same area. The quality is then one for an equilateral triangle and tends to zero for a very stretched triangle.

Implements ml::WEMFace.

◆ isConcave()

int ml::WEMTriangle::isConcave ( ) const
inlineoverridevirtual

Checks whether this face a concave polygon. Return the number of concavities.

Implements ml::WEMFace.

Definition at line 120 of file WEMTriangle.h.

◆ isFolding()

virtual bool ml::WEMTriangle::isFolding ( WEMNode * node,
const Vector3 & position ) const
virtual

Returns whether this face is folding?

◆ mirror()

void ml::WEMTriangle::mirror ( )
overridevirtual

Mirrors this face. Note that the edge information gets corrupted! Use WEM::buildEdgeConnectivity afterwards!

Implements ml::WEMFace.

◆ operator=()

WEMTriangle & ml::WEMTriangle::operator= ( WEMTriangle && t)
noexcept

Move assignment operator.

◆ pointInTriangle()

virtual bool ml::WEMTriangle::pointInTriangle ( const Vector3 & position) const
virtual

Returns whether the given point is in this triangle.

◆ rayIntersect()

virtual bool ml::WEMTriangle::rayIntersect ( const Vector3 & origin,
const Vector3 & direction ) const
virtual

Returns whether the given ray intersects this triangle?

◆ removeEdges()

void ml::WEMTriangle::removeEdges ( )
overridevirtual

Removes all edge pointers of this face.

Implements ml::WEMFace.

◆ replace() [1/2]

void ml::WEMTriangle::replace ( WEMEdge * orig,
WEMEdge * replacement )
overridevirtual

Replaces the given orig node by the given replace edge.

Implements ml::WEMFace.

◆ replace() [2/2]

void ml::WEMTriangle::replace ( WEMNode * orig,
WEMNode * replacement )
overridevirtual

Replaces the given orig node by the given replace node.

Implements ml::WEMFace.

◆ reset()

void ml::WEMTriangle::reset ( )

Resets the object to default constructed state.

◆ setEdge()

void ml::WEMTriangle::setEdge ( unsigned int index,
WEMEdge * edge )
inlineoverridevirtual

Sets the given edge to the given index in this face.

Reimplemented from ml::WEMFace.

Definition at line 78 of file WEMTriangle.h.

References ml::WEMFace::invalidateBoundingBox().

◆ setEdges()

virtual void ml::WEMTriangle::setEdges ( WEMEdge * edge1,
WEMEdge * edge2,
WEMEdge * edge3 )
inlinevirtual

Sets the given edges.

Definition at line 80 of file WEMTriangle.h.

References ml::WEMFace::invalidateBoundingBox(), and mlrange_cast().

◆ setNode()

void ml::WEMTriangle::setNode ( unsigned int index,
WEMNode * node )
inlineoverridevirtual

Sets the given node to the given index in this face.

Reimplemented from ml::WEMFace.

Definition at line 58 of file WEMTriangle.h.

References ml::WEMFace::invalidateBoundingBox().

◆ setNodes()

virtual void ml::WEMTriangle::setNodes ( WEMNode * node1,
WEMNode * node2,
WEMNode * node3 )
inlinevirtual

Sets the given nodes.

Definition at line 60 of file WEMTriangle.h.

References ml::WEMFace::invalidateBoundingBox(), and mlrange_cast().

Friends And Related Symbol Documentation

◆ operator!=

Operator for not equality.

◆ operator==

Operator for equality. Currently only the node positions of the triangles and their orientation are compared.

Member Data Documentation

◆ _edges

std::array<WEMEdge*, 3> ml::WEMTriangle::_edges

Edge pointers.

Definition at line 141 of file WEMTriangle.h.

◆ _nodes

std::array<WEMNode*, 3> ml::WEMTriangle::_nodes

Node pointers.

Definition at line 139 of file WEMTriangle.h.


The documentation for this class was generated from the following file: