计算几何

问候,

我想检测一个段是否“触及”一个多边形或跨过它。

替代文字

解释了我的疑问。 如何知道案例A和B之间的区别? 请注意,在这两种情况下,红线都穿过两个顶点的多边形,一个接触外侧,另一个穿过内侧。 我有段细分交叉算法,但我不知道如何正确使用它。 任何帮助表示赞赏。


我认为可能没有任何方法比在低级别上计算细节容易得多。 首先,您将需要可靠的代码来计算两个段之间的交集。 这里讨论(代码)。 一旦你有了交点,你就需要计算多边形边界在这些交点附近如何与你的线段相互作用。 这本质上是重复的LeftOf( )计算,使用我书中的符号。 在你的图像中,段通过顶点b,而相邻的顶点a和c(在连续序列(a,b,c))都是b的同一侧。 因此,该段不会穿透到b附近的多边形内部。 但是,如果a和c位于细分市场的相对侧,那么它必须穿透。


一般而言,交叉点可能包含许多点。 例如,请参阅http://cagd.cs.byu.edu/~557/text/ch7.pdf,其中讨论平面曲线如何相交,并说切线曲线在两个“正确计数”点相交,这是违反直觉的。 在具有放牧线的凸多边形的情况下,交叉点是否有两个点“正确计数?” 在你的情况下,是否有两个交叉点和两个点?

所以O'Rourke教授给出了一个计算交点中点数的算法,可以这么说。 实际上,计算交叉点的软件包是否会返回每个交点的点数?

链接地址: http://www.djcxy.com/p/48105.html

上一篇: computational geometry

下一篇: Emacs/TextMate code completion for Erlang?