问候,
我想检测一个片段是否只是“触及”一个多边形还是跨过它。
图
解释了我的疑问。如何知道案例A和B之间的区别? 请注意,在这两种情况下,红线在两个顶点中穿过多边形,一个在外面触摸,另一个在内部交叉。我有一个段段交叉算法,但我不知道如何正确使用它。任何帮助表示赞赏。
答案 0 :(得分:4)
我认为可能没有比在低级别计算细节容易得多的方法。
首先,您需要强大的代码来计算两个段之间的交集。
这将讨论(使用代码)here。一旦你有交叉点,你需要
计算多边形边界如何与那些区域中的线段相互作用
交点。这本质上是
使用我书中的符号重复LeftOf( )
次计算。
在图像中,线段通过顶点 b ,而相邻顶点 a 和 c
(在连续序列中( a,b,c ))都在 b 的同一侧。因此,细分市场
不会穿透 b 附近的多边形内部。但是如果 a 和 c
在该段的两侧,然后它必须穿透。
答案 1 :(得分:0)
概括,交叉点可能包含许多点。例如,请参阅讨论平面曲线如何相交的http://cagd.cs.byu.edu/~557/text/ch7.pdf,并说切线曲线在“正确计数”的两个点相交,这是违反直觉的。在具有放牧线的凸多边形的情况下,交叉点是否具有“正确计数?”的两个点?在你的情况下,是否有两个交叉点,每个交叉点有两个点?
所以O'Rourke教授给出了一种计算交叉点数的算法,可以这么说。实际上,计算交叉点的包是否应该返回每个交叉点的点数?