填充表面网格的算法

3

我有一个点云,描述了一个封闭的表面网格。我想通过这个创建一个体网格:因此,我必须在这个“表面点云”内添加一些点。到目前为止,我使用一种类似于Sierpinski算法的方法:

1) begin with middlepoint of all points
2) random choose one of the surface points
3) create new point at the half of the connection line between point (1) and (2)  
4) start again at (1) but take the new point (3) as first point

问题:当我三角化所有的点时,许多角度太大(ANSYS无法处理此数据集)。 有人知道一个好的算法,在表面网格内创建点,以便在三角剖分后角度不会太大吗?

1个回答

1

我认为你的解决问题的方法不正确

  • 但是我可能误解了你的问题
  • 你有点云并想要三角形网格
  • 你不能随意添加点...这只会使问题更加复杂
  • 相反,找到周长多边形
  • 然后在其上使用三角剖分

最近我解决了非常类似的问题。

  • 这里: https://dev59.com/U2Eh5IYBdhLWcg3w9nlj#21884021
  • 它正在查找点云中的孔并创建周长多边形
  • 除非孔很小或嵌套在其他孔中,否则它可以正常工作而不产生伪影
  • 您需要调整H、V线扫描以满足您的需求(或填充map[][]的反转)
  • 只需在地图中找到点而不是孔

之后,您只需使用任何三角剖分...

  • 或者自己制作
  • 因为您在H、V线(重复标志)中具有凸/凹边框信息
  • 如果单行或单列有多行具有相同孔ID,则必须对网格进行剖分以从中获得凸多边形
  • 然后您需要将网格分解以从中获得凸多边形

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接