xlib编程 - 如何查找该行是否在给定多边形之外

时间:2013-09-28 09:50:22

标签: c computational-geometry xlib x11

我有一个多边形。 enter image description here

如何通过xlib编程找出黑色线是在多边形之外还是在多边形内部。

1 个答案:

答案 0 :(得分:0)

  1. 创建确定点是在内侧/边缘/外侧多边形的函数

    如果你在从该点到无穷大的任何方向上投射光线(半轴),它应该与多边形线的奇数计数相交(如果它在多边形内部),如果它在多边形之外则甚至计数。

    如果光线交点直接位于某个边缘(交点==点),则稍微改变方向并再次尝试或处理双击(来自该顶点的两条相邻线),如果您的多边形不是复数,则单击。 ..

  2. 如果线不与任何多边形线相交,则

    • 如果其展位点在多边形内,则行在多边形
    • 如果其展位点在多边形之外,则行在多边形外面
    • 如果一个点位于内部,一个位于外部,则行部分位于
    • 如果一个或两个点在边缘,则测试线中点而不是
  3. 如果线与任何多边形线相交,则

    并且该交点也不是该线的顶点(在边缘上),那么该线部分在其他位置根据该线的第二点完全进入或退出