From a6e77c3d25754c77d52ac6656995dcd56412b0ff Mon Sep 17 00:00:00 2001 From: tengge1 <930372551@qq.com> Date: Tue, 26 Mar 2019 22:13:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E4=BA=9B=E6=95=B0=E5=AD=A6=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ShadowEditor.Web/src/gis/utils/MathUtils.js | 65 +++++++++++++++------ 1 file changed, 48 insertions(+), 17 deletions(-) diff --git a/ShadowEditor.Web/src/gis/utils/MathUtils.js b/ShadowEditor.Web/src/gis/utils/MathUtils.js index 38b1198b..c156065a 100644 --- a/ShadowEditor.Web/src/gis/utils/MathUtils.js +++ b/ShadowEditor.Web/src/gis/utils/MathUtils.js @@ -1,29 +1,60 @@ import WGS84 from '../core/WGS84'; +/** + * 经纬度、海拔转笛卡尔坐标 + * @param {THREE.Vector3} lonlat 经纬度、海拔 + * @param {THREE.Vector3} xyz 笛卡尔坐标 + */ +function lonlatToXYZ(lonlat, xyz) { + var lon = lonlat.x * Math.PI / 180; + var lat = lonlat.y * Math.PI / 180; + var r = WGS84.a + lonlat.z; + + xyz.set( + r * Math.cos(lat) * Math.cos(lon), + r * Math.cos(lat) * Math.sin(lon), + r * Math.sin(lat), + ); + + return xyz; +} + +/** + * 笛卡尔坐标转经纬度 + * @param {THREE.Vector3} xyz + * @param {THREE.Vector3} lonlat + */ +function xyzToLonlat(xyz, lonlat) { + +} + +/** + * 层级转海拔 + * @param {*} zoom + */ +function zoomToAltitude(zoom) { + +} + +/** + * 海拔转层级 + * @param {*} alt + */ +function altitudeToZoom(alt) { + +} + /** * 数学工具 */ var MathUtils = { - /** - * 经纬度海拔转笛卡尔坐标 - */ - lonlatToXYZ: function (lon, lat, alt) { + lonlatToXYZ, - }, + xyzToLonlat, - /** - * 笛卡尔坐标转经纬度 - */ - xyzToLonlat: function (x, y, z) { + zoomToAltitude, - }, - - /** - * 层级转相机到地球表面距离 - */ - zoomToDistance: function (zoom) { - return 7820683 / Math.pow(2, level); - } + altitudeToZoom, }; export default MathUtils; \ No newline at end of file