可以通过着名的光线投射算法轻松确定点是否在凸面多边形中。点随机形状多边形?
def point_inside_polygon(x, y, poly):
""" Deciding if a point is inside (True, False otherwise) a polygon,
where poly is a list of pairs (x,y) containing the polygon's vertices.
The algorithm is called the 'Ray Casting Method' """
n = len(poly)
inside = False
p1x, p1y = poly[0]
for i in range(n):
p2x, p2y = poly[i % n]
if y > min(p1y, p2y):
if y <= max(p1y, p2y):
if x <= max(p1x, p2x):
if p1y != p2y:
xinters = (y-p1y) * (p2x-p1x)/(p2y-p1y) + p1x
if p1x == p2x or x <= xinters:
inside = not inside
p1x, p1y = p2x, p2y
return inside
但是如果多边形不是完全凸的呢?
如何判断一个点是否在随机形状给定边界点的多边形?
说我有边界点的,像这样
我怎么可能做一个多边形?
最好,如果在Python中,但任何通用解决方案也欢迎。
光线投射算法不是在非凸的情况下工作吗?维基链接:https://en.wikipedia.org/wiki/Point_in_polygon – simonzack
这是一个非常漂亮的多边形样本,就像毕加索一样。 以下是对算法的帮助:http://alienryderflex.com/polygon/ – DhruvPathak
边界*点*?不是边缘?我们是否应该从嘈杂的图像中插入多边形?你想象中的图片不是一个多边形。它甚至没有关闭或连续。 – user2357112