以二进制表示的交叉数/绕组数多边形测试(Python)
我试图实现缠绕数或交叉数测试,主要围绕布尔运算构建。 布尔需求是由于底层数据集的方法和效率,使得将变量委托给布尔值以外的变量进行计数是次优的 交叉数似乎最容易实现(我认为),因为它本质上是二进制的(偶数(0)与奇数(1)),其中每侧交叉数测试的结果可以与前面的结果进行异或,例如在下面给出的代码中,以二进制表示的交叉数/绕组数多边形测试(Python),python,vector,geometry,point-in-polygon,Python,Vector,Geometry,Point In Polygon,我试图实现缠绕数或交叉数测试,主要围绕布尔运算构建。 布尔需求是由于底层数据集的方法和效率,使得将变量委托给布尔值以外的变量进行计数是次优的 交叉数似乎最容易实现(我认为),因为它本质上是二进制的(偶数(0)与奇数(1)),其中每侧交叉数测试的结果可以与前面的结果进行异或,例如在下面给出的代码中,xyz是我们的评估坐标。代码从结尾处进行了改编 #原始点: pts=[[100100]、[200200]、[300100]、[400300]、[300400]、[200300]、[100100]] #极
xyz
是我们的评估坐标。代码从结尾处进行了改编
#原始点:
pts=[[100100]、[200200]、[300100]、[400300]、[300400]、[200300]、[100100]]
#极值:
最小值=[pts[0][0],pts[0][1]]
max=[pts[0][0],pts[0][1]]
临时技术秘书处一级:
对于范围(2)内的j:
如果我[j]max[j]:
max[j]=i[j]
#新尺寸:
w=最大值[0]-最小值[0]
h=最大值[1]-最小值[1]
如果len(sys.argv)>2:
xyz=[int(sys.argv[1]),int(sys.argv[2])]
其他:
xyz=[200100]
#通过切断低于最小值、高于最大值的电流进行正常化:
对于枚举中的i,p(pts):
pts[i]=[p[0]-min[0],p[1]-min[1]]
x=0
y=1
逻辑=无
计数=0
对于范围内的i(透镜(pts)-1):
测试=((pts[i][y]xyz[y])或\
((pts[i][y]>xyz[y])和(pts[i+1][y]Aha
和
!=和
和
|!=或
。通过更改其工作的运算符
啊哈
和
!=和
和|!=或
。通过更改其工作的运算符