python - 填充表面网格的算法

标签 python algorithm volume mesh

我有一个描述闭合曲面网格的点云。我想从中创建一个体积网格:因此我必须在这个“表面点云”中附加一些点。到目前为止,我使用一种 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 无法处理该数据集)。 有谁知道在表面网格内创建点以使三角剖分后的角度不会太大的好算法吗?

最佳答案

嗯,我认为你处理问题的方式不对

  • 但我可能误解了你的问题
  • 你有点云并且想要三角网格
  • 你不能随意加点......这只会让事情复杂化
  • 而是找到周边多边形
  • 然后对其进行三角测量

最近我在解决非常相似的问题。

  • 此处:https://stackoverflow.com/a/21884021/2521214
  • 它正在点云中寻找漏洞并创建周边多边形
  • 除非孔非常小或与其他孔嵌套在一起,否则它不会产生伪影
  • 您需要调整 H、V 线扫描以满足您的需要(或填充 map[][] 倒置)
  • 只在 map 上找点而不是洞

在此之后,您只需使用任何三角测量...

  • 或自己制作
  • 因为您在 H、V 线中有凸/凹边界信息(重复标志)
  • 如果单行或单列有更多行,则有 1 行具有相同的孔 id
  • 然后您必须剖析网格以从中获得凸多边形

关于python - 填充表面网格的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22089929/

相关文章:

Python、 Selenium : Isolate Item From Returned List

python - 如何在循环中使用导入的函数以及该函数内的循环变量?

Python Tkinter 条目小部件不接受输入

c++ - 在 C++ 中使用蒙特卡洛方法求 π 的问题

iphone - 控制主音量 - iPhone、Cocoa Touch

python - 如何控制xgboost的模型大小?

r - 将集合的分区枚举为大小相等的子集

c - 如何使用递归打印出 C 中一系列数字的所有排列?

java - Java设置麦克风电平

audio - avconv更改音频文件的音量