猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
如何计算表面由三角形组成的3D网格物体的体积
我想计算一个表面由三角形组成的3D网格物体的体积。
慕婉清6462132
浏览 1004
回答 3
3回答
森栏
实际上是一个非常简单的计算。诀窍是计算四面体的有符号体积 -根据您的三角形并以原点为起点。体积的符号来自于三角形是否指向原点方向。(三角形的法线本身取决于顶点的顺序,这就是为什么您看不到下面明确引用的三角形的原因。)这全部归结为以下简单功能:public float SignedVolumeOfTriangle(Vector p1, Vector p2, Vector p3) { var v321 = p3.X*p2.Y*p1.Z; var v231 = p2.X*p3.Y*p1.Z; var v312 = p3.X*p1.Y*p2.Z; var v132 = p1.X*p3.Y*p2.Z; var v213 = p2.X*p1.Y*p3.Z; var v123 = p1.X*p2.Y*p3.Z; return (1.0f/6.0f)*(-v321 + v231 + v312 - v132 - v213 + v123);}然后是一个驱动程序来计算网格的体积:public float VolumeOfMesh(Mesh mesh) { var vols = from t in mesh.Triangles select SignedVolumeOfTriangle(t.P1, t.P2, t.P3); return Math.Abs(vols.Sum());}
0
0
0
慕勒3428872
上面的方法适用于像球形四面体等“简单”对象(没有相交/重叠的三角形)。对于更复杂的形状,一个好主意是分割网格(将其关闭)并分别计算每个分段的体积。希望这可以帮助。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
算法与数据结构
数据结构中,与所使用的计算机无关的数据是什么?
1 回答
学完C语言之后是先学数据结构还是先学JAVA好呢?
1 回答
数学
数学建模 什么意思?
2 回答
怎样学习数学建模?
1 回答
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续