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