Open CASCADE Technology
6.5.4
|
#include <Poly_CoherentTriangulation.hxx>
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.
The data types used in this structure are:
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.
virtual Poly_CoherentTriangulation::~Poly_CoherentTriangulation | ( | ) | [virtual] |
Destructor.
Poly_CoherentLink* Poly_CoherentTriangulation::AddLink | ( | const Poly_CoherentTriangle & | theTri, |
const Standard_Integer | theConn | ||
) |
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.
theTri | Triangle that contains the link to be added. |
theConn | Index of the side (i.e., 0, 1 0r 2) defining the added link. |
Poly_CoherentTriangle* Poly_CoherentTriangulation::AddTriangle | ( | const Standard_Integer | iNode0, |
const Standard_Integer | iNode1, | ||
const Standard_Integer | iNode2 | ||
) |
Add a triangle to the triangulation.
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.
Standard_Real Poly_CoherentTriangulation::Deflection | ( | ) | const [inline] |
Query the Deflection parameter (default value 0. -- if never initialized)
void Poly_CoherentTriangulation::Dump | ( | Standard_OStream & | ) | const |
Debugging output.
Standard_Boolean Poly_CoherentTriangulation::FindTriangle | ( | const Poly_CoherentLink & | theLink, |
const Poly_CoherentTriangle * | pTri[2] | ||
) | const |
Find one or two triangles that share the given couple of nodes.
theLink | Link (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. |
Standard_Boolean Poly_CoherentTriangulation::GetFreeNodes | ( | NCollection_List< Standard_Integer > & | lstNodes | ) | const |
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).
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.
Standard_Integer Poly_CoherentTriangulation::MaxNode | ( | ) | const [inline] |
Query the index of the last node in the triangulation
Standard_Integer Poly_CoherentTriangulation::MaxTriangle | ( | ) | const [inline] |
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)
const Poly_CoherentNode& Poly_CoherentTriangulation::Node | ( | const Standard_Integer | i | ) | const [inline] |
Get the node at the given index 'i'.
Query the total number of active triangles (i.e. triangles that refer nodes, non-empty ones)
Standard_Boolean Poly_CoherentTriangulation::RemoveDegenerated | ( | const Standard_Real | theTol, |
NCollection_List< TwoIntegers > * | pLstRemovedNode = 0L |
||
) |
Find and remove degenerated triangles in Triangulation.
theTol | Tolerance 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. |
pLstRemovedNode | Optional 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. |
void Poly_CoherentTriangulation::RemoveLink | ( | Poly_CoherentLink & | theLink | ) |
Removal of a single link from the triangulation.
Removal of a single triangle from the triangulation.
Standard_Boolean Poly_CoherentTriangulation::ReplaceNodes | ( | Poly_CoherentTriangle & | theTriangle, |
const Standard_Integer | iNode0, | ||
const Standard_Integer | iNode1, | ||
const Standard_Integer | iNode2 | ||
) |
Replace nodes in the given triangle.
void Poly_CoherentTriangulation::SetDeflection | ( | const Standard_Real | theDefl | ) | [inline] |
Set the Deflection value as the parameter of the given triangulation.
Standard_Integer Poly_CoherentTriangulation::SetNode | ( | const gp_XYZ & | thePnt, |
const Standard_Integer | iN = -1 |
||
) |
Initialize a node
thePoint | 3D Coordinates of the node. |
iN | Index of the node. If negative (default), the node is added to the end of the current array of nodes. |
const Poly_CoherentTriangle& Poly_CoherentTriangulation::Triangle | ( | const Standard_Integer | i | ) | const [inline] |
Get the triangle at the given index 'i'.
Handle_NCollection_BaseAllocator Poly_CoherentTriangulation::myAlloc [protected] |