您好,登錄后才能下訂單哦!
本篇內容介紹了“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怎么實現簡單的箭頭效果”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。