Cesium ——Cartesian3、Cartographic坐標(biāo)系(WGS84坐標(biāo)系、笛卡爾坐標(biāo)系)

第二章、認(rèn)識Cesium.js中的坐標(biāo)系

Cesium項目中經(jīng)常涉及到模型加載、定位、預(yù)覽都需要用到坐標(biāo)系,弄明白Cesium中采用的坐標(biāo)系以及各個坐標(biāo)系之間的轉(zhuǎn)換,是做三維GIS場景的前提。

而在Cesium中常用的坐標(biāo)有兩種WGS84地理坐標(biāo)系和笛卡爾空間坐標(biāo)系。


一、WGS84地理坐標(biāo)系

1、 WGS84經(jīng)緯度坐標(biāo)系

就是通俗的地圖地理坐標(biāo)經(jīng)緯度

2、 WGS84弧度坐標(biāo)系(Cartographic)

在數(shù)學(xué)上被稱為球坐標(biāo)系。


image.png
new Cesium.Cartographic(longitude, latitude, height)

以弧度表示在球體中的坐標(biāo)點位

longitude:經(jīng)度
latitude:緯度
height:弧度即角度對應(yīng)弧長是半徑的倍數(shù)【橢球上方的高度(以米為單位)】

返回一個球坐標(biāo)類型


image.png

弧度和角度的轉(zhuǎn)換公式

image.png

角度轉(zhuǎn)弧度 π/180×角度
弧度變角度 180/π×弧度


二、笛卡爾空間坐標(biāo)系

1、平面坐標(biāo)系

平面坐標(biāo)系也就是平面直角坐標(biāo)系,是一個二維笛卡爾坐標(biāo)系

new Cesium.Cartesian2(x, y)
image.png

一般表示canvas屏幕坐標(biāo)位置,平面的點位坐標(biāo)


image.png

2、空間直角坐標(biāo)系

笛卡爾空間坐標(biāo)的原點就是橢球的中心,我們在計算機上進行繪圖時,不方便使用經(jīng)緯度直接進行繪圖,一般會將坐標(biāo)系轉(zhuǎn)換為笛卡爾坐標(biāo)系,使用計算機圖形學(xué)中的知識進行繪圖

new Cesium.Cartesian3 ( x , y , z )
image.png

三、坐標(biāo)系轉(zhuǎn)換

1、經(jīng)緯度坐標(biāo)轉(zhuǎn)弧度

方法一

         // 將弧度轉(zhuǎn)為度的十進制度表示,保留5位小數(shù)
        const lon = Cesium.Math.toDegrees(cartographic.longitude).toFixed(5);
        const lat = Cesium.Math.toDegrees(cartographic.latitude).toFixed(5);
        console.log(`經(jīng)度:${lon}, 緯度:${lat}`);
        // 將經(jīng)緯度轉(zhuǎn)成弧度
        const longitude = Cesium.Math.toRadians(lon).toFixed(5);
        const latitude = Cesium.Math.toRadians(lat).toFixed(5);
        console.log(`經(jīng)弧度:${longitude}, 緯弧度:${latitude}`);
image.png

方法二

 console.log(`經(jīng)度:${lon}, 緯度:${lat}`);
        const cartographic1 = Cesium.Cartographic.fromDegrees(
          parseFloat(lon),
          parseFloat(lat),
          50
        );
        console.log(cartographic1);
        
         console.log(
          `經(jīng)弧度:${cartographic.longitude}, 緯弧度:${cartographic.latitude}`
        );
        const cartographic2 = Cesium.Cartographic.fromRadians(
          cartographic.longitude,
          cartographic.latitude,
          50
        );
        console.log(cartographic2);
image.png

2、平面坐標(biāo)系轉(zhuǎn)空間坐標(biāo)系

const cartesian = viewer.camera.pickEllipsoid(click.position);
console.log(cartesian);
image.png

3、 三維坐標(biāo)系轉(zhuǎn)成球坐標(biāo)系

   const cartographic = viewer.scene.globe.ellipsoid.cartesianToCartographic(
          cartesian
        );
        console.log(cartographic);
image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容