将经纬度转换为世界坐标的算法(OpenGL)

标签 algorithm opengl latitude-longitude

我有一组纬度和经度坐标,它们将在我正在处理的 GL 程序中呈现。我有每个纬度和经度的单位数等信息(我有十进制度数的坐标,例如 27.1234)——例如,每个经度 15 个单位,每个纬度 10 个单位。但是,我在渲染时遇到了问题。

此计算为我提供了可用于渲染的位置,但它并不完美。我最初只用 S026.33.01.806 E148.46.27.009 等坐标进行测试,当我切换到 N039.52.19.030 W075.14.28.107 等坐标时,渲染结果倒置且水平翻转。

这可能是对 OpenGL 及其解释坐标的方式缺乏基本的了解,或者我可能以错误的方式处理问题。我正在使用 Python 和 PyOpenGL,但我认为这种算法可以在没有特定语言要求的情况下完成。

编辑:我已经上传了似乎与 http://slexy.org/view/s21LKiD9tj 最相关的代码.

最佳答案

呃,经度的单位数不是常量?你用的是什么奇怪的转换函数?

假设地球是一个半径为 r 的球体,以坐标系的根为中心,z 轴指向北方,x 轴指向经度 0,y 轴指向经度 90,可以得到笛卡尔坐标系坐标如下:

x = r * cos(latitude) * cos(longitude);
y = r * cos(latitude) * sin(longitude);
z = r * sin(latitude);

注意:如果您的语言的三角函数期望参数以弧度而不是度数指定,请务必先转换它们。

关于将经纬度转换为世界坐标的算法(OpenGL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1977654/

相关文章:

xcode - 我用 OpenGL 单击了哪里?

c - 在 C 中使用两组坐标(纬度和经度)的轴承

geolocation - 这个 'address'末尾的代码是什么

algorithm - 流程树问题的最优解

c++ - 如何通过动态规划方法解决这个问题?

opengl - 如何使用 Assimp 加载 Blender 文件?

c++ - 在 OSG 中创建太阳光源

algorithm - 非重叠区间的所有最大子集的输出敏感快速枚举

c++ - 将数组存储在 vector 中并对元素进行排序

java - 如何高效返回半径内的道路