我有一个点(Lat / Lon)和一个以度(真北)为标题的航向。我有许多固定多边形(在Lat / Lon中定义的点),它们可能是凸的也可能不是凸的。

我的问题是,如何用多边形计算最近的交点(如果有的话)。我看过几篇关于光线跟踪的令人困惑的帖子,但是当光线和多边形不在同一平面上时,它们似乎都与3D有关,而且多边形也必须凸出。

有帮助吗?

解决方案 4

此页面上的答案似乎是最准确的。

问题1.E GodeGuru

其他提示

听起来你应该可以做一个简单的2d线交叉...

然而,之前我曾使用过Lat / Long,并且知道它们并不完全符合任何二维坐标系。

我会从一般的“IsPointInPolygon”开始。功能,你可以通过谷歌搜索找到一百万个,然后在你的poly上测试它,看看它的工作情况。如果它们足够准确,那就用它吧。但由于纬度/经度坐标的非方形特性,您可能需要使用球面几何进行一些修改。

在2D中,计算相当简单......

您总是可以通过检查来确保光线的端点不在多边形内(因为那是该情况下的交叉点)。

如果端点不在线,则可以与多边形的每个边界要素进行光线/线段交叉,并使用最近的找到位置。它处理凸/凹特征等。

计算光线是否与多边形中的每个线段相交使用这种技术

(我接受的)答案(我称之为 h )中的结果缩放因子是“沿光线的距离是交叉点。”您正在寻找 0 1 之间的值。

如果有多个交叉点,那很好!如果你想要“第一个”,使用 h 的最小值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top