Я пытаюсь запустить эту точку в алгоритме многоугольника, но индексация - это беспорядок, или я просто не уверен, как правильно зациклить код, чтобы получить список из 0 и 1.
Я пробовал вложенный цикл for, но у меня нет опыта, чтобы заставить его работать правильно.
def cn_PnPoly(P, V): # P - Point; V - Polygon
n = len(V) - 1
cn = 0 # the crossing number counter
# loop through all edges of the polygon
i = 0
# while i<n: # edge from V[i] to V[i+1]
for i in range(n):
# upward crossing or downward crossing
if (V[i][1] <= P[i][1] and V[i + 1][1] > P[i][1]) or (V[i][1] > P[i][1] and V[i + 1][1] <= P[i][1]):
# compute the actual edge-ray intersect x-coordinate
vt = (P[i][1] - V[i][1]) / (V[i + 1][1] - V[i][1])
# if P[0] > (V[i][0] + vt * (V[i+1][0] - V[i][0])): # P.x > intersect - ray toward left
if P[i][0] < (V[i][0] + vt * (V[i + 1][0] - V[i][0])): # P.x < intersect - ray toward right - original
cn += 1 # a valid crossing of y=P[1] right of P.x
i += 1
print(n)
raycast.append(cn & 1)
В идеале сценарий должен выводить серии значений 0 и 1, представляющих, является ли илине кортеж (координаты) находятся внутри многоугольника или нет. Значения должны добавляться к переменной cn + = 1, и в данный момент я печатаю один 0. Это говорит о том, что код работает, но не повторяется.
Извините, если это неясное объяснение, я 'Я не опытный и получил довольно отвратительное задание для тех, кто программирует менее месяца. Спасибо!