繁体   English   中英

CGAL 3D表面网格生成设置初始点

[英]CGAL 3D surface mesh generation setting initial points

我使用CGAL对隐式曲面进行网格划分,到目前为止这个例子接近我想要完成的内容。

然而, 隐式表面由几个连接的组件组成,其中可能没有检测到一个。

例如,如果初始点数设置为800

  // meshing surface
  CGAL::make_surface_mesh(c2t3, surface, criteria, CGAL::Manifold_with_boundary_tag(),800);

可以找到具体的组件。

但是,我宁愿提供明确的起点 ,我的程序很容易找到。 不幸的是,我不明白如何使用CGAL实现这一目标。

从文档中我发现这种方法可能有所帮助

SurfaceMeshTraits_3 :: Construct_initial_points()

我无法弄清楚,如何整合这个。

有人可以通过CGAL模板编程“熟悉”给我一个粗略的草图如何继续 - 可能只是模板<...>类XXX公共:YYY {Construct_initial_points ...}将在示例中使用上面的代码?

如果我理解正确,你实际上想要从点集构造一个表面。 有一个教程就是为了这个。

帮助一下:

CGAL::make_surface_mesh(c2t3,                                 // reconstructed mesh
                        surface,                              // implicit surface
                        criteria,                             // meshing criteria
                        CGAL::Manifold_with_boundary_tag());  // require manifold mesh

上面的代码显示了为构建曲面而必须提供的内容。 您的结果存储在c2t3中,您可以通过使用泊松函数从示例中所示的一组点生成隐式曲面:

typedef CGAL::Exact_predicates_inexact_constructions_kernel Kernel;
typedef CGAL::Poisson_reconstruction_function<Kernel> Poisson_reconstruction_function;
Poisson_reconstruction_function function(points.begin(), points.end(),
        CGAL::make_normal_of_point_with_normal_pmap(PointList::value_type()) );

有两种方法可以继续:

  1. 包括从隐式函数生成的点集中的初始点,并在其上定义泊松重建函数。

  2. 提供SurfaceMeshTraits_3特征可以传递的类模型。

原则上两个是困难的,你必须从开始重新定义它,修改现有的,或从当前和实现派生:

construct_initial_points_object()

提示:CGAL中的概念是抽象类,模型是具体实现。

一旦完成,你可以使用

CGAL::Surface_mesh_complex_2_in_triangulation_3< YOUR_NEW_TRAITS >

使用它。

为了实现自定义重建(例如没有

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM