var upPos=[]; var downPos=[]; var upClipPos = []; var downClipPos = []; var downPositions =[]; var upPositions = []; var upMinHight = -Infinity; var downMaxHight = -Infinity; var upVolume =0; var downVolume = 0; var centerVolume =0; function startAll(){ upPos=[]; downPos=[]; upClipPos = []; downClipPos = []; downPositions =[]; upPositions = []; upMinHight = -Infinity; downMaxHight = -Infinity; upVolume =0; downVolume = 0; centerVolume =0; } //绘制上下顶点 function initPoints(up,down){ startAll(); for (let i = 0; i < up.length; i++) { const coords = up[i].coords.split(","); const x = Number(coords[0]); const y = Number(coords[1]); const z = Number(coords[2]); upPos.push({ "x":x, "y":y, "z":z }); } for (let n = 0; n < down.length; n++) { const coords = down[n].coords.split(","); const x = Number(coords[0]); const y = Number(coords[1]); const z = Number(coords[2]); downPos.push({ "x":x, "y":y, "z":z }); } return initUpAndDownPolygon(up,down); } //绘制上下顶底面 function initUpAndDownPolygon(up,down){ for (let i = 0; i < up.length; i++) { const coords = up[i].coords.split(","); upPositions.push( Number(coords[0]), Number(coords[1]), Number(coords[2]) ); } for (let i = 0; i < down.length; i++) { const coords = down[i].coords.split(","); downPositions.push( Number(coords[0]), Number(coords[1]), Number(coords[2]) ); } return clipUpByPoint(); } //上表面水平切割 function clipUpByPoint(){ upPos.sort(compare("z")); upMinHight = upPos[0].z; const upClipPoints = []; for (let i = 0; i < upPos.length; i++) { const upEle = upPos[i]; const x = upEle.x; const y = upEle.y; const z = upMinHight; var val = { "x":x, "y":y, "z":z } upClipPos.push(val) upClipPoints.push(val) } return clipBottomByPoint(); } // 下表面水平切割 function clipBottomByPoint() { downPos.sort(compare("z")); let length = downPos.length - 1; downMaxHight = downPos[length].z; const downClipPoints = []; for (let i = 0; i < downPos.length; i++) { const downEle = downPos[i]; const x = downEle.x; const y = downEle.y; const z = downMaxHight; var val = { "x":x, "y":y, "z":z } downClipPos.push(val); downClipPoints.push(val); } return createUpSolid(); } // 创建上半部分空间体 function createUpSolid(){ const vertex = upPos[0]; const upSolidPolygonPoints = []; const fourpoints0 = []; const fourpoints1 = []; for (let i = 1; i