利用著名的光线投射算法,可以很容易地确定一个点是否在凸多边形中。在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编写,但也欢迎任何通用的解决方案。在