MEPP2 Project
Classes | Variables
Geometry traits.

Classes

struct  FEVV::RetrieveKernel< Mesh >
 A generic definition, that is template specialized for every supported native implementation, allowing for the retrieval (or extraction) of the geometry related information out of a Mesh type (possibly using the respective enderlying kernels of the native implementations when available). RetrieveKernel implementatinos (through template specializations): More...
 
class  FEVV::Geometry_traits_documentation_dummy< MeshT, KernelT >
 Documentation (as a template dummy class) of Geometry_traits. More...
 
class  FEVV::AIF_mesh_kernel_generator
 AIF specialization. Refer to for concrete usage . More...
 
struct  FEVV::RetrieveKernel< DataStructures::AIF::AIFMesh >
 AIF specialization. Refer to RetrieveKernel for the documentation of the generic class. More...
 
class  FEVV::Geometry_traits< MeshT, AIF_mesh_kernel_generator >
 AIF specialization of the Geometry_traits generic class. For usage refer to Geometry traits documentation . More...
 
class  FEVV::Geometry_traits< Mesh, CGAL::Cartesian< T1 > >
 OpenMesh specialization of the Geometry_traits generic class. For usage refer to Geometry traits documentation . More...
 
class  FEVV::Geometry_traits_for_cgal< MeshT, KernelT >
 Many mesh representations of CGLA, e.g. CGAL::Exact_predicate_inexact_construction_kernel and CGAL::Cartesian<double> have compatible kernels (i.e. kernels exposing the same geometry related traits). Hence their respective Geometry_traits template specializations will define exactly the same code. In order to avoid code replication this Geometry_traits_for_cgal class "factorizes" the code that will be shared by CGAL meshes sharing such a common kernel structure. The various CGAL meshes needing simply inherit from this class like. More...
 
class  FEVV::Geometry_traits< Mesh, CGAL::Exact_predicates_inexact_constructions_kernel >
 OpenMesh specialization of the Geometry_traits generic class. For usage refer to Geometry traits documentation . More...
 
struct  FEVV::RetrieveKernel< CGAL::Linear_cell_complex_for_combinatorial_map< D, AmbientDim, Traits, Items, Alloc, CMap, Storage > >
 Linear cell complex specialization. Refer to RetrieveKernel for the documentation of the generic class. More...
 
struct  FEVV::RetrieveKernel< CGALPointSet >
 CGAL Point Set specialization. Refer to RetrieveKernel for the documentation of the generic class. More...
 
struct  FEVV::RetrieveKernel< CGAL::Polyhedron_3< T1, T2, T3, T4 > >
 OpenMesh specialization. Refer to RetrieveKernel for the documentation of the generic class. More...
 
struct  FEVV::RetrieveKernel< CGAL::Surface_mesh< PointT > >
 OpenMesh specialization. Refer to RetrieveKernel for the documentation of the generic class. More...
 
struct  FEVV::RetrieveKernel< OpenMesh::PolyMesh_ArrayKernelT< T > >
 OpenMesh specialization. Refer to RetrieveKernel for the documentation of the generic class. More...
 
class  FEVV::Geometry_traits< OpenMesh::PolyMesh_ArrayKernelT< T >, T >
 OpenMesh specialization of the Geometry_traits generic class. For usage refer to Geometry traits documentation . More...
 
class  FEVV::PCLPointCloud_kernel_generator
 PCL Point Cloud specialization. Refer to for concrete usage . More...
 
struct  FEVV::RetrieveKernel< FEVV::PCLPointCloud >
 PCL Point Cloud specialization. Refer to RetrieveKernel for the documentation of the generic class. More...
 
class  FEVV::Geometry_traits< MeshT, PCLPointCloud_kernel_generator >
 PCLPointCloud specialization of the Geometry_traits generic class. For usage refer to Geometry traits documentation . More...
 
class  FEVV::Geometry_traits< Mesh, Kernel >
 Refer to Geometry_traits_documentation_dummy for further documentation on provided types and algorithms (if for example you are looking on what you need to provide when realizing a new specialization). If you are trying to understand what this Geometry_traits class is about, just consider Geometry_traits as a generic definition whose only purpose is to provide an anchoring point for a unified geometry interface. The Geometry_traits template class is used through template specializations. More...
 

Variables

static const Vector FEVV::Geometry_traits_for_cgal< MeshT, KernelT >::NULL_VECTOR = CGAL::NULL_VECTOR
 Initialisation of static member NULL_VECTOR of Geometry_traits_for_cgal class. More...
 
static const Point FEVV::Geometry_traits_for_cgal< MeshT, KernelT >::ORIGIN = CGAL::ORIGIN
 Initialisation of static member ORIGIN of Geometry_traits_for_cgal class. More...
 
static const Vector FEVV::Geometry_traits< MeshT, PCLPointCloud_kernel_generator >::NULL_VECTOR
 Initialisation of static member NULL_VECTOR. More...
 
static const Point FEVV::Geometry_traits< MeshT, PCLPointCloud_kernel_generator >::ORIGIN
 Initialisation of static member ORIGIN. More...
 

Detailed Description

Original needs

A generic library relies on a set of unified interfaces to which all concrete native external implementations (e.g. CGAL::Polyhedron_3 or OpenMesh), that will be used for instantiation, must comply to. The separation of concerns induces the separation of the topology related interface from the geometry related one. The main purpose of Geometry_trait is to provide such an interface i.e.

Emerging such a geometry interface requires to "extend" all considered native implementations in order to comply with the geometry interface that we wish to promote and on top of we shall provide our generic algorithms. Among the possible techniques for extending the native implementation (wrappers, inheritance...) the design choice was led by the additional need of following the Boost Graph Library syntatic approach of so called "free functions". This aesthetic need is drawn from a wish to provide notations that are homogeneous with the ones chosen for the topology related interface for which we chose to use the CGAL provided boost graph wrappers. And when CGAL wrapped their native mesh data stratructures (as well as OpenMesh), they not only adopted some BGL topology concepts, but they also committed themselves to also follow BGL syntatic approach.

Design notes

For the syntax of free functions to remain simple, we thus need to provide (traditionaly as first argument) the concerned mesh instance (e.g. rescale( myMesh, 6.0)). Technically this means that every template specialization (for the various native mesh implementations we wish to provide the geometry wrappers for) of the free functions we propose must be distinguished from the others. This distinction must be realized with the only information provided to the free functions which is the (mesh) type of their first argument.

FEVV geometry interfaces uses two mechanisms to achieve its goal:

Variable Documentation

◆ NULL_VECTOR [1/2]

template<typename MeshT , typename KernelT >
const Geometry_traits_for_cgal< MeshT, KernelT >::Vector FEVV::Geometry_traits_for_cgal< MeshT, KernelT >::NULL_VECTOR = CGAL::NULL_VECTOR
static

Initialisation of static member NULL_VECTOR of Geometry_traits_for_cgal class.

Definition at line 139 of file Geometry_traits_cgal_common.h.

◆ NULL_VECTOR [2/2]

Initialisation of static member NULL_VECTOR.

Definition at line 156 of file Geometry_traits_pcl_point_cloud.h.

◆ ORIGIN [1/2]

template<typename MeshT , typename KernelT >
const Geometry_traits_for_cgal< MeshT, KernelT >::Point FEVV::Geometry_traits_for_cgal< MeshT, KernelT >::ORIGIN = CGAL::ORIGIN
static

Initialisation of static member ORIGIN of Geometry_traits_for_cgal class.

Definition at line 140 of file Geometry_traits_cgal_common.h.

◆ ORIGIN [2/2]

Initialisation of static member ORIGIN.

Definition at line 157 of file Geometry_traits_pcl_point_cloud.h.