首页 > 解决方案 > 根据半径、x 和 y 3D 地球 THREE.js 确定 3D 经度和纬度

问题描述

目前我正在尝试理解一个 Codpen,其中这个人将 JSON 数据输入到使用 x 和 y 绘制坐标的 Javascript 应用程序中。

例如,他没有使用经度和纬度来绘制香港,而是使用这些坐标。

{"x": 768,"y": 342,"name": "", "country":"Hong Kong"}

我希望能够输入 x 和 ya 经度和纬度值,但我不知道如何乘法或除法,这是与他的代码一起使用的简单解决方案。我是 Javascript 新手,但我想了解如何在这个特定项目上更有效地绘制坐标。

有没有一个简单的方程式可以让我在这支笔上更轻松地绘图。谢谢。

https://codepen.io/Flamov/pen/MozgXb

标签: javascriptnode.jsmaththree.js

解决方案


该示例基本上使用墨卡托投影转换radius, lat, long为欧几里得x, y, z坐标,如您提供的 JSFiddle 的第 860 行以上所述,并使用此 SO 答案作为参考。由于半径在全球范围内是恒定的,因此您无需为每个点重复该值,它只是硬编码到示例中。

墨卡托有点令人困惑,因为当你接近两极时,比例会无限延伸。作为一种更简单的选择,您可以Vector3.setFromSphericalCoords(rad, lat, long) 按照文档中的说明使用它并x, y, z为您设置。主要区别在于这种方法不会在两极附近造成失真。它采用lat, long弧度:

  • lat范围从[0, Pi](北极到南极)
  • long范围从[0, 2*Pi](赤道附近)

推荐阅读