亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何計算表面由三角形組成的3D網格物體的體積

如何計算表面由三角形組成的3D網格物體的體積

我想計算一個表面由三角形組成的3D網格物體的體積。
查看完整描述

3 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

實際上是一個非常簡單的計算。


訣竅是計算四面體的有符號體積 -根據您的三角形并以原點為起點。體積的符號來自于三角形是否指向原點方向。(三角形的法線本身取決于頂點的順序,這就是為什么您看不到下面明確引用的三角形的原因。)


這全部歸結為以下簡單功能:


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());

}


查看完整回答
反對 回復 2019-10-17
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

上面的方法適用于像球形四面體等“簡單”對象(沒有相交/重疊的三角形)。對于更復雜的形狀,一個好主意是分割網格(將其關閉)并分別計算每個分段的體積。希望這可以幫助。


查看完整回答
反對 回復 2019-10-17
  • 3 回答
  • 0 關注
  • 1059 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號