js经度纬度与笛卡尔坐标系三维坐标互转
时间: 2023-09-30 07:10:48 浏览: 44
经度纬度与笛卡尔坐标系三维坐标之间的转换可以使用以下公式:
1. 经度和纬度转换为笛卡尔坐标系:
x = r * cos(lat) * cos(lon)
y = r * cos(lat) * sin(lon)
z = r * sin(lat)
其中,r 是地球的半径,lat 是纬度,lon 是经度。
2. 笛卡尔坐标系转换为经度和纬度:
lat = asin(z / r)
lon = atan2(y, x)
注意:这里的 asin 是反正弦函数,atan2 是反正切函数。
在 JavaScript 中,可以使用以下代码实现这些转换:
```javascript
// 经度和纬度转换为笛卡尔坐标系
function convertToCartesian(latitude, longitude) {
var r = 6371; // 地球的半径(单位:km)
var latRad = latitude * Math.PI / 180;
var lonRad = longitude * Math.PI / 180;
var x = r * Math.cos(latRad) * Math.cos(lonRad);
var y = r * Math.cos(latRad) * Math.sin(lonRad);
var z = r * Math.sin(latRad);
return [x, y, z];
}
// 笛卡尔坐标系转换为经度和纬度
function convertToGeographic(x, y, z) {
var r = 6371; // 地球的半径(单位:km)
var latRad = Math.asin(z / r);
var lonRad = Math.atan2(y, x);
var latitude = latRad * 180 / Math.PI;
var longitude = lonRad * 180 / Math.PI;
return [latitude, longitude];
}
// 示例:
var latitude = 39.9042; // 纬度
var longitude = 116.4074; // 经度
var cartesian = convertToCartesian(latitude, longitude);
console.log("笛卡尔坐标系:", cartesian);
var geographic = convertToGeographic(cartesian[0], cartesian[1], cartesian[2]);
console.log("经度和纬度:", geographic);
```
这段代码可以将给定的经度和纬度转换为笛卡尔坐标系,在控制台中输出结果。然后,将笛卡尔坐标系转换回经度和纬度,并再次输出结果。