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.

Name Type Default Description
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);
    });

原文地址:https://www.cnblogs.com/xiaoguniang0204/p/11742106.html

时间: 2024-10-12 17:16:14

Cesium的类-Camera的相关文章

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

Cesium入门12 - Camera Modes - 相机模式 Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 为了展现我们的无人机飞行,让我们用相机模式进行实验.我们将保持简单的两个基本的相机模式,用户可以切换之间. Free Mode : 默认相机控制. Drone Mode : 让相机跟随无人机通过飞行在一个固定的距离. 自由模式不需要代码,因为它使用默认控件.至于无人机跟随模式,我们可以使用摄像机的

cesium结合geoserver利用WFS服务实现图层编辑(附源码下载)

前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内容概览 1.cesium结合geoserver利用WFS服务实现图层编辑功能2.源代码demo下载 效果图如下: 本篇主要是在上一篇cesium结合geoserver利用WFS服务实现图层新增(附源码下载)基础上实现的,cesium通过调用geoserver发布的地图服务WFS来达到图层编辑记录的目

Cesium原理篇:6 Renderer模块(2: Texture)

Texture也是WebGL中重要的概念,使用起来也很简单.但有句话叫大道至简,如果真的想要用好纹理,里面的水其实也是很深的.下面我们来一探究竟. 下面是WebGL中创建一个纹理的最简过程: var canvas = document.getElementById("canvas"); var gl = canvas.getContext("webgl"); // 创建纹理句柄 var texture = gl.createTexture(); // 填充纹理内容

Camera的使用(一)

本节主要记录在Android中不使用默认的拍照应用,而是自启摄像头,并不断刷新屏幕实现预览的功能. AndroidManifest.xml: <activity android:name=".CameraActivity" android:screenOrientation="portrait"/> CameraActivity.java: public class CameraActivity extends Activity implements m

Cesium加载影像

注意:使用自定义数据源时,Cesium.Viewer类参数必须设置为 baseLayerPicker:false A. 使用天地图数据源 //天地图var provider=new Cesium.WebMapTileServiceImageryProvider({ url : 'http://t0.tianditu.com/img_w/wmts?', layer:'img', style:'default', format:'tile', tileMatrixSetID:'w', credit:

Camera从应用到CameraService分析

文章根据这个整理而成.http://blog.chinaunix.net/uid-25314474-id-2938255.html.找到最后才发现上面介绍的Camera竟然是基于Android1.0写的文章,顿时泪奔,不过也能从中学到知识.可以通过    http://androidxref.com/  在线查看源码进行学习. 我6月4号写了大概,现在把native的binder看了一遍,再来缕下camera代码.  很多知识是从安卓框架揭秘看的. 写在前面的话android_hardware_

Android 上Camera分析

http://blog.csdn.net/u010503912/article/details/52315721 一.Camera构架分析Android 的Camera包含取景(preview)和拍摄照片(take picture)的功能.目前Android发布版的Camera程序虽然功能比较简单,但是其程序的架构分成客户端和服务器两个部分,它们建立在 Android的进程间通讯Binder的结构上.Android中Camera模块同样遵循Andorid的框架,如下图所示 Camera Arch

zxing源码分析(一)camera部分

首先,我们先把zxing的源代码给下载下来,这个网上有很多,我下载的是2.3的,不得不说这个谷歌提供的包包含的功能还是很全面的. 我把下载的包解压后,找到android文件夹,导入到ecplise中,我们来分析一下,里面的架构 一.book,如果查询的结果是图书信息,用户可以选择查询该书的进一步详细信息,该包,包含了搜索与展示书籍的相关类. 二.camera/camera.open 这个一个关于摄像头的类,核心类是CameraManager 三.clipboard 剪贴板 四.encode:编码

libgdx学习之Camera

Camera定义 游戏中,Camera用来向用户展示场景,Camera就像一个摄像机,摄像机里面的景象就是Camera的展示范围,如下图所示: 在3D空间中Camera被定义为一个位置,有一个单位“方向”向量和一个“向上”的单位向量组成,方向和向上向量告诉OpenGL 当前Camera如何定向. 视景体 Camera的另一个重要特性是视觉平截体(View Frustrum),在上面的图片中可以看到一个被砍去顶尖的角锥体,这就是一个视觉平截体,所以视觉平截体内部的东西都可以在屏幕上看到,视觉平截体