【发布时间】:2021-05-28 03:23:21
【问题描述】:
我正在尝试找到一种有效的算法,该算法可以检查简单(编辑:简单 凹面)多边形中两个顶点之间的线是否包含位于多边形域之外的点。我能找到的最接近的问题是这个:https://stackoverflow.com/a/36378838/12135804
但我不确定答案是否完全正确。可能是这样,在这种情况下,如果有人能澄清一下,那就太好了。
我希望红线失败而绿线成功。我知道不能天真地测试中点,因为这在每种情况下都不起作用,但是在多边形域之外的线上找到任何点都应该取消它的资格。
感谢所有帮助!
编辑:忘记包含数学堆栈交换的交叉链接: https://math.stackexchange.com/q/4040059/892519
【问题讨论】:
-
你的意思是“凸包”吗?搜索那个,这是一个已解决的问题。 ;)
-
不,编辑得更清楚。这适用于凹多边形。上述算法不会真正应用于凸多边形,因为两个顶点之间的任何线都会自动位于多边形内。话虽如此,它在技术上仍然适用于凸多边形,因为我不介意作为多边形一部分的线。
-
在非常接近线端点的点上进行 hit test(稍微向内移动到线中心),所以如果线是 AB,那么测试点
C = A + 0.000001*(B-A)... -
我认为这可行,因为这两个点都可以进行多边形点测试,如果一个失败则宾果游戏。
标签: algorithm geometry polygon computational-geometry line-segment