【发布时间】:2009-12-30 08:35:16
【问题描述】:
我有一组纬度和经度坐标,它们将在我正在处理的 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 度的纬度对于第一(球形)近似而言是相同的距离,无论在地球上的位置如何,1 度的纬度具有可变的大小,在赤道处最大,在两极处很小。其次,我不确定您所指的世界坐标是 OpenGL 项目还是您对如何解释位置的描述。如果您正在查看生成 3D 笛卡尔坐标,我可以看到可以颠倒和翻转显示的各种方式。 S026.33.01.806 W075.14.28.107 会发生什么?
-
@Jonathan Leffler:坐标是针对小区域的,每个纬度和经度的单位是从数据源提供的。我所说的世界坐标是指在 GL 世界中(我来自 DirectX 开发背景,以防万一。在这种情况下,“世界坐标”实际上是 z 为零的 3D 笛卡尔坐标)。这个软件有点不准确是可以的。至于您提供的示例:渲染的项目水平翻转。
-
@meriton:具体是哪个代码?我有很多代码,我想减少我提供的数量,而不是仅仅倾倒整个代码。
-
@Matthew:您正在观看的视点(3D 位置)是什么?你在看哪个方向?由于当位置在 N-S 和 E-W 方向上从负变为正(反之亦然)时,您会遇到奇怪的影响,因此可能是您在应该允许有符号值时使用了绝对值。
标签: algorithm opengl latitude-longitude