use dependent overload

This commit is contained in:
Lingjie Zhu 2017-07-24 19:31:59 +08:00
parent b456bd596f
commit cd4cb878c8
1 changed files with 18 additions and 54 deletions

View File

@ -60,24 +60,12 @@ void vsa_mesh_approximation(
const ApproximationTrait &app_trait) { const ApproximationTrait &app_trait) {
// CGAL_precondition(is_pure_triangle(tm)); // CGAL_precondition(is_pure_triangle(tm));
typedef CGAL::internal::VSA_approximation< vsa_mesh_approximation(tm,
TriangleMesh, f_proxy_pmap,
FacetProxyMap, app_trait,
ApproximationTrait> VSA_approximation; init,
number_of_segments,
VSA_approximation algorithm(tm, app_trait); number_of_iterations);
switch (init) {
case VSA_approximation::RandomInit:
algorithm.partition(number_of_segments, number_of_iterations, f_proxy_pmap);
break;
case VSA_approximation::IncrementalInit:
algorithm.partition_incre(number_of_segments, number_of_iterations, f_proxy_pmap);
break;
case VSA_approximation::HierarchicalInit:
algorithm.partition_hierarchical(number_of_segments, number_of_iterations, f_proxy_pmap);
break;
}
typedef CGAL::internal::VSA_mesh_extraction< typedef CGAL::internal::VSA_mesh_extraction<
TriangleMesh, TriangleMesh,
@ -188,24 +176,12 @@ void vsa_mesh_approximation(
facet_proxy_map.insert(std::pair<face_descriptor, std::size_t>(f, 0)); facet_proxy_map.insert(std::pair<face_descriptor, std::size_t>(f, 0));
FacetProxyMap f_proxy_pmap(facet_proxy_map); FacetProxyMap f_proxy_pmap(facet_proxy_map);
typedef CGAL::internal::VSA_approximation< vsa_mesh_approximation(tm,
TriangleMesh, f_proxy_pmap,
FacetProxyMap, app_trait,
ApproximationTrait> VSA_approximation; init,
number_of_segments,
VSA_approximation algorithm(tm, app_trait); number_of_iterations);
switch (init) {
case VSA_approximation::RandomInit:
algorithm.partition(number_of_segments, number_of_iterations, f_proxy_pmap);
break;
case VSA_approximation::IncrementalInit:
algorithm.partition_incre(number_of_segments, number_of_iterations, f_proxy_pmap);
break;
case VSA_approximation::HierarchicalInit:
algorithm.partition_hierarchical(number_of_segments, number_of_iterations, f_proxy_pmap);
break;
}
typedef typename boost::property_map<TriangleMesh, boost::vertex_point_t>::type VertexPointMap; typedef typename boost::property_map<TriangleMesh, boost::vertex_point_t>::type VertexPointMap;
typedef CGAL::internal::VSA_mesh_extraction< typedef CGAL::internal::VSA_mesh_extraction<
@ -263,24 +239,12 @@ void vsa_mesh_approximation(
const std::size_t number_of_iterations) { const std::size_t number_of_iterations) {
// CGAL_precondition(is_pure_triangle(tm)); // CGAL_precondition(is_pure_triangle(tm));
typedef CGAL::internal::VSA_approximation< vsa_mesh_approximation(tm,
TriangleMesh, f_proxy_pmap,
FacetProxyMap, app_trait,
ApproximationTrait> VSA_approximation; init,
number_of_segments,
VSA_approximation algorithm(tm, app_trait); number_of_iterations);
switch (init) {
case VSA_approximation::RandomInit:
algorithm.partition(number_of_segments, number_of_iterations, f_proxy_pmap);
break;
case VSA_approximation::IncrementalInit:
algorithm.partition_incre(number_of_segments, number_of_iterations, f_proxy_pmap);
break;
case VSA_approximation::HierarchicalInit:
algorithm.partition_hierarchical(number_of_segments, number_of_iterations, f_proxy_pmap);
break;
}
typedef typename boost::property_map<TriangleMesh, boost::vertex_point_t>::type VertexPointMap; typedef typename boost::property_map<TriangleMesh, boost::vertex_point_t>::type VertexPointMap;
typedef CGAL::internal::VSA_mesh_extraction< typedef CGAL::internal::VSA_mesh_extraction<