Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Python] Помогите решить задачу


Автор: Grasstree 16.4.2013, 10:41
Помогите, пожалуйста, я совсем новичок!

Есть произвольный полигон и точка - для обоих фигур указаны координаты. Нужно создать сетку, чтобы затем определить, в какой из ячеек точка и входит ли эта ячейка полностью в полигон, то есть принадлежит ли точка полигону или нет (то есть решение задачи point-in-polygon методом grid cells).

Разбила эту задачу на части. Сейчас на этапе: есть лист x-координат сетки и y-координат сетки. 
Подскажите, каким образом получить для каждой ячейки координаты ее углов и затем сохранить их для последующего сравнения с координатами точки и полигона? 
Или может быть есть какие-то другие идеи, как реализовать этот алгоритм?


Автор: похмелье 16.4.2013, 15:47
Код

from itertools import product


xlist = (1, 2, 4, 6, 9)
ylist = (10, 20, 30, 60)

for i, j in product(range(len(xlist) - 1), range(len(ylist) - 1)):
    x = xlist[i]
    y = ylist[j]
    for dx, dy in product((0, xlist[i + 1] - x), (0, ylist[j + 1] - y)):
        print((x + dx, y + dy), end=" ")
    print()


Код

(1, 10) (1, 20) (2, 10) (2, 20) 
(1, 20) (1, 30) (2, 20) (2, 30) 
(1, 30) (1, 60) (2, 30) (2, 60) 
(2, 10) (2, 20) (4, 10) (4, 20) 
(2, 20) (2, 30) (4, 20) (4, 30) 
(2, 30) (2, 60) (4, 30) (4, 60) 
(4, 10) (4, 20) (6, 10) (6, 20) 
(4, 20) (4, 30) (6, 20) (6, 30) 
(4, 30) (4, 60) (6, 30) (6, 60) 
(6, 10) (6, 20) (9, 10) (9, 20) 
(6, 20) (6, 30) (9, 20) (9, 30) 
(6, 30) (6, 60) (9, 30) (9, 60) 

Автор: Grasstree 17.4.2013, 11:22

похмелье, спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)