“任意多边形地形开挖” 是“地形开挖”的补充篇,在这节里,我们介绍关于如何使用任意多边形对地形进行开挖,同时,由于有不少小伙伴也咨询了关于“地形开挖”篇后序内容中的填充地形的效果,之前没放出来,是想让小伙伴有个思考的过程,现在放出来,也是提供一种解决方法。
效果图
直接上代码说明方法
1、使用鼠标交互事件,采集需要开挖的范围
注: 这里要特别注意一点,为了下面的计算 ClippingPlane 方便,采集点顺序最好是 逆时针,如果点集的组织是顺时针,需要首先逆序成逆时针,关于如果判断一个点集是否是顺时针或者是逆时针,可以用向量法求多边形面积的方式,如果为正,则为顺时针,否者为逆时针。或者使用JS插件计算,比如turf.js。
var points = [
new Cesium.Cartesian3(-1715292.6999753984, 4993153.157628936, 3566663.752912529),
new Cesium.Cartesian3(-1715285.8150713604, 4993167.072601330,3566647.6921528564),
new Cesium.Cartesian3(-1715286.5985765400, 4993181.309761941, 3566627.519787549),
new Cesium.Cartesian3(-1715299.0249209427, 4993191.177501195, 3566607.861264360),