Cesium怎么实现简单的箭头效果
本篇内容介绍了"Cesium怎么实现简单的箭头效果"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
/**
* 计算a点和b点的角度(偏转角)
* @param lng_a a点经度
* @param lat_a a点维度
* @param lng_b b点经度
* @param lat_b b点维度
* @returns 角度
*/
function courseAngle(lng_a, lat_a, lng_b, lat_b) {
//以a点为原点建立局部坐标系(东方向为x轴,北方向为y轴,垂直于地面为z轴),得到一个局部坐标到世界坐标转换的变换矩阵
var localToWorld_Matrix =
Cesium.Transforms.eastNorthUpToFixedFrame(new Cesium.Cartesian3.fromDegrees(lng_a, lat_a));
//求世界坐标到局部坐标的变换矩阵
var worldToLocal_Matrix =
Cesium.Matrix4.inverse(localToWorld_Matrix, new Cesium.Matrix4());
//a点在局部坐标的位置,其实就是局部坐标原点
var localPosition_A =
Cesium.Matrix4.multiplyByPoint(worldToLocal_Matrix,
new Cesium.Cartesian3.fromDegrees(lng_a, lat_a),
new Cesium.Cartesian3());
//B点在以A点为原点的局部的坐标位置
var localPosition_B =
Cesium.Matrix4.multiplyByPoint(worldToLocal_Matrix,
new Cesium.Cartesian3.fromDegrees(lng_b, lat_b),
new Cesium.Cartesian3());
//弧度
var angle =
Math.atan2((localPosition_B.y-localPosition_A.y),
(localPosition_B.x-localPosition_A.x))
//角度
var theta = angle*(180/Math.PI);
if (theta < 0) {
theta = theta + 360;
}
return theta;
}
function ComputeLngLat(_ca_coord, local_coord) {
//同样是建立局部坐标系
const _localToWorld_Matrix = Cesium.Transforms.eastNorthUpToFixedFrame(_ca_coord);
//根据偏移的三个方向距离,计算新的坐标点
const _new_ca = Cesium.Matrix4.multiplyByPoint(_localToWorld_Ma trix, Cesium.Cartesian3.fromElements(local_coord[1], local_coord[0], local_coord[2]), new Cesium.Cartesian3());
//返回不同的坐标类型,自由控制
return _new_ca;
return Cesium.Cartographic.fromCartesian(_new_ca);
}
"Cesium怎么实现简单的箭头效果"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!