walberla::mesh::QHull< MeshType > Class Template Reference

#include <QHull.h>

Public Types

typedef MeshType::Point Point
 
typedef MeshType::Scalar Scalar
 
typedef MeshType::FaceHandle FaceHandle
 
typedef MeshType::VertexHandle VertexHandle
 
typedef MeshType::HalfedgeHandle HalfedgeHandle
 

Public Member Functions

 QHull (const std::vector< Vector3< real_t > > &pointCloud, const shared_ptr< MeshType > &mesh=make_shared< MeshType >())
 
 QHull (const std::vector< Point > &pointCloud, const shared_ptr< MeshType > &mesh=make_shared< MeshType >())
 
uint_t run ()
 
const shared_ptr< MeshType > & meshPtr () const
 
const MeshTypemesh () const
 
const std::vector< Point > & getVisiblePoints (const FaceHandle fh) const
 
void enableDebugVTKOutput (const std::string &identifierPrefix="QHull", const std::string &baseFolder="vtk_out")
 
void disableDebugVTKOutput ()
 

Private Types

typedef OpenMesh::FPropHandleT< std::vector< Point > > VisiblePointsPropertyHandle
 The generated convex mesh. More...
 

Private Member Functions

void initMesh ()
 
bool pointIsVisible (const FaceHandle fh, const Point &p) const
 
Scalar pointDistance (const FaceHandle fh, const Point &p) const
 
void createInitialSimplex ()
 
void iteration ()
 
void deleteVisibleFaces (const FaceHandle startFaceHandle, const Point &p)
 
void addNewFaces (const Point &p)
 
template<typename InputIterator >
void assignPointsToFaces (const std::vector< Point > &points, InputIterator facesBegin, InputIterator facesEnd)
 

Private Attributes

std::vector< PointpointCloud_
 
shared_ptr< MeshTypemesh_
 The initial point cloud. More...
 
OpenMesh::PropertyManager< VisiblePointsPropertyHandle, MeshTypevisiblePoints_
 
std::priority_queue< FaceHandle, std::vector< FaceHandle >, QHullFaceSorter< MeshType > > queue_
 Property storing the points of a certain face. More...
 
std::vector< PointorphanPoints_
 queue to prioritize faces More...
 
std::vector< HalfedgeHandlehorizon_
 Points getting orphaned during face removal. More...
 
std::vector< FaceHandlenewFaces_
 the new horizon More...
 
bool writeDebugOutput_
 new faces created in an iteration replacing the removed ones More...
 
shared_ptr< VTKMeshWriter< MeshType > > meshWriter_
 Should debug ouput be written? More...
 
shared_ptr< vtk::VTKOutputremainingPointsWriter_
 Writes the current state of the mesh. More...
 

Member Typedef Documentation

◆ FaceHandle

template<typename MeshType >
typedef MeshType::FaceHandle walberla::mesh::QHull< MeshType >::FaceHandle

◆ HalfedgeHandle

template<typename MeshType >
typedef MeshType::HalfedgeHandle walberla::mesh::QHull< MeshType >::HalfedgeHandle

◆ Point

template<typename MeshType >
typedef MeshType::Point walberla::mesh::QHull< MeshType >::Point

◆ Scalar

template<typename MeshType >
typedef MeshType::Scalar walberla::mesh::QHull< MeshType >::Scalar

◆ VertexHandle

template<typename MeshType >
typedef MeshType::VertexHandle walberla::mesh::QHull< MeshType >::VertexHandle

◆ VisiblePointsPropertyHandle

template<typename MeshType >
typedef OpenMesh::FPropHandleT< std::vector<Point> > walberla::mesh::QHull< MeshType >::VisiblePointsPropertyHandle
private

The generated convex mesh.

Constructor & Destructor Documentation

◆ QHull() [1/2]

template<typename MeshType >
walberla::mesh::QHull< MeshType >::QHull ( const std::vector< Vector3< real_t > > &  pointCloud,
const shared_ptr< MeshType > &  mesh = make_shared< MeshType >() 
)

◆ QHull() [2/2]

template<typename MeshType >
walberla::mesh::QHull< MeshType >::QHull ( const std::vector< Point > &  pointCloud,
const shared_ptr< MeshType > &  mesh = make_shared< MeshType >() 
)

Member Function Documentation

◆ addNewFaces()

template<typename MeshType >
void walberla::mesh::QHull< MeshType >::addNewFaces ( const Point p)
inlineprivate

◆ assignPointsToFaces()

template<typename MeshType >
template<typename InputIterator >
void walberla::mesh::QHull< MeshType >::assignPointsToFaces ( const std::vector< Point > &  points,
InputIterator  facesBegin,
InputIterator  facesEnd 
)
inlineprivate

◆ createInitialSimplex()

template<typename MeshType >
void walberla::mesh::QHull< MeshType >::createInitialSimplex
inlineprivate

◆ deleteVisibleFaces()

template<typename MeshType >
void walberla::mesh::QHull< MeshType >::deleteVisibleFaces ( const FaceHandle  startFaceHandle,
const Point p 
)
inlineprivate

◆ disableDebugVTKOutput()

template<typename MeshType >
void walberla::mesh::QHull< MeshType >::disableDebugVTKOutput

◆ enableDebugVTKOutput()

template<typename MeshType >
void walberla::mesh::QHull< MeshType >::enableDebugVTKOutput ( const std::string &  identifierPrefix = "QHull< MeshType >",
const std::string &  baseFolder = "vtk_out" 
)

◆ getVisiblePoints()

template<typename MeshType >
const std::vector<Point>& walberla::mesh::QHull< MeshType >::getVisiblePoints ( const FaceHandle  fh) const
inline

◆ initMesh()

template<typename MeshType >
void walberla::mesh::QHull< MeshType >::initMesh
inlineprivate

◆ iteration()

template<typename MeshType >
void walberla::mesh::QHull< MeshType >::iteration
inlineprivate

◆ mesh()

template<typename MeshType >
const MeshType& walberla::mesh::QHull< MeshType >::mesh ( ) const
inline

◆ meshPtr()

template<typename MeshType >
const shared_ptr< MeshType >& walberla::mesh::QHull< MeshType >::meshPtr ( ) const
inline

◆ pointDistance()

template<typename MeshType >
Scalar walberla::mesh::QHull< MeshType >::pointDistance ( const FaceHandle  fh,
const Point p 
) const
inlineprivate

◆ pointIsVisible()

template<typename MeshType >
bool walberla::mesh::QHull< MeshType >::pointIsVisible ( const FaceHandle  fh,
const Point p 
) const
inlineprivate

◆ run()

template<typename MeshType >
uint_t walberla::mesh::QHull< MeshType >::run

Member Data Documentation

◆ horizon_

template<typename MeshType >
std::vector<HalfedgeHandle> walberla::mesh::QHull< MeshType >::horizon_
private

Points getting orphaned during face removal.

◆ mesh_

template<typename MeshType >
shared_ptr< MeshType > walberla::mesh::QHull< MeshType >::mesh_
private

The initial point cloud.

◆ meshWriter_

template<typename MeshType >
shared_ptr<VTKMeshWriter< MeshType > > walberla::mesh::QHull< MeshType >::meshWriter_
private

Should debug ouput be written?

◆ newFaces_

template<typename MeshType >
std::vector<FaceHandle> walberla::mesh::QHull< MeshType >::newFaces_
private

the new horizon

◆ orphanPoints_

template<typename MeshType >
std::vector<Point> walberla::mesh::QHull< MeshType >::orphanPoints_
private

queue to prioritize faces

◆ pointCloud_

template<typename MeshType >
std::vector< Point > walberla::mesh::QHull< MeshType >::pointCloud_
private

◆ queue_

template<typename MeshType >
std::priority_queue<FaceHandle, std::vector<FaceHandle>, QHullFaceSorter<MeshType> > walberla::mesh::QHull< MeshType >::queue_
private

Property storing the points of a certain face.

◆ remainingPointsWriter_

template<typename MeshType >
shared_ptr<vtk::VTKOutput> walberla::mesh::QHull< MeshType >::remainingPointsWriter_
private

Writes the current state of the mesh.

◆ visiblePoints_

template<typename MeshType >
OpenMesh::PropertyManager< VisiblePointsPropertyHandle, MeshType > walberla::mesh::QHull< MeshType >::visiblePoints_
private

◆ writeDebugOutput_

template<typename MeshType >
bool walberla::mesh::QHull< MeshType >::writeDebugOutput_
private

new faces created in an iteration replacing the removed ones


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