国产久_亚欧精品一区_久久亚洲美女_99精品在线观看_日韩成人三级_久久精品久久久久

顯示源代碼
飛機的尾部火焰
 開發文檔
            <!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>
    <script src='./templates/bmgl-header.js'></script>
</head>
<style>
    * {
        margin: 0;
        padding: 0;
    }

    #container {
        position: absolute;
        top: 0;
        bottom: 0;
        width: 100%;
    }

    #toolbar {
        position: absolute;
    }
</style>

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

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

    var viewer = new bmgl.Viewer("container", {
        shouldAnimate: true,
        mapId: 'bigemap.dc-tian-w-satellite',
    });
    var planePosition = bmgl.Cartesian3.fromDegrees(
        -75.59777,
        40.03883,
        800.0
    );
    var particlesOffset = new bmgl.Cartesian3(
        -8.950115473940969,
        34.852766731753945,
        -30.235411095432937
    );
    var cameraLocation = bmgl.Cartesian3.add(
        planePosition,
        particlesOffset,
        new bmgl.Cartesian3()
    );
    var resetCamera = function () {
        viewer.camera.lookAt(
            cameraLocation,
            new bmgl.Cartesian3(-450, -300, 200)
        );
    };
    resetCamera();

    // Draw particle image to a canvas
    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;
    }

    // Add plane to scene
    var hpr = new bmgl.HeadingPitchRoll(
        0.0,
        bmgl.Math.PI_OVER_TWO,
        0.0
    );
    var orientation = bmgl.Transforms.headingPitchRollQuaternion(
        planePosition,
        hpr
    );
    var entity = viewer.entities.add({
        model: {
            uri: "/templates/glb/bmgl_Air.glb",
            scale: 3.5,
        },
        position: planePosition,
        orientation: orientation,
    });

    // creating particles model matrix
    var translationOffset = bmgl.Matrix4.fromTranslation(
        particlesOffset,
        new bmgl.Matrix4()
    );
    var translationOfPlane = bmgl.Matrix4.fromTranslation(
        planePosition,
        new bmgl.Matrix4()
    );
    var particlesModelMatrix = bmgl.Matrix4.multiplyTransformation(
        translationOfPlane,
        translationOffset,
        new bmgl.Matrix4()
    );

    // creating the particle systems
    var rocketOptions = {
        numberOfSystems: 50.0,
        iterationOffset: 0.1,
        cartographicStep: 0.000001,
        baseRadius: 0.0005,

        colorOptions: [
            {
                minimumRed: 1.0,
                green: 0.5,
                minimumBlue: 0.05,
                alpha: 1.0,
            },
            {
                red: 0.9,
                minimumGreen: 0.6,
                minimumBlue: 0.01,
                alpha: 1.0,
            },
            {
                red: 0.8,
                green: 0.05,
                minimumBlue: 0.09,
                alpha: 1.0,
            },
            {
                minimumRed: 1,
                minimumGreen: 0.05,
                blue: 0.09,
                alpha: 1.0,
            },
        ],
    };

    var cometOptions = {
        numberOfSystems: 100.0,
        iterationOffset: 0.003,
        cartographicStep: 0.0000001,
        baseRadius: 0.0005,

        colorOptions: [
            {
                red: 0.6,
                green: 0.6,
                blue: 0.6,
                alpha: 1.0,
            },
            {
                red: 0.6,
                green: 0.6,
                blue: 0.9,
                alpha: 0.9,
            },
            {
                red: 0.5,
                green: 0.5,
                blue: 0.7,
                alpha: 0.5,
            },
        ],
    };

    var scratchCartesian3 = new bmgl.Cartesian3();
    var scratchCartographic = new bmgl.Cartographic();
    var forceFunction = function (options, iteration) {
        return function (particle, dt) {
            dt = bmgl.Math.clamp(dt, 0.0, 0.05);

            scratchCartesian3 = bmgl.Cartesian3.normalize(
                particle.position,
                new bmgl.Cartesian3()
            );
            scratchCartesian3 = bmgl.Cartesian3.multiplyByScalar(
                scratchCartesian3,
                -40.0 * dt,
                scratchCartesian3
            );

            scratchCartesian3 = bmgl.Cartesian3.add(
                particle.position,
                scratchCartesian3,
                scratchCartesian3
            );

            scratchCartographic = bmgl.Cartographic.fromCartesian(
                scratchCartesian3,
                bmgl.Ellipsoid.WGS84,
                scratchCartographic
            );

            var angle =
                (bmgl.Math.PI * 2.0 * iteration) / options.numberOfSystems;
            iteration += options.iterationOffset;
            scratchCartographic.longitude +=
                Math.cos(angle) * options.cartographicStep * 30.0 * dt;
            scratchCartographic.latitude +=
                Math.sin(angle) * options.cartographicStep * 30.0 * dt;

            particle.position = bmgl.Cartographic.toCartesian(
                scratchCartographic
            );
        };
    };

    var matrix4Scratch = new bmgl.Matrix4();
    var scratchAngleForOffset = 0.0;
    var scratchOffset = new bmgl.Cartesian3();
    var imageSize = new bmgl.Cartesian2(15.0, 15.0);
    function createParticleSystems(options, systemsArray) {
        var length = options.numberOfSystems;
        for (var i = 0; i < length; ++i) {
            scratchAngleForOffset =
                (Math.PI * 2.0 * i) / options.numberOfSystems;
            scratchOffset.x +=
                options.baseRadius * Math.cos(scratchAngleForOffset);
            scratchOffset.y +=
                options.baseRadius * Math.sin(scratchAngleForOffset);

            var emitterModelMatrix = bmgl.Matrix4.fromTranslation(
                scratchOffset,
                matrix4Scratch
            );
            var color = bmgl.Color.fromRandom(
                options.colorOptions[i % options.colorOptions.length]
            );
            var force = forceFunction(options, i);

            var item = viewer.scene.primitives.add(
                new bmgl.ParticleSystem({
                    image: getImage(),
                    startColor: color,
                    endColor: color.withAlpha(0.0),
                    particleLife: 3.5,
                    speed: 0.00005,
                    imageSize: imageSize,
                    emissionRate: 30.0,
                    emitter: new bmgl.CircleEmitter(0.1),
                    lifetime: 0.1,
                    updateCallback: force,
                    modelMatrix: particlesModelMatrix,
                    emitterModelMatrix: emitterModelMatrix,
                })
            );
            systemsArray.push(item);
        }
    }

    var rocketSystems = [];
    var cometSystems = [];
    createParticleSystems(rocketOptions, rocketSystems);
    createParticleSystems(cometOptions, cometSystems);

    // toolbar elements
    function showAll(systemsArray, show) {
        var length = systemsArray.length;
        for (var i = 0; i < length; ++i) {
            systemsArray[i].show = show;
        }
    }

    var options = [
        {
            text: "Comet Tail",
            onselect: function () {
                showAll(rocketSystems, false);
                showAll(cometSystems, true);
                resetCamera();
            },
        },
        {
            text: "Rocket Thruster",
            onselect: function () {
                showAll(cometSystems, false);
                showAll(rocketSystems, true);
                resetCamera();
            },
        },
    ];
    Sandcastle.addToolbarMenu(options);

</script>

</html>                                                                                                                                                        
国产久_亚欧精品一区_久久亚洲美女_99精品在线观看_日韩成人三级_久久精品久久久久
<code id="kseui"><acronym id="kseui"></acronym></code>
  • <abbr id="kseui"><tbody id="kseui"></tbody></abbr>
  • <button id="kseui"></button>
  • 亚洲毛片视频| 久久精品人成| 午夜精品999| 国产一区喷水| 亚洲一区影院| 亚洲青色在线| 国内精品一区二区| 天堂资源在线亚洲资源| 国产一区视频观看| 91沈先生播放一区二区| 国产精品人人爽人人做我的可爱| 视频在线观看成人| 欧美一区1区三区3区公司| 国产精品麻豆免费版| 午夜一区不卡| 亚洲欧美久久久| 国产亚洲精品v| 国语对白精品一区二区| 欧美激情自拍| 好吊日精品视频| 制服丝袜综合日韩欧美| 在线观看日韩片| 一区二区精品免费视频| 在线观看欧美一区| 欧美精品七区| 激情欧美一区| 中文久久精品| 免费国产自线拍一欧美视频| 国产农村妇女精品一区二区| 久久av最新网址| 99久久综合狠狠综合久久止| 久久中文字幕一区二区三区| 俄罗斯精品一区二区| 97欧洲一区二区精品免费| 99高清视频有精品视频| 国产精品亚洲不卡a| 精品免费日产一区一区三区免费| 国产精品美女黄网| 免费一区二区三区| 在线观看欧美亚洲| 精品在线不卡| 亚洲不卡1区| 欧美三级黄美女| 亚洲欧美伊人| 老鸭窝毛片一区二区三区| 亚洲欧美一区二区原创| 国产麻豆日韩| 亚洲一区欧美二区| 欧美日韩午夜| 日韩久久久久久久| 国产精品麻豆免费版| 亚洲一区区二区| 极品尤物久久久av免费看| 欧美午夜精品久久久久免费视 | 午夜精品一区二区三区在线观看| 久久亚洲精选| 伊人久久大香线蕉综合热线 | 欧美欧美一区二区| 97视频资源在线观看| 99亚洲一区二区| 国产字幕视频一区二区| 蜜桃精品久久久久久久免费影院| 国产精品a久久久久| 日韩影视精品| 欧美日韩免费高清| 国产一区二区三区无遮挡| 久久中文在线| 久久亚洲视频| 裸体一区二区| 欧美专区18| 亚洲欧美日韩在线观看a三区 | 好看的日韩精品| 国产精品国产精品国产专区不卡| 销魂美女一区二区三区视频在线| 在线日本高清免费不卡| 国精品一区二区三区| 国内一区二区三区| 亚洲一级高清| 亚洲美女少妇无套啪啪呻吟| 好吊色欧美一区二区三区四区| 欧美日韩国产欧| 欧美在线视频二区| 欧美精品国产一区二区| 国产专区一区| aa亚洲婷婷| 欧美亚洲三区| 久久一区二区三区四区五区 | 国产精品日韩一区二区免费视频| 成人在线观看91| 精品国产乱码久久久久久郑州公司 | 91在线看网站| 国产午夜精品在线| 精品国产乱码久久久久久蜜柚 | 国产精品污www一区二区三区| 成人免费在线一区二区三区| 国产成人一区二区三区免费看| 国产精品日韩一区二区| 欧美成人一区二区在线| 亚洲精品视频一二三| 国产精品a久久久久| 99国产精品99久久久久久粉嫩| 香蕉成人久久| 国产精品免费在线| 日本一区视频在线观看免费| 神马一区二区影院| 1024日韩| 久久综合九色综合网站| 欧美日韩国产三区| 欧美激情在线| 久久久夜夜夜| 欧美久久久久久一卡四| 欧美激情在线| 美女久久一区| 欧美专区一二三| 黄色日韩在线| 不卡视频一区二区三区| 视频一区视频二区视频三区高| 国产一区高清视频| 147欧美人体大胆444| 欧美日韩亚洲免费| 亚洲三级色网| 精品蜜桃传媒| 亚洲性色视频| 国产亚洲欧美一区二区| 影音先锋欧美资源| 97国产超碰| 一区二区不卡在线视频 午夜欧美不卡'| 亚洲国产免费| 久久av免费观看| 亚洲激情亚洲| 亚洲无毛电影| 亚洲精品第一区二区三区| 国产日韩一区二区三区| 日本成人三级| 国产精品亚洲综合色区韩国| 欧美日韩一区二区视频在线 | 伊人久久大香线蕉成人综合网| 香蕉亚洲视频| 牛夜精品久久久久久久99黑人| 久久久xxx| 国内自拍视频一区二区三区| 精品欧美日韩| 国产日韩一区欧美| 一区二区三区久久网| 成人av免费电影| 亚洲国产精品www| 日本一区二区三区在线视频 | av一区二区三区在线观看| 午夜激情一区| 久久久久久久免费| 久久精品一二三区| 国产综合自拍| 亚洲第一导航| 国产综合av一区二区三区| 中国成人亚色综合网站| 亚洲欧洲免费无码| 国内精品视频免费| 久久久久国产精品一区二区| 欧美日韩高清在线一区| 日本不卡二区| 国产私拍一区| 91在线观看网站| 国产偷自视频区视频一区二区| 一区二区视频在线播放| 久久超碰亚洲| 懂色一区二区三区av片| 亚洲一区精彩视频| 亚洲久久视频| 青青成人在线| 国产亚洲欧美一区二区三区| 欧美日韩国产不卡在线看| 国产日韩欧美高清免费| 欧美色图亚洲自拍| 欧美亚洲自偷自偷| 一区二区国产日产| 国产精品免费一区二区三区在线观看| 视频一区二区在线| 99视频免费观看| 欧美日韩一区二区国产| 国产伦视频一区二区三区| 黄色av成人| 水蜜桃亚洲精品| 国产98在线|日韩| 91久久久久| 水蜜桃一区二区三区| 操一操视频一区| 亚洲精品美女| 亚洲午夜精品久久久久久浪潮| 999精品在线观看| 日韩视频三区| 欧美大片一区| 日本一区二区精品视频| 久久久久久亚洲精品杨幂换脸| 欧美日韩mv| 亚洲v欧美v另类v综合v日韩v| 俄罗斯精品一区二区| 亚洲综合精品| 国产欧美日本在线| 欧美日本免费| 欧美久久久久|