У меня есть система координат с определенным количеством регионов, похожая на эту:
Разница в моем случае, однако, в том, что все регионы имеют уникальную нумерацию, все имеют одинаковый размери их 16 (так что в каждом квадранте будет 4 среза одинакового размера).
У меня также есть набор кортежей (двухмерных координат), которые находятся между (-1, -1).) и (1,1).Теперь я хотел бы проверить, в какую область (то есть от 1 до 16) они приземлились бы, если бы они отображались в системе координат.
Как абсолютный новичок, я понятия не имею, как с этим справиться, но вот мой подход до сих пор:
Сделать все функции разделительных линий и проверить для каждой точки, является лиони выше и ниже их.Не обращайте внимания на тех, кто находится на границе принятия решения
Например: в квадранте 1 есть четыре региона.От оси 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] каждый раз.Кроме того, как указано выше, я предполагаю, что нет элементов непосредственно в функциях, поэтому они игнорируются.
Теперь это возможное решение, но я чувствую, что почти наверняка есть более эффективное.