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