获取geometry的所有faces顶点,根据顶点去计算表面积和体积
let Area = 0.0;
let volumes = 0.0;
// 计算体积和表面积
let array = geometry.attributes.position.array
for (let i = 0; i < array.length; i+=9) {
// 对应三角形三个顶点
let V1= new THREE.Vector3(array[i], array[i+1], array[i+2]);
let V2= new THREE.Vector3(array[i+3], array[i+4], array[i+5]);
let V3= new THREE.Vector3(array[i+6], array[i+7], array[i+8]);
// volume 会产生负数..............
volumes += volumeOfTriangle(V3, V2, V1);
Area += AreaOfTriangle(V3, V2, V1);
}
let SurfaceArea = (Area / 100).toFixed(2);
console.log('表面积:' + SurfaceArea);
let loadedObjectVolume = (volumes / 1000).toFixed(2);
console.log('体积:' + loadedObjectVolume);
体积计算关键代码
function Triangle(p1, p2, p3) {
ret