我有一个点(纬度/经度)和一个以度数(真北)为标题的航向。我有许多固定多边形(在Lat / Lon中定义的点),它们可能是凸的也可能不是凸的。
我的问题是,如何用多边形计算最近的交点(如果有的话)。我看过几篇关于光线追踪的令人困惑的帖子,但是当光线和多边形不在同一平面上并且多边形必须是凸面时,它们似乎都与3D有关。
答案 0 :(得分:1)
听起来你应该可以做一个简单的2d线交叉...
然而,之前我曾使用过Lat / Long,并且知道它们并不完全符合任何二维坐标系。
我将从一般的“IsPointInPolygon”功能开始,您可以通过Google搜索找到其中的一百万个,然后在您的poly上测试它以查看它的工作情况。如果它们足够准确,那就用它吧。但由于纬度/经度坐标的非方形特性,您可能需要使用球面几何进行一些修改。
答案 1 :(得分:1)
在2D中,计算相当简单......
您总是可以通过检查来确保光线的端点不在多边形内(因为那是该情况下的交叉点)。
如果端点不在线,则可以与多边形的每个边界要素进行光线/线段交叉,并使用最近的找到位置。它处理凸/凹特征等。
答案 2 :(得分:1)
计算光线是否与多边形using this technique中的每个线段相交。
(我接受的)答案(我称之为h
)中的结果缩放因子是“沿光线的距离是交叉点。”您正在寻找0
和1
之间的值。
如果有多个交叉点,那很好!如果您想要“第一个”,请使用值h
的最小值。
答案 3 :(得分:0)
此页面上的答案似乎是最准确的。