Cesium座標系統梳理(逐漸積累)

2022-08-17 15:30:15 字數 3336 閱讀 5890

1.cesium的笛卡爾三維座標 new cesium.cartesian3(x,y,z)

2.經緯度座標 new cesium.cartographic(longitude,latitude,height)

經緯度除了特殊說明,一般都是弧度radians單位,也就是π。

弧度與角度的轉換方法:cesium.cartographic.todegree();cesium.cartogrhpic.fromdegree(),同樣cesium.math.todegree(radians)/toradians(degree)

3.經緯度與cartesian3座標之間

cesium.cartographic.fromcartesian(cartesian3,ellipsoid,resullt) 不同球體是不一樣的,這就是球體與投影

cesium.cartographic.fromdegrees(longitude,latitude,height,result) 這裡是不需要球體的

cesium.cartographic.tocartesian(cartographic, ellipsoid, result

)4.矩陣

martix4,4*4的矩陣 矩陣轉換,將模型的x轉至真實空間的x

最常用的方法cesium.transfrom.eastnorthuptofixedframe() 以乙個cartesian3點為中心,建成乙個martix4矩陣,轉換。

其實質就是下面這個線性幾何公式

從字面上意思很明確:座標轉換、旋轉、大小控制

#cartesian3

static members:

packedlength---將x,y,z放進array

unit_x/y/z---(1,0,0)/(0,1,0)/(0,0,1)

equals(right) → boolean

cesium中一些常用api

cesium.cartesian3.abs(cartesian, result) → cartesian3

cesium.cartesian3.add(left, right, result) → cartesian3

cesium.cartesian3.anglebetween(left, right) 返回兩個笛卡爾座標之間的角度,left/right 均為乙個cartesin3座標,除非特殊說明單位都是弧度

cesium.cartesian3.cross(left, right, result) → cartesian3

返回兩個向量的向量積

cesium.cartesian3.distance(left, right) → number

返回兩個座標的距離

cesium.cartesian3.fromdegrees(longitude, latitude, height, ellipsoid, result) → cartesian3

cesium.cartesian3.fromdegreesarray(coordinates, ellipsoid, result) → array.

>

cesium.cartesian3.fromelements(x, y, z, result) → cartesian3

cesium.cartesian3.multiplybyscalar(cartesian, scalar, result) → cartesian3   乘以向量後的結果

cesium.cartesian3.negate(cartesian, result) → cartesian3 方向取反

cesium.cartesian3.normalize(cartesian, result) —單位向量化

cesium.cartesian3.projectvector(a, b, result) → cartesian3

投影 5.cesium通過滑鼠事件獲取座標的方法

建立座標獲取事件:var handler = new cesium.screespaceeventhandler(canvas);

handler.serinputaction(function(movement),cesium.screespaceeventtype.左鍵點選/滑鼠移動等)

&獲取螢幕座標  movement.position  螢幕座標的原點是螢幕左上角,方向x向左正,y向下正

&世界座標(個人理解為 理論座標 )

viewer.scene.pickellipsoid(movement.position,ellipsoind,result)  點選時候,相機的視角線與橢球體相交處的cartesian3座標;

注意球體預設為wgs84,一般應設定為當前球體viewer.scene.globe.ellipsoid

獲取的即為視線與理論球體表面相交處的座標,也可以理解為高程為0,因為真實的地表一般都是高程大於0,所以也就是物體的深部

&場景座標(帶地形等緩衝的座標)

viewer.scene.pickposition(movement.position)  返回從深度緩衝區和視窗位置重建的笛卡爾位置,所以這裡是沒有球體引數的

&地表(地形)座標

var ray = viewer.camera.getpickray(movement.position) 獲取camera與點選點之間的視線射線

var position = viewer.scene.golbe.pick(ray,viewer.scene.) 獲取視線ray與golbe相交處的座標

注意:這裡是globe,則代表了主體為為ellipsoid載入地形高程後的,這樣才能區別理論座標,所獲取資料為考慮高程後的空間直角座標系

備註:globe翻譯過來是地球的意思,而ellipsoid為橢球體,在計算純球體理論的時候用的是後者,當載入地形之類實際實物後用的是前者

//
獲取空間座標

positon為movement.position/endposition視滑鼠事件

type:1為理論座標 3為緩衝座標 4為地表座標

_getposition(position,type)

6.cesium的三種拾取方式

7.matrix4   4x4矩陣

笛卡爾三維座標 至 matrix4:  cesium.transform.eastnorthuptofixedframe(cartesian3)

Cesium 座標轉換

參考 幾個重要的座標物件 1.世界座標 cartesian3 笛卡爾空間直角座標系 new cesium.cartesian3 x,y,z 可以看作,以橢球中心為原點的空間直角座標系中的乙個點的座標。2.經緯度 地理座標系,座標原點在橢球的質心。經度 參考橢球面上某點的大地子午面與本初子午面間的兩面...

cesium學習 cesium中的座標

一 座標展現形式 在cesium中,對於座標數值單位有三種 角度 弧度和座標值 1.角度 角度就是我們所熟悉的經緯度,對於地球的座標建立如下 圖中以本初子午線作為x和z的面,建立了乙個空間座標系。可知在緯度方向上,角1的範圍為 90 90,即南緯90 北緯90 角2的範圍是 180 180,即東經1...

Cesium 座標系轉換

cesium中常用的座標有兩種wgs84地理座標系和笛卡爾空間座標系 世界座標 我們平時常用的以經緯度來指明乙個地點就是用的wgs84座標,笛卡爾空間座標系常用來做一些空間位置變換如平移旋轉縮放等等。二者的聯絡如下圖,笛卡爾空間座標的原點就是橢球的中心.pick 螢幕座標 cartesian 世界座...