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

标签 c computational-geometry xlib x11

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

如何通过xlib编程判断黑色线是在多边形外还是在多边形内。

最佳答案

  1. 创建确定点是否位于多边形内部/边缘/外部的函数

    如果您从该点向无穷远的任何方向转换光线(半轴),如果它在多边形内部,则它应该与奇数条多边形线相交,如果它在多边形外部,则应该与偶数条线相交。

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

  2. 如果线不与任何折线相交

    • 如果其展位点位于多边形内部,则线位于多边形内部
    • 如果其展位点在多边形之外,则线在多边形之外
    • 如果一个点在内部,一个在外部,则线部分在内部
    • 如果一个或两个点位于边缘,则改为测试线中点
  3. 如果线确实与任何多边形线相交

    并且该交点不是线的顶点(在边缘上),则线部分进入,否则根据线的第二个点完全进入或完全退出

关于c - xlib编程-如何查找线是否在给定多边形之外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19065592/

相关文章:

algorithm - 如果我知道一个点周围的所有线,如何找到覆盖多边形

algorithm - 找到给定顶点的底层多边形边界

c - 使用 Xlib 函数在 GtkDrawingArea 上绘图

c - X 工具包 : heap is growing when recreating widgets

c - 在 C 中用指针分配结构

c# - 就我而言,用 C# 编写服务器应用程序是否合理?

c - typedef 定长数组

c - 从控制台读取字符串

graphics - 在体素上渲染 3D 形状

c - 获取当前 X11 服务器时间