GranOO  3.0
A robust and versatile workbench to build 3D dynamic simulations based on the Discrete Element Method
Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
BWDelaunay Class Reference

#include <BWDelaunay.hpp>

Public Member Functions

 BWDelaunay (const std::vector< double > &points)
 instanciate a new Bowyer-Watson Delaunay triangulation with given points. More...
 
void set_vertices (const std::vector< double > &points)
 Set the points to be triangulated. More...
 
void tetrahedralize ()
 Perform the tetrahedralization on the given set of points. More...
 
unsigned int vertex_number ()
 
const double * vertex_ptr (unsigned int vertexIndex) const
 Allows to get a vertex coordinates array from its index in the _vertices vector. More...
 
unsigned int edge_number ()
 
const unsigned int * edge_ptr (unsigned int edgeIndex) const
 
void export_to_mesh_file (std::string filePath)
 Exports the tetrahedralization to a Gmsh .mesh file, containing the vertices, edges and tetrahedra. More...
 

Private Member Functions

unsigned int new_tetrahedron ()
 Creates a new empty tetrahedron. More...
 
unsigned int new_tetrahedron (unsigned int v0Index, unsigned int v1Index, unsigned int v2Index, unsigned int v3Index)
 Creates a new tetrahedron with given vertices index. More...
 
void delete_tetrahedron (unsigned int tetIndex)
 Deletes the tetrahedron with index tetIndex. More...
 
void tetrahedron_circum_centre (double(&centre)[3], unsigned int tetIndex)
 Computes the coordinates of the centre of the circumsphere related to tetrahedron with index tetIndex. More...
 
bool is_point_inside_tet_circumsphere (unsigned int pointIndex, unsigned int tetIndex)
 
bool is_virtual_tetrahedron (unsigned int tetIndex)
 

Private Attributes

std::vector< double > _vertices
 The list of vertices coordinates in the tetrahedralization. More...
 
std::vector< unsigned int > _virtualVertices
 The list of virtual vertices coordinates in the tetrahedralization. More...
 
std::vector< unsigned int > _tetToVertex
 The relationship between tetrahedra and their vertices index. More...
 
std::vector< unsigned int > _tetToTet
 The adjacency relationship between tetrahedra. More...
 
std::vector< unsigned int > _nextTetrahedron
 A vector containing the list of empty spaces in the _tetToVertex vector. More...
 
std::vector< unsigned int > _edgesToVertex
 The relationship between tetrahedra edges and their vertices index. More...
 
std::vector< double > _circumRadii
 The radii of the tetrahedra circumspheres. More...
 
std::vector< double > _circumCentres
 The centre coordinates of the tetrahedra circumspheres. More...
 
unsigned int _firstFreeTetIndex
 The index of the first available space in the _tetToVertex vector. More...
 
double _minPoint [3]
 The min corner of the vertices bounding box. More...
 
double _midPoint [3]
 The mid of the vertices bounding box. More...
 
double _maxPoint [3]
 The max point of the vertices bounding box. More...
 

Static Private Attributes

static const unsigned int NotInList = (unsigned int)(-1)
 A flag to determine if an index is in a list. More...
 

Constructor & Destructor Documentation

◆ BWDelaunay()

BWDelaunay::BWDelaunay ( const std::vector< double > &  points)

instanciate a new Bowyer-Watson Delaunay triangulation with given points.

Member Function Documentation

◆ delete_tetrahedron()

void BWDelaunay::delete_tetrahedron ( unsigned int  tetIndex)
private

Deletes the tetrahedron with index tetIndex.

◆ edge_number()

unsigned int BWDelaunay::edge_number ( )
inline
Returns
The number of edges in the tetrahedralization.

◆ edge_ptr()

const unsigned int* BWDelaunay::edge_ptr ( unsigned int  edgeIndex) const
inline
Returns
A const reference to the _edgesToVertex vector.

◆ export_to_mesh_file()

void BWDelaunay::export_to_mesh_file ( std::string  filePath)

Exports the tetrahedralization to a Gmsh .mesh file, containing the vertices, edges and tetrahedra.

◆ is_point_inside_tet_circumsphere()

bool BWDelaunay::is_point_inside_tet_circumsphere ( unsigned int  pointIndex,
unsigned int  tetIndex 
)
private
Returns
true or false wether the vertex with index vertexIndex is inside the circumsphere of tetrahedron with index tetIndex.

◆ is_virtual_tetrahedron()

bool BWDelaunay::is_virtual_tetrahedron ( unsigned int  tetIndex)
private
Returns
true or false wether the tetrahedron with index tetIndex is virtual, i.e. the tetrahedron is connnected to a virtual point.

◆ new_tetrahedron() [1/2]

unsigned int BWDelaunay::new_tetrahedron ( )
private

Creates a new empty tetrahedron.

Returns
The index of the new tetrahedron in the _tetToVertex vector.

◆ new_tetrahedron() [2/2]

unsigned int BWDelaunay::new_tetrahedron ( unsigned int  v0Index,
unsigned int  v1Index,
unsigned int  v2Index,
unsigned int  v3Index 
)
private

Creates a new tetrahedron with given vertices index.

Returns
The index of the new tetrahedron in the _tetToVertex vector.

◆ set_vertices()

void BWDelaunay::set_vertices ( const std::vector< double > &  points)

Set the points to be triangulated.

◆ tetrahedralize()

void BWDelaunay::tetrahedralize ( )

Perform the tetrahedralization on the given set of points.

◆ tetrahedron_circum_centre()

void BWDelaunay::tetrahedron_circum_centre ( double(&)  centre[3],
unsigned int  tetIndex 
)
private

Computes the coordinates of the centre of the circumsphere related to tetrahedron with index tetIndex.

◆ vertex_number()

unsigned int BWDelaunay::vertex_number ( )
inline
Returns
The number of vertices in the tetrahedralization.

◆ vertex_ptr()

const double* BWDelaunay::vertex_ptr ( unsigned int  vertexIndex) const
inline

Allows to get a vertex coordinates array from its index in the _vertices vector.

Returns
A double array pointer to the coordinates of the vertex with index vertexIndex in the _vertices vector.

Member Data Documentation

◆ _circumCentres

std::vector<double> BWDelaunay::_circumCentres
private

The centre coordinates of the tetrahedra circumspheres.

◆ _circumRadii

std::vector<double> BWDelaunay::_circumRadii
private

The radii of the tetrahedra circumspheres.

◆ _edgesToVertex

std::vector<unsigned int> BWDelaunay::_edgesToVertex
private

The relationship between tetrahedra edges and their vertices index.

◆ _firstFreeTetIndex

unsigned int BWDelaunay::_firstFreeTetIndex
private

The index of the first available space in the _tetToVertex vector.

◆ _maxPoint

double BWDelaunay::_maxPoint[3]
private

The max point of the vertices bounding box.

◆ _midPoint

double BWDelaunay::_midPoint[3]
private

The mid of the vertices bounding box.

◆ _minPoint

double BWDelaunay::_minPoint[3]
private

The min corner of the vertices bounding box.

◆ _nextTetrahedron

std::vector<unsigned int> BWDelaunay::_nextTetrahedron
private

A vector containing the list of empty spaces in the _tetToVertex vector.

◆ _tetToTet

std::vector<unsigned int> BWDelaunay::_tetToTet
private

The adjacency relationship between tetrahedra.

◆ _tetToVertex

std::vector<unsigned int> BWDelaunay::_tetToVertex
private

The relationship between tetrahedra and their vertices index.

◆ _vertices

std::vector<double> BWDelaunay::_vertices
private

The list of vertices coordinates in the tetrahedralization.

◆ _virtualVertices

std::vector<unsigned int> BWDelaunay::_virtualVertices
private

The list of virtual vertices coordinates in the tetrahedralization.

◆ NotInList

const unsigned int BWDelaunay::NotInList = (unsigned int)(-1)
staticprivate

A flag to determine if an index is in a list.


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