我想检查一个圆是否与凸多边形相交或位于其内部。我找到了一种绝妙的方法来检测点是否在多边形内(来自这里):
public boolean insidePolygon(Vector2 [] vertices, Vector2 p)
{
int i, j;
boolean c = false;
int nvert = vertices.length;
for (i = 0, j = nvert - 1; i < nvert; j = i++)
{
if (((vertices[i].Y > p.Y) != (vertices[j].Y > p.Y)) &&
(p.X < (vertices[j].X - vertices[i].X) * (p.Y - vertices[i].Y) / (vertices[j].Y - vertices[i].Y) + vertices[i].X))
c = !c;
}
return c;
}
这对于单个点来说完美地工作,但我们是否可以修改它以检查给定半径的圆是否在多边形内?我想这是可能的,因为圆实际上就是一个更大的点,但我仍然没有成功...