我正在使用地图应用程序(worldwind)并尝试确定当前显示的最小和最大纬度和经度。我可以访问平截头体,但我不确定如何解释地球可以改变其航向和/或音高的事实。对此问题的任何帮助将不胜感激。
感谢,
杰夫
答案 0 :(得分:1)
实际上,Frustum在这方面并不是最有用的东西。您需要做的是反转ModelView-Project转换。
如果您可以检索投影(视锥体)和模型视图矩阵,则可以反转它们。如果沿着投影空间从投影机位置投影光线,则可以使用这些反转在世界空间中查找该光线。从那里,您可以将该光线与您的世界相交,以找到该光线撞击地球的确切位置。
对屏幕的四个角执行此操作,然后根据这些交点坐标计算2D边界框。
答案 1 :(得分:0)
你到底想要计算什么?窗户的角点或地球的角点。记住一个圆没有角(也没有球)。你在worldwind(WorldMapLayer)中看过迷你地图工具吗?它将当前可见范围显示为小地图中的叠加,这可以让您了解确切显示的内容。
很高兴看到世界各地的问题无处不在。我们一定不能在论坛上做得很好。
答案 2 :(得分:0)
我之前提议的极端情况(1)使你的算法变得困难(我从来没有必要从地球上缩小,但仍然不明白为什么你仍然不仅仅使用半球case),所以这是另一种可行的方法。
将投影视锥体作为3D对象并与地球相交(作为3D对象)。有各种CSG算法可以为您提供联合,交集和差异。使用交集。这将导致地球体的三角形网格与平截头体相交。该网格的范围是边界框的范围。 (沿平截头体的主轴项目。)
这比我以前的提议效率低得多。 : - )
(1)双关语完全打算。