任意多边形与矩形的相交,其实就是判断多条线段是否与这个矩形相交,再简单点就是判断线段是否与矩形的每一条边相交了。那现在,我们先来看看判断一条线段与矩形的其中一条线段的相交的情况(上方水平线):
(图形中的a/b=d/c如果看不明白的,我也无语了,回去翻下几何图形的那中学课本。)图中已知的是红色的线段,就是要检测的线段,其起点就是star,重点是end,其坐标是已知的。图中的蓝色线是辅助理解的线。而图中的y0,x1,x2是矩形的其中一条线的参数,那,下面我们从代码去理解一下:
publicstaticboolPointInLine(Vector2 point, Vector2[] vertices,floataccuracy)
{if(point==null||(vertices==null||vertices.Length<2))returnfalse;
Rect pointRect=newRect();
pointRect.Width=accuracy*2;
pointRect.Height=accuracy*2;
pointRect.Center=point;returnLineIntersectRect(vertices, pointRect);
}
其中point参数就是要检测的点,vertices是被检测的线段集合,accuracy是其