射线多边形交点在球体表面上

时间:2009-03-09 22:48:06

标签: algorithm 2d polygon raytracing

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

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

4 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

计算光线是否与多边形using this technique中的每个线段相交。

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

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

答案 3 :(得分:0)

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

Question 1.E GodeGuru