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来实现模型的旋转变换,其实还有位置移动、缩放比例等的变换,还可以增加颜色的改变,这里就不再多说了,慢慢来。