亚洲动漫在线观看-亚洲动漫第一页-亚洲丁香婷婷-亚洲丶国产丶欧美一区二区三区-亚洲第一综合网站-亚洲第一永久色

顯示源代碼
fireworks
 開發文檔
            <!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link  rel='stylesheet' />
    <script src='http://ua.bigemap.com:30081/bmsdk/bigemap-gl.js/v1.1.0/bigemap-gl.js'></script>

</head>
<style>
    * {
        margin: 0;
        padding: 0;
    }

    #container {
        position: absolute;
        top: 0;
        bottom: 0;
        width: 100%;
    }
</style>

<body>
    <div id="container"></div>
    <div id="loadingOverlay">
        <h1>Loading...</h1>
    </div>
</body>
<script>

    bmgl.Config.HTTP_URL = 'http://ua.bigemap.com:30081/bmsdk/';
    var viewer = new bmgl.Viewer("container", {
        shouldAnimate: true,
        mapId: 'bigemap.dc-satellite',
    });

    var scene = viewer.scene;
    bmgl.Math.setRandomNumberSeed(315);

    var modelMatrix = bmgl.Transforms.eastNorthUpToFixedFrame(
        bmgl.Cartesian3.fromDegrees(-75.59777, 40.03883)
    );
    var emitterInitialLocation = new bmgl.Cartesian3(0.0, 0.0, 100.0);

    var particleCanvas;

    function getImage() {
        if (!bmgl.defined(particleCanvas)) {
            particleCanvas = document.createElement("canvas");
            particleCanvas.width = 20;
            particleCanvas.height = 20;
            var context2D = particleCanvas.getContext("2d");
            context2D.beginPath();
            context2D.arc(8, 8, 8, 0, bmgl.Math.TWO_PI, true);
            context2D.closePath();
            context2D.fillStyle = "rgb(255, 255, 255)";
            context2D.fill();
        }
        return particleCanvas;
    }

    var minimumExplosionSize = 30.0;
    var maximumExplosionSize = 100.0;
    var particlePixelSize = new bmgl.Cartesian2(7.0, 7.0);
    var burstSize = 400.0;
    var lifetime = 10.0;
    var numberOfFireworks = 20.0;

    var emitterModelMatrixScratch = new bmgl.Matrix4();

    function createFirework(offset, color, bursts) {
        var position = bmgl.Cartesian3.add(
            emitterInitialLocation,
            offset,
            new bmgl.Cartesian3()
        );
        var emitterModelMatrix = bmgl.Matrix4.fromTranslation(
            position,
            emitterModelMatrixScratch
        );
        var particleToWorld = bmgl.Matrix4.multiply(
            modelMatrix,
            emitterModelMatrix,
            new bmgl.Matrix4()
        );
        var worldToParticle = bmgl.Matrix4.inverseTransformation(
            particleToWorld,
            particleToWorld
        );

        var size = bmgl.Math.randomBetween(
            minimumExplosionSize,
            maximumExplosionSize
        );
        var particlePositionScratch = new bmgl.Cartesian3();
        var force = function (particle) {
            var position = bmgl.Matrix4.multiplyByPoint(
                worldToParticle,
                particle.position,
                particlePositionScratch
            );
            if (bmgl.Cartesian3.magnitudeSquared(position) >= size * size) {
                bmgl.Cartesian3.clone(
                    bmgl.Cartesian3.ZERO,
                    particle.velocity
                );
            }
        };

        var normalSize =
            (size - minimumExplosionSize) /
            (maximumExplosionSize - minimumExplosionSize);
        var minLife = 0.3;
        var maxLife = 1.0;
        var life = normalSize * (maxLife - minLife) + minLife;

        scene.primitives.add(
            new bmgl.ParticleSystem({
                image: getImage(),
                startColor: color,
                endColor: color.withAlpha(0.0),
                particleLife: life,
                speed: 100.0,
                imageSize: particlePixelSize,
                emissionRate: 0,
                emitter: new bmgl.SphereEmitter(0.1),
                bursts: bursts,
                lifetime: lifetime,
                updateCallback: force,
                modelMatrix: modelMatrix,
                emitterModelMatrix: emitterModelMatrix,
            })
        );
    }

    var xMin = -100.0;
    var xMax = 100.0;
    var yMin = -80.0;
    var yMax = 100.0;
    var zMin = -50.0;
    var zMax = 50.0;

    var colorOptions = [
        {
            minimumRed: 0.75,
            green: 0.0,
            minimumBlue: 0.8,
            alpha: 1.0,
        },
        {
            red: 0.0,
            minimumGreen: 0.75,
            minimumBlue: 0.8,
            alpha: 1.0,
        },
        {
            red: 0.0,
            green: 0.0,
            minimumBlue: 0.8,
            alpha: 1.0,
        },
        {
            minimumRed: 0.75,
            minimumGreen: 0.75,
            blue: 0.0,
            alpha: 1.0,
        },
    ];

    for (var i = 0; i < numberOfFireworks; ++i) {
        var x = bmgl.Math.randomBetween(xMin, xMax);
        var y = bmgl.Math.randomBetween(yMin, yMax);
        var z = bmgl.Math.randomBetween(zMin, zMax);
        var offset = new bmgl.Cartesian3(x, y, z);
        var color = bmgl.Color.fromRandom(
            colorOptions[i % colorOptions.length]
        );

        var bursts = [];
        for (var j = 0; j < 3; ++j) {
            bursts.push(
                new bmgl.ParticleBurst({
                    time: bmgl.Math.nextRandomNumber() * lifetime,
                    minimum: burstSize,
                    maximum: burstSize,
                })
            );
        }

        createFirework(offset, color, bursts);
    }

    var camera = viewer.scene.camera;
    var cameraOffset = new bmgl.Cartesian3(-300.0, 0.0, 0.0);
    camera.lookAtTransform(modelMatrix, cameraOffset);
    camera.lookAtTransform(bmgl.Matrix4.IDENTITY);

    var toFireworks = bmgl.Cartesian3.subtract(
        emitterInitialLocation,
        cameraOffset,
        new bmgl.Cartesian3()
    );
    bmgl.Cartesian3.normalize(toFireworks, toFireworks);
    var angle =
        bmgl.Math.PI_OVER_TWO -
        Math.acos(
            bmgl.Cartesian3.dot(toFireworks, bmgl.Cartesian3.UNIT_Z)
        );
    camera.lookUp(angle);

</script>

</html>                                                                                                                                                                                            
主站蜘蛛池模板: 小舞丝袜调教喷水沦为肉奴 | 国产精品拍拍拍福利在线观看 | 日本 视频 在线 | 日韩不卡一区二区三区 | 色cccwww| 图片亚洲va欧美va国产综合 | 免费lulu网站 | 果冻传媒在线播放观看w | 国产成人福利免费观看 | 欧美日韩一区不卡 | 久久亚洲国产成人影院 | 丝瓜视频黄色在线观看 | 亚州笫一色惰网站 | 好湿好紧太硬了我太爽了网站 | 欧美s级人做人爱c视频 | 免费看60分钟大片视频播放 | 果冻传媒天美传媒网址入口 | 国产精品制服丝袜白丝www | 毛片免费观看 | 楚乔传第二部免费播放电视连续剧 | 2019天天干天天操 | 亚洲小视频 | 无耻三级在线观看 | 啪啪无尽3d动漫漫画免费网站 | 国产免费资源高清小视频在线观看 | 免费国产在线视频 | 亚洲AV无码国产精品午夜久久 | 精品亚洲综合久久中文字幕 | 91亚洲视频在线观看 | 国产一区二区不卡 | 鸭子玩富婆流白浆视频 | 性美国人xxxxx18| 亚洲成a人不卡在线观看 | 精品国产美女福利在线 | 黄漫在线播放 | 天堂网在线网站成人午夜网站 | 亚洲精品一二区 | 国产高清ujzzujzz | 洗濯屋H纯肉动漫在线观看 武侠艳妇屈辱的张开双腿 午夜在线观看免费观看 视频 | 色综合久久98天天综合 | 97影院3|