我有一个带有一堆 3d 点的杂乱无章的点云。我使用某种表面重建方法来获得下垫面的三角形网格。表面可以是封闭的,也可以是不封闭的。有人可以指出我将如何估计这样一个表面所包围的体积(如果它是封闭的)。如果它没有关闭,那么“关闭”它并获得音量的方法是什么?如果有人能指出可以帮助我做到这一点的 C++ 库,我将不胜感激。
计算三角形网格的体积?
信息处理
点云
2022-02-15 22:43:47
2个回答
这个站点有代码和理论描述。寻找提及“多面体质量属性”的项目。他们通常住在网站的“物理”部分。
“关闭”体积可以通过添加缺失的表面来完成。将整个网格投影到 XY 平面上,如果三角形的法线指向远离 XY 平面,则分配值 +1,如果指向 XY 平面,则分配值 -1。如果体积是封闭的,则投影的每个部分都被网格中的偶数个三角形覆盖;一半的值为+1,一半的值为-1。
如果三角形网格中有一个简单的单孔,那么投影中也会有一个简单的单孔。只需追溯边缘即可。如果有多个孔,通常没有唯一的解决方案。(您可以修补两个孔或用管子连接它们)。
由于可能缺少与 XY 平面正交的三角形,因此您还需要对 XZ 和 YZ 平面重复此操作。
其它你可能感兴趣的问题