MEPP2 Project
Public Types | Public Member Functions | Protected Member Functions | Private Attributes | List of all members
FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point > Class Template Reference

Geometric_metrics is a class dedicated to the geometric distance computation between an original full resolution mesh and a simplified version (a LoD). Two distortions are currently available, the maximum error (Hausdorff distance) and an approximation of the RMSE distance. Note: this code only works with CGAL mesh data structures for the time being. More...

#include <Geometric_metrics.h>

Collaboration diagram for FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >:
Collaboration graph

Public Types

typedef CGAL::Exact_predicates_inexact_constructions_kernel K
 
typedef CGAL::AABB_face_graph_triangle_primitive< HalfedgeGraph > AABB_primitive
 
typedef CGAL::AABB_traits< CGALKernel, AABB_primitiveAABB_traits
 
typedef CGAL::AABB_tree< AABB_traitsAABB_tree
 

Public Member Functions

 Geometric_metrics (const HalfedgeGraph &LoD_init, const PointMap &pm_init)
 
double compute_hausdorff (const HalfedgeGraph &LoD, int cas)
 CGAL Hausdorff distance implementation. More...
 
double compute_symmetric_L2 (const HalfedgeGraph &LoD, bool compute_RMSE_instead_of_max)
 Proposed RMSE and Hausdorff distances implementation. More...
 
const std::vector< double > & get_vec_distorsion () const
 compared with the same reference mesh). More...
 

Protected Member Functions

void initialize_AABB_tree_for_init_LoD ()
 
void subsample_LoD_init ()
 
double compute_L2 (const HalfedgeGraph &mesh_to_sample, int cas, bool compute_RMSE_instead_of_max)
 

Private Attributes

HalfedgeGraph _LoD_init
 
PointMap _pm_init
 
AABB_tree _LoD_init_tree
 
std::list< Point_samples_LoD_init
 
double _number_of_points_per_area_unit_LoD_init
 
double _area
 
double _grid_spacing
 
std::vector< double > _vec_distorsion
 

Detailed Description

template<typename HalfedgeGraph, typename PointMap, typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
class FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >

Geometric_metrics is a class dedicated to the geometric distance computation between an original full resolution mesh and a simplified version (a LoD). Two distortions are currently available, the maximum error (Hausdorff distance) and an approximation of the RMSE distance. Note: this code only works with CGAL mesh data structures for the time being.

Definition at line 54 of file Geometric_metrics.h.

Member Typedef Documentation

◆ AABB_primitive

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
typedef CGAL::AABB_face_graph_triangle_primitive<HalfedgeGraph> FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::AABB_primitive

Definition at line 58 of file Geometric_metrics.h.

◆ AABB_traits

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
typedef CGAL::AABB_traits<CGALKernel, AABB_primitive> FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::AABB_traits

Definition at line 59 of file Geometric_metrics.h.

◆ AABB_tree

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
typedef CGAL::AABB_tree<AABB_traits> FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::AABB_tree

Definition at line 60 of file Geometric_metrics.h.

◆ K

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
typedef CGAL::Exact_predicates_inexact_constructions_kernel FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::K

Definition at line 57 of file Geometric_metrics.h.

Constructor & Destructor Documentation

◆ Geometric_metrics()

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::Geometric_metrics ( const HalfedgeGraph &  LoD_init,
const PointMap &  pm_init 
)
inline

Definition at line 62 of file Geometric_metrics.h.

Here is the call graph for this function:

Member Function Documentation

◆ compute_hausdorff()

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
double FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::compute_hausdorff ( const HalfedgeGraph &  LoD,
int  cas 
)
inline

CGAL Hausdorff distance implementation.

Definition at line 70 of file Geometric_metrics.h.

◆ compute_L2()

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
double FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::compute_L2 ( const HalfedgeGraph &  mesh_to_sample,
int  cas,
bool  compute_RMSE_instead_of_max 
)
inlineprotected

Definition at line 132 of file Geometric_metrics.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ compute_symmetric_L2()

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
double FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::compute_symmetric_L2 ( const HalfedgeGraph &  LoD,
bool  compute_RMSE_instead_of_max 
)
inline

Proposed RMSE and Hausdorff distances implementation.

Definition at line 211 of file Geometric_metrics.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_vec_distorsion()

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
const std::vector<double>& FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::get_vec_distorsion ( ) const
inline

compared with the same reference mesh).

Get the history of computed distances (can include several LoDs

Definition at line 227 of file Geometric_metrics.h.

◆ initialize_AABB_tree_for_init_LoD()

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
void FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::initialize_AABB_tree_for_init_LoD ( )
inlineprotected

Definition at line 87 of file Geometric_metrics.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ subsample_LoD_init()

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
void FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::subsample_LoD_init ( )
inlineprotected

Definition at line 99 of file Geometric_metrics.h.

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ _area

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
double FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::_area
private

Definition at line 236 of file Geometric_metrics.h.

◆ _grid_spacing

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
double FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::_grid_spacing
private

Definition at line 236 of file Geometric_metrics.h.

◆ _LoD_init

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
HalfedgeGraph FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::_LoD_init
private

Definition at line 230 of file Geometric_metrics.h.

◆ _LoD_init_tree

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
AABB_tree FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::_LoD_init_tree
private

Definition at line 232 of file Geometric_metrics.h.

◆ _number_of_points_per_area_unit_LoD_init

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
double FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::_number_of_points_per_area_unit_LoD_init
private

Definition at line 235 of file Geometric_metrics.h.

◆ _pm_init

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
PointMap FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::_pm_init
private

Definition at line 231 of file Geometric_metrics.h.

◆ _samples_LoD_init

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
std::list<Point> FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::_samples_LoD_init
private

Definition at line 233 of file Geometric_metrics.h.

◆ _vec_distorsion

template<typename HalfedgeGraph , typename PointMap , typename face_iterator = typename boost::graph_traits<HalfedgeGraph>::face_iterator, typename Vector = typename FEVV::Geometry_traits<HalfedgeGraph>::Vector, typename Point = typename FEVV::Geometry_traits<HalfedgeGraph>::Point>
std::vector<double> FEVV::Filters::Geometric_metrics< HalfedgeGraph, PointMap, face_iterator, Vector, Point >::_vec_distorsion
private

Definition at line 238 of file Geometric_metrics.h.


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