我有一组纬度和经度坐标,它们将在我正在处理的 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/