• Cesium Vue(三)— 相机配置


    1. 坐标系转换

    1.1 cesium使用到的坐标系

    1. 屏幕坐标系,二维的笛卡尔坐标系,API => Cartesian2
    2. 地理空间坐标系,WGS-84坐标系, API => Cartographic(经度,维度,高度)
    3. 三维笛卡尔空间直角坐标系,API => Cartesian3

    1.2 坐标转换具体实现

    • 角度与弧度的转换
    var radians=Cesium.Math.toRadians(90);
    console.log("radians ==> "+radians);
    
    • 1
    • 2
    • 弧度转角度
    var degrees=Cesium.Math.toDegrees(2*Math.PI);
    console.log("degrees ==> "+degrees);
    
    • 1
    • 2
    • 将经纬度转成笛卡尔坐标系
    var cartesian3=Cesium.Cartesian3.fromDegrees(
      89.5,//经度
      20.4,//纬度
      100//高度
    );
    console.log("cartesian3 ==> "+cartesian3);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 将笛卡尔坐标系转换为经纬度
    var cartographic=Cesium.Cartographic.fromCartesian(cartesian3);
    console.log("cartographic ==> "+cartographic);
    //得到结果弧度,转成角度
    var longitude=Cesium.Math.toDegrees(cartographic.longitude);
    var latitude=Cesium.Math.toDegrees(cartographic.latitude);
    console.log("LonLat ==> "+longitude+","+latitude);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    2. 设置相机的位置和视角

    • 设置相机位置和视角
     // 设置相机视角瞬间到达指定位置,角度
      // (116.393428, 39.90923)生成position是天安门的位置
      var position = Cesium.Cartesian3.fromDegrees(116.393428, 39.90923, 100);
      viewer.camera.setView({
        // 指定相机位置
        destination: position,
        // 指定相机视角
        orientation: {
          // 指定相机的朝向,偏航角,相当于 X 角
          heading: Cesium.Math.toRadians(0),
          // 指定相机的俯仰角,0度是竖直向上,-90度是向下  相当于 y 角
          pitch: Cesium.Math.toRadians(-20),
          // 指定相机的滚转角,翻滚角   相当于 z 角
          roll: 0,
        },
      });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述

    • 设置带相机动画的位置和视角
    // flyto,让相机飞往某个地方
    viewer.camera.flyTo({
        destination: position,
        orientation: {
          heading: Cesium.Math.toRadians(0),
          pitch: Cesium.Math.toRadians(-20),
          roll: 0,
        },
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3. 使用键盘控制相机的位置和视角

    // 通过按键移动相机
      document.addEventListener("keydown", (e) => {
        // console.log(e);
        // 获取相机离地面的高度
        var height = viewer.camera.positionCartographic.height;
        var moveRate = height / 100;
        if (e.key == "w") {
          // 设置相机向前移动
          viewer.camera.moveForward(moveRate);
        } else if (e.key == "s") {
          // 设置相机向后移动
          viewer.camera.moveBackward(moveRate);
        } else if (e.key == "a") {
          // 设置相机向左移动
          viewer.camera.moveLeft(moveRate);
        } else if (e.key == "d") {
          // 设置相机向右移动
          viewer.camera.moveRight(moveRate);
        } else if (e.key == "q") {
          // 设置相机向左旋转相机
          viewer.camera.lookLeft(Cesium.Math.toRadians(0.1));
        } else if (e.key == "e") {
          // 设置相机向右旋转相机
          viewer.camera.lookRight(Cesium.Math.toRadians(0.1));
        } else if (e.key == "r") {
          // 设置相机向上旋转相机
          viewer.camera.lookUp(Cesium.Math.toRadians(0.1));
        } else if (e.key == "f") {
          // 设置相机向下旋转相机
          viewer.camera.lookDown(Cesium.Math.toRadians(0.1));
        } else if (e.key == "g") {
          // 向左逆时针翻滚
          viewer.camera.twistLeft(Cesium.Math.toRadians(0.1));
        } else if (e.key == "h") {
          // 向右顺时针翻滚
          viewer.camera.twistRight(Cesium.Math.toRadians(0.1));
        }
      });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
  • 相关阅读:
    Telnet连接
    微信小程序分享功能
    阿里云CDN架构接入WAF应用防火墙案例实践
    java的实体类对象POJO
    C++初阶(vector容器+模拟实现)
    【Linux】线程控制
    LabVIEW显示Unicode字符
    3516DV300 推流
    二维码智慧门牌管理系统升级解决方案:查询功能大提升,让地址查找变得轻松便捷!
    加拿大便携式火炉ASTM F3363-19(适用于燃烧液体或凝胶燃料的便携式无排气口装置的标准规范)标准解答
  • 原文地址:https://blog.csdn.net/qq_40120946/article/details/133864791