You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Matplotlib和Numpy计算3D绘图的体积与表面积?

计算该3D模型的体积与表面积

一、模型结构分析

你提供的3D模型顶点坐标如下:

  • 底部4个顶点(z=-2.5):v0(-2,-2,-2.5)、v1(2,-2,-2.5)、v2(2,2,-2.5)、v3(-2,2,-2.5)
  • 顶部2个顶点(z=2.5):v4(2,0,2.5)、v5(-2,0,2.5)

模型由5个面组成:2个三角形面、3个四边形面,属于凸多面体,可以通过两种方式计算体积和表面积:手动拆分几何体计算,或者利用Python库自动计算。


二、体积计算

方法1:利用scipy.spatial.ConvexHull自动计算

凸多面体的体积可以直接用ConvexHull快速求解,只需在你的代码中加入以下片段:

from scipy.spatial import ConvexHull

# 基于顶点计算凸包
hull = ConvexHull(v)
print(f"模型体积:{hull.volume}")

运行后会输出准确的体积结果,这个方法简单高效,适合大多数凸多面体场景。

方法2:手动拆分几何体计算

把模型拆成两个对称区域(y≤0和y≥0)分别计算:

  1. y≤0区域:由v0、v1、v4、v5组成的斜四棱柱,底面为x∈[-2,2]、z∈[-2.5,2.5]的矩形(面积4×5=20),y方向垂直距离为2,体积=20×2=40
  2. y≥0区域:由v2、v3、v4、v5组成的楔形体,可看作底面为y∈[0,2]、x∈[-2,2]的矩形(面积4×2=8),平均高度为2.5,体积=8×2.5=20

总体积=40+20=60,和ConvexHull计算结果一致。


三、表面积计算

方法1:利用scipy.spatial.ConvexHull自动计算

ConvexHull同样可以直接输出表面积:

print(f"模型表面积:{hull.area}")

方法2:手动计算每个面的面积之和

逐个计算5个面的面积后求和:

  1. 底部矩形面v0-v1-v2-v3:面积=4×4=16
  2. 平行四边形面v0-v1-v4-v5:边长分别为4和√(2²+5²)=√29,面积=4×√29≈21.54
  3. 三角形面v0-v3-v5:用海伦公式计算,面积≈10.72
  4. 三角形面v2-v1-v4:与v0-v3-v5对称,面积≈10.72
  5. 平行四边形面v2-v3-v5-v4:与v0-v1-v4-v5对称,面积≈21.54

总表面积=16 + 21.54×2 + 10.72×2≈80.52,和ConvexHull计算结果一致。


完整代码示例

将计算逻辑整合到你的原始代码中:

from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d.art3d import Poly3DCollection, Line3DCollection
import numpy as np
from scipy.spatial import ConvexHull

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 模型顶点
v = np.array([[-2, -2, -2.5], [2, -2, -2.5], [2, 2, -2.5],  [-2, 2, -2.5], [2,0,2.5], 
        [-2,0,2.5]])
ax.scatter3D(v[:, 0], v[:, 1], v[:, 2])

# 模型面集合
verts = [ [v[0],v[1],v[4],v[5]], [v[0],v[3],v[5]],
 [v[2],v[1],v[4]], [v[2],v[3],v[5],v[4]], [v[0],v[1],v[2],v[3]]]

# 绘制模型
ax.add_collection3d(Poly3DCollection(verts, 
 facecolors='cyan', linewidths=1, edgecolors='r', alpha=.25))

# 计算并输出体积、表面积
hull = ConvexHull(v)
print(f"模型体积:{hull.volume}")
print(f"模型表面积:{hull.area}")

plt.show()

内容的提问来源于stack exchange,提问作者Freya the Goddess

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 02:30:43