如何将多面体网格划分为一组具有签名面的不同多面体?

时间:2017-04-13 23:34:29

标签: c++ boost geometry mesh cgal

所以here我们有一个带有签名面的多面体网格。但是如何将这些签名的面部放入一个新的多面体网格?为了简化:假设我们加载了100个面网格,我们想从中挑选50个随机面并将它们放入一个新的网格中。如何在CGAL中做到这一点?

1 个答案:

答案 0 :(得分:1)

CGAL/Polygon_mesh_processing/connected_components.h中有以下未记录的函数:

CGAL::internal::corefinement::extract_connected_components(
  const Polyhedron& P,
  const Adjacency_criterium& adjacent,
  Output_iterator out);

Adjacency_criterium是一个函数对象,如下所示:

struct AC_example{
  bool
  operator()(Polyhedron::Halfedge_handle h) const
  {
    bool incident_faces_in_the_same_component = .... ;
    return incident_faces_in_the_same_component;
  }
};

除了补丁边框半边之外,它必须返回true。

Output_iterator是Polyhedron的输出迭代器

在CGAL 4.10中,函数移入CGAL/internal/corefinemnt/connected_components.h。一个更好,更通用的功能正在发布,应该在即将发布的版本中发布。