cesium 学习(七) HeadingPitchRoll

匿名 (未验证) 提交于 2019-12-02 23:52:01

cesium 学习() HeadingPitchRoll

一、前言

headingpitchrollCesiumHeadingPitchRoll

二、HeadingPitchRoll

  HeadingPitchRollEuler

EuleryawpitchrollYawHeadingCesiumHeadingHeading

2.1 Heading

ψHeading的值,是控制机体头的朝向位置,这个角的改变,也就是左右方向的改变。

2.2 Pitch

  俯仰角的值,从上图来看是控制机体上下方向的改变,值为正是顺时针旋转;为负则相反。当然,这个是根据坐标轴来旋转的,要是进行了翻滚就不一定是上下旋转了;如果还将头朝向的方向看作前方,其实还是可以看作上下旋转的。

2.3 Roll

360

三、HeadingPitchRange

HeadingPitchRangeHeadingPitchRollHeadiingPitchRange

3.1 Range

  Rangecesium()

  其实也就是锁定了相机距离目标的距离,这个在视角跟随中常用,跟随的时候这个半径值也是可变的。

四、模型旋转变换

  介绍了基础知识,然后可以应用一下,做了一个简单页面,控制模型的三个方向的旋转。

  核心代码如下:

 1 this.updateRotation = function (options) {  2     if (!Cesium.defined(model)) return;  3     var options = options ? options : {};  4     //三轴旋转  5     var xAxis = options.xAxis ? angletoradian(options.xAxis) : 0;  6     var yAxis = options.yAxis ? angletoradian(options.yAxis) : 0;  7     var zAxis = options.zAxis ? angletoradian(options.zAxis) : 0;  8   9     hpRoll.heading = zAxis; 10     hpRoll.roll = xAxis; 11     hpRoll.pitch = yAxis; 12     model.rotation = hpRoll; 13     postionVector = Cesium.Cartesian3.multiplyByScalar(Cesium.Cartesian3.UNIT_X, 0, new Cesium.Cartesian3()); 14     position = Cesium.Matrix4.multiplyByPoint(model.modelMatrix, postionVector, position); 15     Cesium.Transforms.headingPitchRollToFixedFrame(position, hpRoll, Cesium.Ellipsoid.WGS84, fixedFrameTransform, model.modelMatrix); 16 };

 

五、总结

HeadingPitchRoll

在空间变化中特别是三维空间,欧拉角的应用是非常广泛的,这里只是使用了Cesium.Transforms.headingPitchRollToFixedFrame来实现模型的旋转变换,其实还有位置移动、缩放比例等的变换,还可以增加颜色的改变,这里就不再多说了,慢慢来。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!