我有一组纬度和经度坐标,这些坐标将在我正在处理的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最相关。
答案 0 :(得分:10)
呃,经度的单位数不是恒定的?您使用了什么奇怪的转换功能?
假设地球为半球形r的球形,以坐标系的根为中心,z轴指向北方,x轴指向经度0,y轴指向经度90,则可以得到笛卡儿坐标如下:
x = r * cos(latitude) * cos(longitude);
y = r * cos(latitude) * sin(longitude);
z = r * sin(latitude);
注意:如果您的语言的三角函数期望以弧度而不是度数指定参数,请务必先将它们转换。