Cesium使用经验——Cesium中根据线段两点经纬度坐标获取线段的偏航角heading并以计算得到的偏航角定位到线段
分类:计算机 | 三维开发 | WebGL | Cesium | 综合 1264
更新:2021-09-15 14:42:38编辑
1 根据线段两点经纬度坐标获取线段的偏航角
//将WGS84经纬度坐标转换为笛卡尔空间直角坐标系坐标
var pointA=new Cesium.Cartesian3.fromDegrees(116.93698572, 30.70471922);
var pointB=new Cesium.Cartesian3.fromDegrees(116.93732431, 30.70417780);
var headDegree=Cesium.Math.toDegrees(getHeading(pointA,pointB));
function getHeading(pointA, pointB) {
//建立以点A为原点,X轴为east,Y轴为north,Z轴朝上的坐标系
var transform = Cesium.Transforms.eastNorthUpToFixedFrame(pointA);
//向量AB
var positionvector = Cesium.Cartesian3.subtract(pointB, pointA, new Cesium.Cartesian3());
//因transform是将A为原点的eastNorthUp坐标系中的点转换到世界坐标系的矩阵
//AB为世界坐标中的向量
//因此将AB向量转换为A原点坐标系中的向量,需乘以transform的逆矩阵。
var vector = Cesium.Matrix4.multiplyByPointAsVector(Cesium.Matrix4.inverse(transform, new Cesium.Matrix4()), positionvector, new Cesium.Cartesian3());
//归一化
var direction = Cesium.Cartesian3.normalize(vector, new Cesium.Cartesian3());
//heading
var heading = Math.atan2(direction.y, direction.x) - Cesium.Math.PI_OVER_TWO;
return Cesium.Math.TWO_PI - Cesium.Math.zeroToTwoPi(heading);
}
2 以计算得到的偏航角定位到线段
var postion= new this.Cesium.Cartesian3.fromDegrees(lon, lat, alt+50);
var boundingSphere = new Cesium.BoundingSphere(postion, 0.0);
this.viewer.camera.flyToBoundingSphere(boundingSphere, {
duration: 3, //设置飞行持续时间,控制定位速度,单位是秒
maximumHeight: undefined,
complete: function () {
},
cancel: function () {
console.log('定位取消!');
},
offset: {
heading: Cesium.Math.toRadians(151.6139), //偏航角
pitch: Cesium.Math.toRadians(-15), //俯仰角
range: 150 //距目标点距离
},
});
猿导航
阅读排行榜
- 1vue和el-table使用经验-如何刷新表格数据10952
- 2three.js加载3D瓦片和3dtiles数据生成交互式地图的开源项目9502
- 3Microsoft Visual C++ Redistributable是什么,有什么作用?7280
- 4mybatis使用经验——mybatis-spring-boot-starter和mybatis的版本对应关系表(持续更新~)5846
- 5uni-app使用经验—vue页面和html页面如何互相调用接口并传参5485
- 6Intellij IDEA下的版本控制VCS的启用与关闭4907
- 7Spring学习经验—@ResponseBody注解的使用说明4898
- 8Druid异常解决经验—java.sql.SQLException url not set4515
- 9如何用批处理命令(bat脚本)启动和停止windows服务4287
- 10nuxt.js项目中如何添加和使用全局变量4159
- 11解决SpringBoot使用maven下载不了jar包的问题3501
- 12linux中解压tar.gz文件报错“gzip: stdin: invalid compressed data--format violated”3398
- 13nuxtjs asyncData使用经验—如何发起多个axios请求并携带参数3248
- 14在Nuxt.js项目的head中引用外部js文件3089
- 15在NVIDIA控制面板设置参数时提示“拒绝访问 无法应用选定的设置到您的系统”的解决方法之一3068