Найдите все точки вне четырехугольника (не прямоугольника)

Вопрос

Я использую PIL, и у меня есть часть кода, которая требует найти, какие точки находятся за пределами четырехугольника. Если у меня есть такие точки, как [(50, 20), (230, 40), (200, 190), (100, 200)], как я могу быстро заполнить черным цветом все точки за пределами этой области?

Мне нужна такая функция, как addBorder(points, img), где addBorder([(50, 20), (230, 40), (200, 190), (100, 200)], Image.open('lenna.png')) будет возвращаться:

output

Что я нашел до сих пор

Этот ответ выглядел полезным, пока я не понял, что ссылка не работает. Если кто-нибудь знает, существует ли страница, на которую есть ссылка в этом ответе, где-то еще, я бы хотел ее увидеть. Я попробовал несколько алгоритмов, прежде чем понял, что они работают только для прямоугольников.

Может кто-нибудь помочь мне?


person Luke Taylor    schedule 06.06.2015    source источник
comment
Любая точка будет либо между двумя отрезками, либо снаружи. Зная, что вы должны быть в состоянии понять это. Это не сложная проблема.   -  person Mark Ransom    schedule 06.06.2015
comment
Страница, на которую есть ссылка в этом ответе, заархивирована здесь< /а>.   -  person Kkelk    schedule 06.06.2015


Ответы (1)


Я не нашел способа, который не включает проверку каждого пикселя, но нашел свой ответ в правилах заполнения. Я использовал четное-нечетное правило.

person Luke Taylor    schedule 16.07.2016