Geometry 计算细分网格的最大边长度

Geometry 计算细分网格的最大边长度,geometry,mesh,vtk,area,triangulation,Geometry,Mesh,Vtk,Area,Triangulation,我有两个三角形网格m和m1,具有以下属性: m_faces: 16640 m_points: 49920 m_surface_area: 178.82696989147524 m1_faces: 8 m1_points: 24 m1_surface_area: 1.440205667851934 现在我想细分m1,使其具有与m大致相同的面数,即16640。我使用的是vtk库,更具体地说是功能,根据描述: …is a filter that subdivides triangles based

我有两个三角形网格
m
m1
,具有以下属性:

m_faces: 16640
m_points: 49920
m_surface_area: 178.82696989147524

m1_faces: 8
m1_points: 24
m1_surface_area: 1.440205667851934
现在我想细分
m1
,使其具有与
m
大致相同的面数,即16640。我使用的是vtk库,更具体地说是功能,根据描述:

…is a filter that subdivides triangles based on maximum edge length and/or triangle area.
我的问题是如何计算最大边长度,根据一些尝试和错误,我发现这需要是一个介于
[0.0188-0.0265]
之间的值,这给了我16384个面。然而,我找不到任何公式可以给出这个比率范围内的数字,并且在不同的情况下是一致的。知道如何计算每次的最大边缘长度吗

在另一个示例中,我有以下两个网格:

Sph1_faces: 390
Sph1_points: 1170
Sph1_surface_area: 1.9251713393584104

Sph2_faces: 1722
Sph2_points: 5166
Sph2_suface_area: 10.59400389764954
为了获得接近
Sph2的
Sph1
面数,最大边长度应在
[0.089-0.09]
之间,这为
Sph1
提供了1730个面

我试着用这个公式做相应的假设,然后求解边,除以面数或点数,但似乎不起作用。因此,任何其他想法都将不胜感激


谢谢。

恐怕很难预测这种自适应算法的结果。特别是如果你的输入非常不规则。更重要的是,文档中没有说明使用了什么算法。但是使用等边假设的方法似乎是合理的(因为这通常是细分算法的目标之一)。对于您的示例,我得到的边长度分别为
0.01413
0.05081
,这与您的间隔不太远。你用这些数字得到的结果难道不令人满意吗?我认为你是对的,要使它始终如一地工作真的很难。不,根据我的需要工作的数字需要在我提供的范围内。无论如何,在应用了不同的东西之后,我放弃了
vtkAdaptiveSubdivisionFilter()
。现在,我的另一种解决方法是使用
vtKlinearSubsectionFilter()
最多使用一些面,这些面的数量要大于我想要的数量,然后将其减少到精确的数量。目前看来,这似乎效果不错。