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

Mat*_*lin 3 opengl algorithm 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最相关的代码.

mer*_*ike 10

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

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

x = r * cos(latitude) * cos(longitude);
y = r * cos(latitude) * sin(longitude);
z = r * sin(latitude);
Run Code Online (Sandbox Code Playgroud)

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