python 确定哪些顶点在子图的内部,哪些在外部

7z5jn7bk  于 2023-04-28  发布在  Python
关注(0)|答案(2)|浏览(102)

我有一个图gee,看起来像这样:

看看由顶点2、3和4组成的子图,很明显1在外部,所有其他节点都在内部。类似地,取节点2,4,5,很明显7在内部,其他都在外部。我如何才能正式让Python告诉我这是这样的呢?我不认为基于距离,边交叉或程度的论点会起作用,因为我可以在这个小图中看到反例。
具体来说,我想知道我是否可以创建一个子图:subgee = gee.subgraph([2,3,4]),然后使用参数“gee的哪些节点位于subgee内部?”
谢谢

rqqzpn5f

rqqzpn5f1#

我假设你有顶点的位置(x,y)?
要确定一个点是否在多边形内,概念性:从点到无穷远点画一条直线,计算与多边形边的交点,如果是0或偶数,则点为外部,如果是奇数,则点为indide。
这在代码中实现是具有挑战性的。下面是一些C代码来进行计数:

int pnpoly(int nvert, float *vertx, float *verty, float testx, float testy)
{
  int i, j, c = 0;
  for (i = 0, j = nvert-1; i testy) != (verty[j] > testy)) 
       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;
}

关于这一点的更多讨论:https://ravenspoint.wordpress.com/2010/06/27/in-or-out/

ars1skjm

ars1skjm2#

我只要看看边缘就能知道。在2,4,5三角形中,7是内部的,因为它的唯一边是2,4和5。

gee.edges(7)
EdgeDataView([(7, 2), (7, 4), (7, 5)])

相关问题