点轴对齐矩形测试?

jma*_*erx 2 c c++ algorithm

我的矩形结构有以下成员:x,y,width,height.

给定一个点x,y知道x,y是否在矩形内部的最快方法是什么?我会做很多这些,所以速度很重要.

Ben*_*ley 6

这就是我通常这样做的方式.给定一个在矩形之外的点,这将在4个案例中的3个中进行较少的测试.有时只进行一次测试.

if(point.x < rect.x) return false;
if(point.y < rect.y) return false;
if(point.x >= rect.x + rect.width) return false;
if(point.y >= rect.y + rect.height) return false;
return true;
Run Code Online (Sandbox Code Playgroud)

您使用哪一个应取决于您是否预期会发生更多碰撞或更多未命中.