SuperMap iClient3D for WebGL教程 绘制椭圆环状面

作者:Nec_Eu

在这里插入图片描述
环状面(或椭圆环状面),可在“圆环套圆环”的显示效果中用于显示次级范围或更低级别范围,在军事、规划等领域均有不同程度的应用。然而,在Cesium的开放接口——Entity中,并没有环状面的直接接口,这为环状面的制作造成了困难。那么我们应该怎么制作环状面呢?这里,up提供一个最简单的实现思路——以点构面,然后通过面对象(即Entity.polygon)来实现。下面就让我们来看一下具体步骤吧。

第一步,获取外圈椭圆边界线的Geometry

    var ellipseOutlineInner = new Cesium.EllipseOutlineGeometry({
      center : Cesium.Cartesian3.fromDegrees(116, 39),
      semiMajorAxis : 200000.0,
      semiMinorAxis : 150000.0,
      rotation : Cesium.Math.toRadians(0.0)
    });
    var geometryInner = Cesium.EllipseOutlineGeometry.createGeometry(ellipseOutlineInner);

第二步,获取该Geometry上的节点

    var valuesInner = geometryInner.attributes.position.values;
    var positionsInner = [];
    for(var i = 0; i < valuesInner.length; i = i + 3){
        var position = new Cesium.Cartesian3(valuesInner[i],valuesInner[i+1],valuesInner[i+2]);
        positionsInner.push(position);
    }

第三步,用同样的方法获取内圈椭圆边界线的节点

    var ellipseOutlineOuter = new Cesium.EllipseOutlineGeometry({
      center : Cesium.Cartesian3.fromDegrees(116, 39),
      semiMajorAxis : 400000.0,
      semiMinorAxis : 300000.0,
      rotation : Cesium.Math.toRadians(0.0)
    });
    var geometryOuter = Cesium.EllipseOutlineGeometry.createGeometry(ellipseOutlineOuter);
    
    var valuesOuter = geometryOuter.attributes.position.values;
    var positionsOuter = [];
    for(var i = 0; i < valuesOuter.length; i = i + 3){
        var position = new Cesium.Cartesian3(valuesOuter[i],valuesOuter[i+1],valuesOuter[i+2]);
        positionsOuter.push(position);
    }

第四步,通过Entity.Polygon添加环状面并定位

    var ring = viewer.entities.add({
        name : 'ring',
        polygon : {
            hierarchy:new Cesium.PolygonHierarchy(positionsOuter,[new Cesium.PolygonHierarchy(positionsInner)])
        }
    });

    viewer.zoomTo(viewer.entities);

结果如图所示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值