如何计算三维模型的体积

二维平面上多边形的面积

首先,我们怎么计算二维平面上多边形的面积呢?如上图,让每个边与原点相连,构成一个三角形,计算每个这样的三角形,对其分配符号(符号的分配要参考整个边的方向,也即我们可以固定A →B — →A这样的为正方向),计算每个带符号三角形的面积和,其绝对值(因为可能该值为负)即为该多边形的面积。

那么三维模型呢?

三维模型是由多个三角面片构成的。对每个面而言,让这个面的三个点与远点相连,构成三棱锥,见下图。图中蓝色的是三维模型,ABC是选出来的一个面。

一个三维模型示例

现在构成了一个三棱锥OACB,其体积为:

三棱锥OACB的体积

通过判断NACB(面的法向)和原点O是否在面的同一侧判断体积正负,最后计算所有面构成的棱锥的带符号的体积和的绝对值(参考多边形)即为模型的体积。

也就是说,一个错误的模型也是由体积的!假如只有一个面片,那么用这种算法,该面片的体积为面片与原点构成和的三棱锥的体积。

Reference:

Zhang, Cha, and Tsuhan Chen. “Efficient feature extraction for 2D/3D objects in mesh representation.” Image Processing, 2001. Proceedings. 2001 International Conference on. Vol. 3. IEEE, 2001.

Show your support

Clapping shows how much you appreciated Zixuan Wang’s story.