小编Kur*_*urz的帖子

多边形边缘上的点应该在多边形内部吗?

最近我遇到了一个小但重要的问题:多边形边缘上的点是否在多边形内部?

我的意思是 - 目前我正在尝试在 JS 中实现2D 几何库以满足自定义需求,并且有方法,可以说Polygon.contains(point)

所以我的问题是 - 当点位于多边形的边缘之一时 - 结果该点是在多边形的内部还是外部?关于顶点的附加问题:如果点位于多边形顶点的正上方 - 它是在内部还是外部?

我使用的算法取自此处,如下所示:

int pnpoly(int nvert, float *vertx, float *verty, float testx, float testy)
{
    int i, j, c = 0;
    for (i = 0, j = nvert-1; i < nvert; j = i++) {
        if ( ((verty[i]>testy) != (verty[j]>testy)) &&
          (testx < (vertx[j]-vertx[i]) * (testy-verty[i]) / (verty[j] - verty[i]) + vertx[i]) )
           c = !c;
    }
    return c;
}
Run Code Online (Sandbox Code Playgroud)

另外,还有一段来自该网站的引述:

PNPOLY …

algorithm geometry point polygon point-in-polygon

6
推荐指数
1
解决办法
1806
查看次数

如何检查 __builtin_ 函数在 gcc 上可用

我需要知道 gcc 是否有一种方法可以检查那些真棒的存在 __builtin_MY_DESIRED_FUNCTIONs

例如,我想使用__builtin_nan并确保它可用于我的程序,并且在编译期间不会失败。

我会更具体:在clang上有__has_builtin“检查器”所以我们可以像这样写

#if __has_builtin(__builtin_nan)
Run Code Online (Sandbox Code Playgroud)

但我找不到 gcc 的模拟。

也许我可以只依赖 gcc,比如“哦,我现在在 gcc 上,让我们假设所有这些__builtin_都在这里,就像下面的例子一样......”

#if __GNUC__
double mynan = __builtin_nan("0");
#endif
Run Code Online (Sandbox Code Playgroud)

并且可能它会起作用,直到有人放置这个“-fno-builtin”编译标志。

c macros gcc built-in

6
推荐指数
2
解决办法
1953
查看次数

标签 统计

algorithm ×1

built-in ×1

c ×1

gcc ×1

geometry ×1

macros ×1

point ×1

point-in-polygon ×1

polygon ×1