Как мне подходить к отправке двух списков кортежей через этот цикл for? (также не разрешено использовать модули) - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь запустить эту точку в алгоритме многоугольника, но индексация - это беспорядок, или я просто не уверен, как правильно зациклить код, чтобы получить список из 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. Это говорит о том, что код работает, но не повторяется.

Извините, если это неясное объяснение, я 'Я не опытный и получил довольно отвратительное задание для тех, кто программирует менее месяца. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...