Cesium的类-Camera

Posted xiaoguniang0204

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cesium的类-Camera相关的知识,希望对你有一定的参考价值。

很多知识没办法完全按照类来,在一个应用功能的基础上,梳理Cesium的Api的类,不断学习更新
一、Cesium的视角坐标系统scene.camera

(一)坐标系统:
Cartesian3:三维笛卡尔(直角)坐标系,地心为原点的xyz,例x=****m,y=****m,z==****m
Cartographic:经纬度及wgs84的高程来定位,例
HeadingPitchRoll:在ENU(East-North-Up)坐标系中,相对坐标轴的(直接用来定位很少,一般用于camera相机位置设置,后面介绍)

Quaternion :(没懂)使用四维坐标描述的三维旋转。

每一种坐标系统,Cesium均给出了介绍,主要看参数及单位,如

new Cesium.Cartographic(longitude, latitude, height)

A position defined by longitude, latitude, and height.
NameTypeDefaultDescription
longitude Number 0.0 optional The longitude, in radians.
latitude Number 0.0 optional The latitude, in radians.
height Number 0.0 optional The height, in meters, above the ellipsoid.

 

Cesium提供了各类坐标系统的转换,比如
(二)单位

Cesium.Math给出了各种坐标或者单位的转换,非常强大

#Math.ToRadians(度数) —>弧度

radians,弧度(真的是小学的内容),比如pa3.14,很多都是使用弧度单位,很少使用度数单位,所以一定要转换至弧度,比如heading、pitch、roll

#Math.ToDegrees(弧度)—>角度,比如弧度1,角度约57度

单位是非常重要的,否则数据是完全错误!!!!

(三)heading、pitch、roll

首先单位是弧度单位!所以如果设置什么90度,0度是无效的,必须Cesium.Math.toRadians(90)
网上介绍太花了,说的最直接的:

heading为0度对应的radians,即相机没有左右摆头

pitch为-90度对应的radians,即相机是正俯视s

roll一般为0,用的很少

有一种实用方法得到这三个值,将viewer‘手动调整到想要的位置,打开f12,输入viewer.camera.heading/pitch/roll就能得到此时的三值

 (四)改变homeButton的初始位置实例

//设置想要的位置
var
homeCameraView={destination:new Cesium.Cartesian3.fromDegrees(111,29,1000000), orientation:{ heading:0, pitch:-1.5707963267948966, roll:0 }}; homeCameraView.duration = 10.0;//过程10秒,单位秒 homeCameraView.maximumHeight = 1000000;//飞行的最大高度,设置很高时就会先很高然后下降 homeCameraView.pitchAdjustHeight = 1000000;//如果飞的太高则自动纠正,保障地球在视角内 //api介绍Transform matrix representing the reference frame the camera will be in when the flight is completed. homeCameraView.endTransform = Cesium.Matrix4.IDENTITY; //改变homeButton的初始位置 viewer.homeButton.viewModel.command.beforeExecute.addEventListener(function (e) { e.cancel = true; viewer.scene.camera.flyTo(homeCameraView); });

 

以上是关于Cesium的类-Camera的主要内容,如果未能解决你的问题,请参考以下文章

cesium 设置和移动camera相机(工具篇)

Cesium学习笔记Camera

Cesium入门12 - Camera Modes - 相机模式

Cesium 地球旋转(viewer.scene.camera.rotate())以及停止旋转

Cesium常用代码总结

Cesium:四种拾取pick