我有一个坐标系,其中有一定数量的区域,类似于这样:
然而,我这里所有的区域都是唯一编号的,大小相同,总共有16个(因此每个象限都会有4个完全相同大小的切片)。
我还有一组元组(二维坐标),它们的值都在(-1, -1)和(1, 1)之间。现在我想确定将它们映射到坐标系上后,它们会落入哪个区域(即1到16)。
作为一个完全的新手,我不知道该如何解决,但下面是我的思路:
将所有分界线定义为函数,并检查每个点是否在它们的上方或下方。忽略决策边界上的点
例如:第一象限有四个区域。从x轴到y轴(逆时针方向)让我们称其为a、b、c和d。
a是x轴和f1(x) = 0.3333x(红色)之间的区域
b在f1和f2之间,f2(x) = x(黄色)
c在f2和f3之间,f3(x) = 3x(蓝色)
d在f3和y轴之间
代码如下:
def a(p):
if(y > 0 and y < 0.3333x):
return "a"
else:
b(p)
def b(p):
if(y > 0.3333x and y < x)
return "b"
else:
c(p)
def c(p):
if(y > x and y < 3x):
return "c"
else:
d(p)
def d(p):
if(y > 3x and x > 0):
return "d"
注意:为了易读性,我在元组的各个坐标处只写了“x”和“y”,而不是每次都写p[0]或p[1]。另外,如上所述,我假设函数上没有直接的物品,因此它们被忽略。
现在,这是一个可能的解决方案,但我觉得肯定有更高效的解决方案。