Polyline Volume.html

<!DOCTYPE html>
<html lang="en">

<head>
    <!-- Use correct character set. -->
    <meta charset="utf-8">
    <!-- Tell IE to use the latest, best version. -->
    <meta http-equiv="X-UA-Compatible" content="IE=Edge">
    <!-- Make the app on mobile take up the full browser screen and disable user scaling. -->
    <meta name="viewport"
          content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
    <title>Polyline Volume</title>

    <!-- The Cesium library. -->
    <script src="../ThirdParty/Cesium/Cesium.js"></script>
    <!-- Style our app. -->
    <style>
        @import url(../ThirdParty/Cesium/Widgets/widgets.css);
        html, body, #cesiumContainer {
            width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden;
        }
    </style>
</head>

<body>
    <div id="cesiumContainer"></div>

    <script>
        Cesium.Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIzNDhhYmQxOC1mYzMwLTRhYmEtOTI5Ny1iNGExNTQ3ZTZhODkiLCJpZCI6NTQ1NCwic2NvcGVzIjpbImFzciIsImdjIl0sImlhdCI6MTU0MzM3Mzc0NH0.RU6ynAZcwQvdfygt_N_j2rb2lpsuyyROzdaLQg0emAg';
        let viewer = new Cesium.Viewer('cesiumContainer');

        function computeCircle(radius) {
            /*此函数用于,给定半径,计算出该圆的特征点的坐标放在数组positions,
            * 并返回该数组。*/
            let positions = [];
            for (let i = 0; i < 360; i++) {
                let radians = Cesium.Math.toRadians(i);
                positions.push(new Cesium.Cartesian2(radius * Math.cos(radians), radius * Math.sin(radians)));
            }
            return positions;
        }

        function computeStar(arms, rOuter, rInner) {
            /*此函数用于,给定星星的胳膊数,大圆半径,小圆半径,计算出星星的特征点位置,
            * 放在数组positions,并返回该数组。*/
            let angle = Math.PI / arms;
            let length = 2 * arms;
            let positions = new Array(length);
            for (let i = 0; i < length; i++) {
                let r = (i % 2) === 0 ? rOuter : rInner;
                positions[i] = new Cesium.Cartesian2(Math.cos(i * angle) * r, Math.sin(i * angle) * r);
            }
            return positions;
        }

        let redTube = viewer.entities.add({
            name : 'Red tube with rounded corners',
            polylineVolume : {
                positions : Cesium.Cartesian3.fromDegreesArray([-85.0, 32.0,
                    -85.0, 36.0,
                    -89.0, 36.0]),  // polylineVolume 中心线(我猜)。
                shape : computeCircle(60000.0),  // 用于指定要挤压的形状的cartesian 2位置数组
                material : Cesium.Color.RED
            }
        });

        let greenBox = viewer.entities.add({
            name : 'Green box with beveled corners and outline',
            polylineVolume : {
                positions : Cesium.Cartesian3.fromDegreesArrayHeights([-90.0, 32.0, 0.0,
                    -90.0, 36.0, 100000.0,
                    -94.0, 36.0, 0.0]),
                shape :[new Cesium.Cartesian2(-50000, -50000),
                    new Cesium.Cartesian2(50000, -50000),
                    new Cesium.Cartesian2(50000, 50000),
                    new Cesium.Cartesian2(-50000, 50000)],
                cornerType : Cesium.CornerType.BEVELED,
                material : Cesium.Color.GREEN.withAlpha(0.5),
                outline : true,
                outlineColor : Cesium.Color.BLACK
            }
        });

        let blueStar = viewer.entities.add({
            name : 'Blue star with mitered corners and outline',
            polylineVolume : {
                positions : Cesium.Cartesian3.fromDegreesArrayHeights([-95.0, 32.0, 0.0,
                    -95.0, 36.0, 100000.0,
                    -99.0, 36.0, 200000.0]),
                shape : computeStar(7, 70000, 50000),  // 7角星,大圆半径,小圆半径。
                cornerType : Cesium.CornerType.MITERED,
                material : Cesium.Color.BLUE
            }
        });

        viewer.zoomTo(viewer.entities);
    </script>
</body>

</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值