日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

d3.js 获取当前像素坐标_Cesium开发入门篇 | 06坐标系及坐标变换

發布時間:2023/12/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 d3.js 获取当前像素坐标_Cesium开发入门篇 | 06坐标系及坐标变换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Cesium中常用的坐標

1.屏幕坐標(像素)

即二維笛卡爾平面坐標,我們通過鼠標點擊直接獲取的坐標就是屏幕坐標了,單位是像素值,也可以通過new Cesium.Cartesian2(x, y)創建。

2.笛卡爾空間直角坐標

笛卡爾空間直角坐標又稱為世界坐標,Cesium中用Cartesian3變量表示,可通過new Cesium.Cartesian3(x, y, z)創建,主要是用來做空間位置的變化如平移、旋轉和縮放等等,它的坐標原點在橢球的中心,如下圖所示:

3.地理坐標(弧度)

Cesium中的地理坐標單位默認是弧度制,用Cartographic變量表示,可通過new Cesium.Cartographic(longitude, latitude, height)創建,其中這里的參數是用弧度表示的經緯度,即經度和緯度。弧度即角度對應弧長是半徑的倍數。角度轉弧度 π/180×角度弧度變角度 180/π×弧度

4.經緯度坐標

即測繪中的地理經緯度坐標,默認是WGS84坐標系,坐標原點在橢球的質心。

經度:參考橢球面上某點的大地子午面與本初子午面間的兩面角,東正西負。
緯度 :參考橢球面上某點的法線與赤道平面的夾角,北正南負。
Cesuim中沒有具體的經緯度對象,要得到經緯度首先需要計算為弧度,再進行轉換。Cesium提供了如下對應的轉換方法:

// 經緯度轉弧度 Cesium.Math.toRadians(degrees) // 弧度轉經緯度 Cesium.Math.toDegrees(radians)

Cesium中常用的坐標變換

1.經緯度坐標轉世界坐標

Cesium提供了兩種方式將經緯度坐標轉成世界坐標。

// 方法1:直接轉換 // var cartesian3 = Cesium.Cartesian3.fromDegrees(lng, lat, height); // 方法2:借助ellipsoid對象,先轉換成弧度再轉換 var cartographic = Cesium.Cartographic.fromDegrees(lng, lat, height); //單位:度,度,米 var cartesian3 = ellipsoid.cartographicToCartesian(cartographic);

2.世界坐標轉經緯度

// 3.笛卡爾空間直角坐標系轉為地理坐標(弧度制) // var cartographic = Cesium.Cartographic.fromCartesian(cartesian3); // 方法1 // var cartographic = ellipsoid.cartesianToCartographic(cartesian3); // 方法2 // 4.地理坐標(弧度制)轉為經緯度坐標 var lat = Cesium.Math.toDegrees(cartographic.latitude); var lng = Cesium.Math.toDegrees(cartographic.longitude); var height = cartographic.height;

3.弧度和經緯度互轉

經緯度轉弧度:

Cesium.Math.toRadians(degrees)

弧度轉經緯度:

Cesium.Math.toDegrees(radians)

4.屏幕坐標和世界坐標互轉

屏幕轉世界坐標:

// 2.二維屏幕坐標轉為三維笛卡爾空間直角坐標(世界坐標) var cartesian3 = scene.globe.pick( viewer.camera.getPickRay(windowPostion), scene );

注意這里屏幕坐標一定要在球上,否則生成出的cartesian對象是undefined。

世界坐標轉屏幕坐標:

// 三維笛卡爾空間直角坐標(世界坐標)轉為二維屏幕坐標 // 結果是Cartesian2對象,取出X,Y即為屏幕坐標。 windowPostion = Cesium.SceneTransforms.wgs84ToWindowCoordinates(scene, cartesian3);

坐標變換工具

只有轉換到笛卡爾坐標系后才能運用計算機圖形學中的仿射變換知識進行空間位置變換如平移旋轉縮放。Cesium為我們提供了如下幾種很有用的變換工具類:

  • Cesium.Cartesian3(相當于Point3D)
  • Cesium.Matrix3(3x3矩陣,用于描述旋轉變換)
  • Cesium.Matrix4(4x4矩陣,用于描述旋轉加平移變換)
  • Cesium.Quaternion(四元數,用于描述圍繞某個向量旋轉一定角度的變換)
  • Cesium.Transforms(包含將位置轉換為各種參考系的功能)

總結

以上是生活随笔為你收集整理的d3.js 获取当前像素坐标_Cesium开发入门篇 | 06坐标系及坐标变换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。