Я использую алгоритм марширующих квадратов для рисования контуров вокруг данных о погоде в массивах 2D numpy. Алгоритм в целом работает. Изолинии нарисованы в соответствии с 16 случаями . Мой алгоритм имеет проблемы с делом 10, в котором должны быть нарисованы 2 изолинии. В частности, он пытается получить две точки пересечения здесь:
[_i1,_i2]=self.getIntersects(_sv)
, что приводит к следующему:
def getIntersects(self,_val):
print(_val)
index=[]
if _val[0] * _val[1] < 0:
index.append([0,1])
if _val[1] * _val[2] < 0:
index.append([1,2])
if _val[2] * _val[3] < 0:
index.append([2,3])
if _val[3] * _val[0] < 0:
index.append([3,0])
return index
Проблема в том, что «мой» алгоритм ожидает только два возвращенных индекса, но в случае 10 мы имеем:
[-1,50,-1,50]
Что возвращает 4 индекса.
Есть идеи, как это исправить?