cesium计算平滑贴地路径 polyline插值 path贴地

1, 通过选择地球上的点,生成平滑且贴地的路径,但是发现polyline可以通过clampToGround: true属性贴地,path没有贴地属性,path可以通过

 entity.position.setInterpolationOptions({

        interpolationDegree : 5,

        interpolationAlgorithm : GeoVis.LagrangePolynomialApproximation

      });

设置插值算法,形成平滑曲线,polyline不可以。 


2,解决办法: 可以先利用path获取插值后的position,然后把这个position赋值给polyline,再设置贴地:
 

这个是利用path获取插值后的position代码: 

cumputePosition(){

var  paths = viewer.entities.add({

        position: positionProperty,

        path: {

          resolution: 1,

          material: new GeoVis.PolylineGlowMaterialProperty({

            glowPower: 0.1,

            color: GeoVis.Color.YELLOW

          }),

          width: 10

        }

      });

      paths.position.setInterpolationOptions({

        interpolationDegree: 5,

        interpolationAlgorithm: this.interpolation()

      });

 

      var newPosition = [];

      for (var now = startTime; now < endTime; ) {  // 这个startTime和endTIme都是你自己规定的JulianDate

        var posi = paths.position.getValue(now);

        var pos = new GeoVis.Cartesian3(posi.x, posi.y, posi.z);

        newPosition.push(pos);   // 把所有的坐标放到newPosition数组中

        now = GeoVis.JulianDate.addSeconds(now, 1, new GeoVis.JulianDate());

      }

      viewer.entities.remove(paths);  

return  newPosition

}

 这个是将绘制polyline贴地的代码:
 

var lastPosition = this.cumputePosition();

      polyline = earth.entities.add({

        position: lastPosition,

        polyline: {

          clampToGround: true,

          positions: lastPosition,

          material: new GeoVis.PolylineGlowMaterialProperty({

            glowPower: 0.1,

            color: GeoVis.Color.YELLOW

          }),

          width: 10

        },

      });

### 使用 Cesium 进行无人机航线规划 Cesium 是一款功能强大的开源地球可视化引擎,能够用于创建高精度的三维地理场景。通过 Cesium 可以实现无人机航线规划的功能,具体方法如下: #### 航线基础配置 在 Cesium 中绘制无人机航线时,可以通过 `Entity` 对象来定义路径,并利用插值算法使航线更加平滑自然。以下是基本代码示例以及说明[^1]: ```javascript var viewer = new Cesium.Viewer('cesiumContainer'); // 定义航点数组 (经纬度坐标) var waypoints = [ { position: Cesium.Cartesian3.fromDegrees(-75.5978, 40.0392), heading: Cesium.Math.toRadians(0) }, { position: Cesium.Cartesian3.fromDegrees(-75.5965, 40.0385), heading: Cesium.Math.toRadians(45) }, { position: Cesium.Cartesian3.fromDegrees(-75.5945, 40.0395), heading: Cesium.Math.toRadians(90) } ]; // 创建实体表示航线 viewer.entities.add({ name : 'Drone Path', polyline : { positions : Cesium.Property.createArray( waypoints.map(function(point) { return point.position; }) ), width : 5, material : Cesium.Color.YELLOW } }); // 设置插值方式 var property = new Cesium.SampledPositionProperty(); waypoints.forEach(function(waypoint) { property.addSample(Cesium.JulianDate.now(), waypoint.position); }); property.setInterpolationOptions({ interpolationDegree : 2, interpolationAlgorithm : Cesium.HermitePolynomialApproximation }); // 添加动态轨迹效果 viewer.entities.add({ position : property, model : { uri : './drone.glb' }, orientation : new Cesium.VelocityOrientationProperty(property), path : { resolution : 1, material : new Cesium.PolylineGlowMaterialProperty({ color : Cesium.Color.BLUE }), width : 10 } }); ``` 以上代码展示了如何使用 Hermite 插值算法生成一条平滑的飞行路径[^1]。 #### 多动作组支持 为了满足更复杂的任务需求,在改进版本中加入了多个动作组的支持。这些动作可以包括但不限于速度调整、高度变化或者拍摄角度控制等操作。所有的参数都经过严格的实际换算,最终传递给硬件设备执行[^2]。 例如,如果需要为某个特定航点指定额外的动作,则可以在数据结构中扩展字段描述该行为: ```json [ {"position": [-75.5978, 40.0392], "action": [{"type":"take_photo", "params":{"delay_seconds":3}}]}, {"position": [-75.5965, 40.0385], "action": []}, {"position": [-75.5945, 40.0395], "action": [{"type":"change_altitude", "params":{"new_height_meters":50}}]} ] ``` 此 JSON 数据片段表明第一个位置会延迟三秒拍照;第三个位置则改变飞至五十米高空继续前进[^2]。 #### 总结 综上所述,借助于 Cesium 的强大渲染能力与灵活的数据处理机制,完全可以构建一套完整的无人机航线规划解决方案。不仅限于简单的路线展示,还可以深入定制各种复杂交互逻辑,从而更好地服务于实际应用场景中的多样化需求。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值