Open CASCADE Technology  6.5.4
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Data Structures | Public Member Functions | Protected Attributes
Poly_CoherentTriangulation Class Reference

#include <Poly_CoherentTriangulation.hxx>

Inheritance diagram for Poly_CoherentTriangulation:
Inheritance graph
[legend]

Data Structures

class  IteratorOfLink
class  IteratorOfNode
class  IteratorOfTriangle
struct  TwoIntegers
 Couple of integer indices (used in RemoveDegenerated()). More...

Public Member Functions

 Poly_CoherentTriangulation (const Handle_NCollection_BaseAllocator &theAlloc=0L)
 Poly_CoherentTriangulation (const Handle_Poly_Triangulation &theTriangulation, const Handle_NCollection_BaseAllocator &theAlloc=0L)
virtual ~Poly_CoherentTriangulation ()
Handle_Poly_Triangulation GetTriangulation () const
Standard_Boolean RemoveDegenerated (const Standard_Real theTol, NCollection_List< TwoIntegers > *pLstRemovedNode=0L)
Standard_Boolean GetFreeNodes (NCollection_List< Standard_Integer > &lstNodes) const
Standard_Integer MaxNode () const
Standard_Integer MaxTriangle () const
void SetDeflection (const Standard_Real theDefl)
Standard_Real Deflection () const
Standard_Integer SetNode (const gp_XYZ &thePnt, const Standard_Integer iN=-1)
const Poly_CoherentNodeNode (const Standard_Integer i) const
Poly_CoherentNodeChangeNode (const Standard_Integer i)
Standard_Integer NNodes () const
const Poly_CoherentTriangleTriangle (const Standard_Integer i) const
Standard_Integer NTriangles () const
Standard_Integer NLinks () const
Standard_Boolean RemoveTriangle (Poly_CoherentTriangle &theTr)
void RemoveLink (Poly_CoherentLink &theLink)
Poly_CoherentTriangleAddTriangle (const Standard_Integer iNode0, const Standard_Integer iNode1, const Standard_Integer iNode2)
Standard_Boolean ReplaceNodes (Poly_CoherentTriangle &theTriangle, const Standard_Integer iNode0, const Standard_Integer iNode1, const Standard_Integer iNode2)
Poly_CoherentLinkAddLink (const Poly_CoherentTriangle &theTri, const Standard_Integer theConn)
Standard_Boolean FindTriangle (const Poly_CoherentLink &theLink, const Poly_CoherentTriangle *pTri[2]) const
Standard_Integer ComputeLinks ()
void ClearLinks ()
const
Handle_NCollection_BaseAllocator & 
Allocator () const
Handle_Poly_CoherentTriangulation Clone (const Handle_NCollection_BaseAllocator &theAlloc) const
void Dump (Standard_OStream &) const

Protected Attributes

NCollection_Vector
< Poly_CoherentTriangle
myTriangles
NCollection_Vector
< Poly_CoherentNode
myNodes
NCollection_Vector
< Poly_CoherentLink
myLinks
Handle_NCollection_BaseAllocator myAlloc
Standard_Real myDeflection

Detailed Description

Triangulation structure that allows to:

This class is useful for algorithms that need to analyse and/or edit a triangulated mesh -- for example for mesh refining. The connectivity model follows the idea that all Triangles in a mesh should have coherent orientation like on a surface of a solid body. Connections between more than 2 triangles are not suppoorted.

Architecture

The data types used in this structure are:


Constructor & Destructor Documentation

Poly_CoherentTriangulation::Poly_CoherentTriangulation ( const Handle_NCollection_BaseAllocator &  theAlloc = 0L)

Empty constructor.

Poly_CoherentTriangulation::Poly_CoherentTriangulation ( const Handle_Poly_Triangulation &  theTriangulation,
const Handle_NCollection_BaseAllocator &  theAlloc = 0L 
)

Constructor. It does not create Links, you should call ComputeLinks following this constructor if you need these links.

Destructor.


Member Function Documentation

Add a single link to triangulation, based on a triangle and its side index. This method does not check for coincidence with already present links.

Parameters:
theTriTriangle that contains the link to be added.
theConnIndex of the side (i.e., 0, 1 0r 2) defining the added link.

Add a triangle to the triangulation.

Returns:
Pointer to the added triangle instance or NULL if an error occurred.
const Handle_NCollection_BaseAllocator& Poly_CoherentTriangulation::Allocator ( ) const [inline]

Query the allocator of elements, this allocator can be used for other objects

Get the node at the given index 'i'.

Clear all Links data from the Triangulation data.

Handle_Poly_CoherentTriangulation Poly_CoherentTriangulation::Clone ( const Handle_NCollection_BaseAllocator &  theAlloc) const

Create a copy of this Triangulation, using the given allocator.

(Re)Calculate all links in this Triangulation.

Query the Deflection parameter (default value 0. -- if never initialized)

Debugging output.

Find one or two triangles that share the given couple of nodes.

Parameters:
theLinkLink (in fact, just a couple of nodes) on which the triangle is searched.
pTri[out] Array of two pointers to triangle. pTri[0] stores the triangle to the left of the link, while pTri[1] stores the one to the right of the link.
Returns:
True if at least one triangle is found and output as pTri.

Create a list of free nodes. These nodes may appear as a result of any custom mesh decimation or RemoveDegenerated() call. This analysis is necessary if you support additional data structures based on the triangulation (e.g., edges on the surface boundary).

Parameters:
lstNodes[out] List that receives the indices of free nodes.
Handle_Poly_Triangulation Poly_CoherentTriangulation::GetTriangulation ( ) const

Create an instance of Poly_Triangulation from this object.

Query the index of the last node in the triangulation

Query the index of the last triangle in the triangulation

Query the total number of active Links.

Query the total number of active nodes (i.e. nodes used by 1 or more triangles)

Get the node at the given index 'i'.

Query the total number of active triangles (i.e. triangles that refer nodes, non-empty ones)

Find and remove degenerated triangles in Triangulation.

Parameters:
theTolTolerance for the degeneration case. If any two nodes of a triangle have the distance less than this tolerance, this triangle is considered degenerated and therefore removed by this method.
pLstRemovedNodeOptional parameter. If defined, then it will receive the list of arrays where the first number is the index of removed node and the seond - the index of remaining node to which the mesh was reconnected.

Removal of a single link from the triangulation.

Removal of a single triangle from the triangulation.

Replace nodes in the given triangle.

Returns:
True if operation succeeded.

Set the Deflection value as the parameter of the given triangulation.

Initialize a node

Parameters:
thePoint3D Coordinates of the node.
iNIndex of the node. If negative (default), the node is added to the end of the current array of nodes.
Returns:
Index of the added node.

Get the triangle at the given index 'i'.


Field Documentation

Handle_NCollection_BaseAllocator Poly_CoherentTriangulation::myAlloc [protected]

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