Cesium提供的接口很基础,很专业。因此扩展起来非常灵活,但同时也有一定的门槛。而且目前关于Cesium相关的参考资料很少,因此实现功能后准备自己记录一下过程。也希望为后续的开发者们提供一些参考资料。
填挖方计算
填挖方:填方+挖方
过程:绘制一个多边形区域,设置一个填挖基准面,基于这个区域的地形及基准面高度,计算需要填多少立方的土,挖掉多少立方的土。
原理:将多边形划分为无穷多个很小很小的三角体,这一特性可利用Cesium.PolygonGeometry.granularity特性来实现。然后遍历每一个小三角体,判断每一个三角体是挖掉,还是填平。(注意:因为地形表面起伏的原因,体积计算会有误差。所以整体计算结果仅供参考)
效果图中,绿色的是Cesium.Entity中的围墙-wall,实现时参考Cesium沙盒示例。蓝色的是带有extrudedHeight属性的多边形,高度为基准面高度。
注:整体思路来源于另一篇文章Cesium-地形挖方分析,感谢大神提供思路。
关键代码(typeScript):(该方法不适用与模型上的分析,