Если subdivision(coordinate)
- это код деления, использующий теорию ограничивающих прямоугольников, дающую два результата - subdivisionR, subdivisionL
;
A = array([[ 10., 110.],[200., 90.],[210., 0.], [-10., 10.],[ 10., 110.]])
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]])
area(A) = 19550.0
подраздел (A)
СЯ хочу повторить subdivision()
для всех подразделенных полигонов, пока каждая область не достигнет около 200, я сделал код ниже. Однако индекс кортежа для area()
представляет собой одно целое число, а индекс кортежа для subdivision()
представляет собой массив координат. Если я хочу добавить все подразделенные многоугольники, пока каждая область не достигнет 200 в списке координат, как я могу исправить приведенный ниже код?
n=1
t=0
r=0
k=A
while area(subdivision(k)[n-1])>200:
for i in range(t,n):
np.append(k[0],subdivision(k)[0])[i]
np.append(k[1],subdivision(k)[1])[i]
t=2**r
r=r+1
n=2**r