Как добавить все подразделенные координаты многоугольника? - PullRequest
1 голос
/ 04 ноября 2019

пусть A будет набором координат (например, array([[ 10., 110.],[200., 90.],[210., 0.], [-10., 10.],[ 10., 110.]]).
Если subdivision(coordinate) является кодом деления, дающим два результата - subdivisionR, subdivisionL, то subdivision(A) дает array([[ 10., 110.],[110.0, 99.47],[110.0, 4.54],[-10., 10.],[ 10., 110.]]), array([[110.0, 99.47],[200.,90.],[210., 0.],[110.0, 4.54],[110.0, 99.47]]).

Поскольку я хотел разделить многоугольник до тех пор, пока все подразделенные многоугольники не достигнут области, ближайшей к 200, и не получат все подразделенные координаты, я использовал следующий код:

n=1  
t=0  
r=0  
k=A  

while area(subdivision(k)[n-1])>200:
    for i in range(t,n):
        k.append(subdivision(k[i])[0])
        k.append(subdivision(k[i])[1])
    t=2**r
    r=r+1
    n=2**r

Однако я получаю предупреждение - 'numpy.ndarray' object has no attribute 'append'.
Как я могу это исправить?

1 Ответ

1 голос
/ 04 ноября 2019

Синтаксис для добавления к пустому массиву отличается от синтаксиса списка Python. Вы хотите использовать:

numpy.append(array, value, axis)

Так что-то вроде:

numpy.append(k, subdivision(k[i]), axis = 0)

Ось примечания является необязательной и по умолчанию имеет значение 1. «значение» - это пустой массив, а не дискретное значение.

...