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

时间:2009-12-29 23:51:13

标签: 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最相关。

1 个答案:

答案 0 :(得分:10)

呃,经度的单位数不是恒定的?您使用了什么奇怪的转换功能?

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

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

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