【问题标题】:Can someone please explain the Ray-casting algorithm for point in polygon i.e. containment check?有人可以解释多边形中点的光线投射算法,即包含检查吗?
【发布时间】:2018-04-07 10:27:01
【问题描述】:

考虑一个具有两个环的多边形,即外环和内环,如本问题所附图像所示。有人可以解释一下光线投射算法在这种情况下究竟是如何工作的吗?如果可能,请在答案中添加一些图像/绘图,以便更好地可视化和理解。

【问题讨论】:

  • hit test不管你有没有洞,交叉点的LSB会告诉你你是在多边形内部还是外部。唯一的问题是您的光线是否在单点接触边缘而不是通过。你需要检测到这些东西,要么不计算它们,要么计算它们两次……或者改变光线方向,这样它就不会发生。

标签: geometry topology point-in-polygon brep


【解决方案1】:

想象一个点沿直线从无穷远移动到目标点(也适用于曲线)。

无穷远点在形状之外。每当遇到一个大纲时,您就会从外部切换到内部,或者反过来。该规则定义了内部和外部点。在给定的情况下,圆角矩形的内部,不包括内圆。

在算法上,您计算定义形状的线段与目标的半线的交点。

【讨论】:

  • 我在一些文章中读到,并且在某些情况下也亲自观察到这种方法在不规则形状的折线上会失败,即如果光线穿过一次然后只是“接触”外部的一个点,形成一些东西像一个“切线”。或者,如果多段线与自身相交,并且光线正好穿过这样的交叉点,会怎样。或者,如果光线穿过折线的一部分,同一折线的两条线恰好在彼此的顶部绘制。在这 3 个例子中,上面的逻辑返回了错误的结果。
  • 有人可以为我上面评论中提到的案例提出解决方案吗?如果光线投射算法无法处理这些问题,请提出其他可能的方法来解决所述问题。
  • “返回错误的结果”:前提是您定义了在这种情况下的预期结果。请注意,对于实际应用,这些点形成一个零集测量,努力处理它们有点毫无意义(顺便说一下,光线投射返回的结果非常连贯)。
  • 谢谢伊夫。!存在“e”类多边形的 PFA 图像。请仔细查看并帮助我在此类多边形中获得正确的点包含检查结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
  • 1970-01-01
  • 2015-03-07
相关资源
最近更新 更多