如何将球面三角形映射到平面三角形?

时间:2010-07-22 01:03:11

标签: algorithm geometry gis platform-independent

gnomonic投影将球面三角形映射到直边三角形。

但是我听说Chamberlin trimetric投影的失真较小,所以我想用它来代替。 唉,当我使用我的(非常粗糙且可能是错误的)Chamberlin trimetric投影的实现来将由其3个基点形成的球形三角形映射到平面时,我似乎得到的形状几乎一个三角形,但三条“线”曲线凸出。 这是我的代码中的错误,还是应该这样做?

还有其他一种方法可以将球形三角形映射到一个直边三角形,它的失真小于gnomonic投影吗?

编辑: 我的目标是制作一个定制的"polyhedral map"地球。 如果您从"Map Fold-outs"页面打印出一些内容,那么您将获得与我正在尝试的内容完全相同的内容。

我有2个三角形。 一个是在3D地球仪上绘制的球形三角形。 根据定义,球形三角形的每个边缘都是大圆的一部分。 当你看到那个3D地球仪时,有一堆城市,海岸线等(希望)准确地绘制在那个球形三角形内的3D地球上。

另一个三角形是平面,平面(2D),直边,欧几里德三角形。在纸上。 目前,该三角形的内部是空白的白纸,但最终我想要将所有这些城市,海岸线等的副本绘制到该区域。

每个地图投影都会将该3D球形三角形映射到2D图像。然后很容易(在2D中)旋转,滑动和收缩,并且可能倾斜,直到3个角完全与我的平面三角形的3个角对齐。 如果我将一堆不同的地图投影的结果叠加在一起, 即使我迫使三个角落完全对齐, 每个预测都会将城市置于略有不同的位置。 不幸的是,许多投影都将城市稍微放在球形三角形内部并将它们略微拉到平面2D三角形之外。 (这个问题的一个症状是球形三角形的两侧 被映射到平面(2D)曲线,其端点正确匹配角落,但它们从角落之间绘制的完美直线略微向外凸出。 这导致我的多面体地图完全遗漏了这个城市。

我宁愿不冒一些波兰数学家的风险,华沙在我所制作的平面,飞机(2d)纸质地图中莫名其妙地失踪了: - 。

所以我正在寻找“将其保持在线内”的地图投影。 我需要将3个特定的大圆圈(球形三角形的边缘)映射到纸上的直线。 我不关心其他大圆圈 - 直,非直,无论如何。

我听说用于Dymaxion map的地图投影符合该标准;并且有人告诉我他它使用了Chamberlin trimetric投影。 但显然要么(a)我使用了错误的方程式 - 所以在哪里可以找到正确的方程式?或者(b)Dymaxion实际上使用了一些其他投影 - 那么在哪里可以找到该投影的方程?

哪些地图预测符合该标准? 你能给我一个指向该投影的(x,y)= f(lat,long)方程的链接吗?

我正在寻找表格的答案 “gnomonic投影符合您的标准。gnomonic projection equations。”

4 个答案:

答案 0 :(得分:2)

我刚看到这里......

http://en.wikipedia.org/wiki/Chamberlin_trimetric_projection

我认为关键词是“投影的主要特征是它在区域,方向和距离的扭曲之间妥协。” - 特别是“妥协”。

在从欧几里德到非欧几里德表面的任何投影中,必须是扭曲。问题不是“多少失真”,而是“什么样的”。在保持线性线性方面,Gnomic投影可能没有妥协,但因此有更多其他类型的失真。

不是我的领域,所以我可能会忽略这一点。

编辑我不禁注意到,在维基百科页面的插图中,纬度和经度线不是直线。

答案 1 :(得分:2)

我一直在那里,我知道绝对不是一个完美的投射你的事情......绝对没有。但是有一些比其他更好。

你最好的镜头是面向汽车的立体摄影。首先,您应该找到要投影的多边形的质心,然后使用以该轴为中心的立体投影。

http://en.wikipedia.org/wiki/Stereographic_projection http://mathworld.wolfram.com/StereographicProjection.html

在第二部分,你会找到你需要的大部分东西,但我警告你,它不会很美丽而且会伤害很多。

最后,唯一真正的解决方案是直接在3D中运行,但这需要在岩石或超市下找不到的高级几何体。

答案 2 :(得分:1)

我会回答标题*,因为我不完全理解问题正文。

答案是:你做不到。在保持相同的测地线(大圆圈< - >直线)的同时,您将无法将球体映射到平面。后者是扁平的,前者是弯曲的。

如果你可以将测地线映射到测地线,那么两个曲面将具有相同的(内在)曲率,而它们没有。

(*)不完全:我回答“我可以合理地将球体的所有三角形映射到平面的三角形”。

答案 3 :(得分:1)