【问题标题】:Determining visible area from globe frustum从地球截头体确定可见区域
【发布时间】:2010-12-19 22:07:22
【问题描述】:

我正在使用地图应用程序 (worldwind) 并尝试确定当前显示的最小和最大纬度和经度。我可以访问截锥体,但我不确定如何解释地球可以改变其航向和/或音高的事实。对此问题的任何帮助将不胜感激。

谢谢,

杰夫

【问题讨论】:

  • 我不确定这是一个编程问题...?
  • 可能不会。我希望有一种方法可以在 worldwind 中使用 worldwind API(尽管论坛另有说明)。我应该更清楚这一点。
  • WW 论坛是一个更好的明确提问的地方。一些简单的 3D 数学将解决您的问题。

标签: java mapping gis frustum worldwind


【解决方案1】:

实际上,在这种情况下,Frustum 并不是最有用的东西。您需要做的是反转 ModelView-Project 转换。

如果您可以检索投影(平截头体)模型视图矩阵,那么您可以反转它们。如果您从您的相机位置沿投影空间 投射一条光线,那么您可以使用这些反演在世界空间 中找到该光线。从那里,您可以将该射线与您的世界相交,以找到该射线击中地球的确切点。

对屏幕的四个角执行此操作,然后根据这些交叉点坐标计算您的 2D 边界框。

【讨论】:

  • 谢谢,弗兰克。我会试一试并报告结果。
  • 我已经开始研究这个 - 但是如果地球被缩小到不占据整个屏幕怎么办?那我该如何计算角点呢?
  • 也通过中心位置发送一条射线。如果你的地球被缩小了这么多,那么边界框应该占据整个半球是不是合乎逻辑的?你的射线相交测试会告诉你它是否击中地球。
  • 弗兰克,当地球顺时针/逆时针旋转时,它变得特别难看。然后可能会出现一个问题,即电线杆不在可视区域之外,但屏幕的角落不与地球相交。我仍然需要弄清楚如何处理这种情况。
  • 我最终做的是以下。我测试屏幕的 4 个角点,如果有任何不与地球相交,我使用可见扇区边界。当某些角点实际上与地球相交而有些不与地球相交时,这可能会有点偏差,但在这些情况下我可以忍受这种不准确性。否则,我只取角点并从屏幕点计算它们的纬度。似乎工作。谢谢。
【解决方案2】:

您到底想计算什么?窗户或地球仪的拐角点。请记住,圆没有角(球体也没有)。你见过worldwind(WorldMapLayer)中的小地图工具吗?它将当前可见范围显示为小地图中的叠加层,这可以让您了解具体显示的内容。

很高兴看到世界之风的问题无处不在。我们在论坛上一定做得不够好。

【讨论】:

  • worldwind 论坛非常棒(我主要与 Pat Murris 交谈,他非常乐于助人)。我查看了小地图图层,而不是在当前位置显示 +,我想显示一个具有当前可见区域的矩形。我知道它会有一些失真,除非我非常仔细地放大(我计划这样做,几乎是在 2D 地图上)并且航向和俯仰会有问题,所以我试图弄清楚如何最好地处理这些.
  • 它确实显示了一条曲线,不是吗?倾斜时看到曲线的形状会发生变化。这就是您要实现的目标。
  • 尼克,我们可以把它移到 WW 论坛吗?或者你有我可以联系你的电子邮件吗?我不确定这个话题的进一步讨论是否真的适合堆栈溢出论坛。
  • 谢谢。另请参阅我接受的答案和我刚刚发布的评论。这可能不是一个理想的解决方案,但它似乎对我的目的有效,但如果需要,我们可以在 WW 论坛中继续讨论。
【解决方案3】:

我之前提议的极端情况 (1) 使算法对你来说很困难(我从来没有从地球上缩小,但仍然不明白为什么你仍然不只使用半球case),所以这里有另一种可行的方法。

将投影平截头体作为 3D 对象并将其与地球相交(作为 3D 对象)。有多种 CSG 算法可以为您提供联合、交集和差异。使用交叉点。这将产生与截头体相交的地球碎片的 3D 网格。该网格的范围是边界框的范围。 (沿着截头体的长轴投影。)

这比我之前的建议效率低得多。 :-)

(1) 双关语完全是故意的。

【讨论】:

  • 弗兰克。在这里再次感谢。我对您的其他答案发表了评论。仅在一些奇怪的情况下,当地球的俯仰和航向都被移动以致地球的一部分被剪裁时,半球的问题才出现。但我意识到,在那种情况下,无论如何我都无法得到一个准确的矩形,因为无论如何只有部分矩形会在全球范围内,而另一部分会在空白空间上(这可能完全没有意义,这太多了更容易用图片来说明)。
猜你喜欢
  • 1970-01-01
  • 2019-07-24
  • 2019-07-26
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多