Three.js模型几何体面积、体积计算
在工作中通过Three.js开发项目的时候,一些特定的情况下你可能需要计算一个三维模型的表面积或者体积,比如在3D打印的Web项目中,你需要计算一个三维模型的体积,然后通过体积计算打印一个三维模型所需要的3D打印材料费;比如开发的一个程序中,需要自动计算一个地面、墙面或某个零件的表面需要多少涂料,肯定需要先计算它的外表面面积是多少。
思路——模型几何体表面积计算
如果是一个立方体、球体等规则几何体,计算它们的面积,可以直接代入公式,实际应用中,不一定就是规则几何体,下面的任务是探讨一个通用的算法,可以计算任意形状的几何体,任意自由形状的曲面表面积。
一个三维模型,可能包含多个网格模型Mesh,如果一个三维模型有多个网格模型,你可以分别计算每一个网格模型的表面积,然后求和即可。这里先考虑如何计算一个网格模型Mesh的表面积,每个网格模型的几何体本质上都是多个三角形组成,计算一个网格模型的外表面积,只需要计算该网格模型几何体所有三角形面积就可以,如果想计算所有三角形的面积,肯定要先计算一个三角形的面积。
一个三角形面积
已知三角形的三个顶点p1, p2, p3的坐标值,利用三个顶点的坐标计算三角形的面积,每个顶点的坐标通过一个三维向量对象Vector3表示,具体代码见下方。
下面的计算主要是向量的计算,如果你对Three.js向量相关内容不了解,可以查看官方文档Vector3接口的介绍,更多向量Vector3相关的内容可以参考Three.js进阶视频教程数学部分。
//三角形面积计算
function AreaOfT