首页 / 浏览问题 / 三维GIS / 问题详情
三维模型-折线样式变抛物线
3EXP 2020年04月29日
let pointOrigin = [121.17350996561925, 27.984984352627176, 50];
      let point1 = [121.17307188929195, 27.98470330215371, 27]
      let dashedLine = this.viewer.entities.add({
        name: 'Blue dashed line',
        polyline: {
          positions: Cesium.Cartesian3.fromDegreesArrayHeights([...pointOrigin, ...point1]),
          width: 2,
          arcType: Cesium.ArcType.RHUMB,
          // hMax: 5000,
          material: new Cesium.PolylineDashMaterialProperty({
            color: Cesium.Color.WHITE
          })

        }
      });

问题1、看了官网实例,描绘出来是2点线段呈抛物线。我这个代码画出来笔直笔直的,跟arcType有关嘛,还是2点直接的高度差太低了

问题2、hMax的意思是啥。

实际效果如下

想实现的效果 是 根据一个初始点 以抛物线的形式描绘出来折线

1个回答

1、官网示例的线是平行地表的线,这个也是cesium默认的线

2、ArcType.RHUMB是恒向线,不是曲线,具体解释可以参考此blog

https://www.jianshu.com/p/aab4a0bb0d0e?tdsourcetag=s_pctim_aiomsg

3、制作曲线(准确来说是多节点折线模拟曲线)需要用到插值。Cesium提供一些插值接口,包括LinearSpline,CatmullRomSpline,HermiteSpline等。具体接口可在api中搜索spline,所有搜索结果均为线段插值接口。具体示例代码可参考https://www.cnblogs.com/yaohuimo/p/11692239.html

4、如果想要实现的是抛物线,那么需要自行提供插值算法。理论上来说,只要提供起点、落点、初始力度(或者初始角度),就可以在数学层面上得到抛物线公式,此时去进行时间插值就可以得到抛物线上的点、然后根据得到的插值点就可以构建类抛物线折线了。

以下是使用CatmullRomSpline实现的效果:

5,560EXP 2020年05月06日
...