CGAL 2.5D网格具有最小元素区域

时间:2016-01-26 17:54:45

标签: c++ cgal

我正在尝试从LIDAR数据集 A 构建一个2.5D网格,其中包含~50,000,000个点(x,y,z)来描述地形市区。最终的目的是使用这个网格进行洪水的数值模拟,我遇到了太小的元素问题。我采取了以下步骤:

  • 使用Point_Processing_3创建一个简化集 B 的点(x,y,z),保留原始数据的约1%(CGAL::wlop_simplify_and_regularize_point_set)< / LI>
  • 使用简化的建筑物覆盖区作为约束(CGAL::Constrained_Delaunay_triangulation_2
  • 创建约束Delaunay三角剖分 cdt
  • 如果位置距离三角测量中任何现有顶点至少1米,则将 B 中的点插入 cdt
  • 使用Delaunay_mesher_2

    细化网格
    #include <CGAL/Delaunay_mesher_2.h>
    #include <CGAL/Delaunay_mesh_size_criteria_2.h>
    Meshing_engine engine(cdt);
    engine.refine_mesh();
    

到目前为止一切顺利。生成的网格看起来非常好。然而,我最终得到了很多非常小的三角形,这使得任何水力模拟都非常困难。我不知道如何摆脱这些。

refine_mesh()结合使用的标准似乎总是旨在惩罚大元素,而这是相反的情况。在许多地区,大三角形将非常精细,但不应出现尺寸为0.5平方米的三角形。

另一种选择是使用cdt.remove(vertex_handle)从三角测量中手动删除顶点。但是,如果面太小,如何选择要删除的顶点?

任何人都可以帮助指向一个方向吗?我附上了一个图像,其中一个有问题的区域标记为红色。

2.5D mesh with problem areas marked red. Empty areas are buildings.

0 个答案:

没有答案