我写了一个布尔值,检查一个点是否在填充矩形的给定距离内
矩形由其左下角及其宽度和高度
定义答案 0 :(得分:2)
这是家庭作业吗?无论如何。 假设你的意思是适当的距离,如“距离矩形的最近点之间的距离”:
int IsWithinDistance(int pointX, int pointY, int rectX, int rectY, int rectWidth, int rectHeight, int distanceThreshold)
{
int x2 = rectX + rectWidth;
int y2 = rectY + rectHeight;
int xDiff = (pointX < rectX) ? rectX - pointX : pointX - x2;
int yDiff = (pointY < rectY) ? rectY - pointY : pointY - y2;
int distance2;
xDiff = (xDiff < 0) ? 0 : xDiff;
yDiff = (yDiff < 0) ? 0 : yDiff;
distance2 = xDiff * xDiff + yDiff * yDiff;
return distance2 < (distanceThreshold * distanceThreshold);
}
答案 1 :(得分:0)
要找到任意两点之间的距离,您可以使用:
CGFloat distanceBetweenPoints(CGPoint pt1, CGPoint pt2)
{
CGFloat dx = pt2.x - pt1.x;
CGFloat dy = pt2.y - pt1.y;
return sqrt(dx*dx + dy*dy);
}
如果您愿意,可以使用它来查找到矩形中心的距离或另一个点。
CGFloat distanceToRect = distanceBetweenPoints( aPoint, aRect.center );
答案 2 :(得分:-3)
我的方法是这样的。 (这假设y随着你的上升而增加。)
BOOL IsWithinDistance(POINT pt, RECT rc, int distance)
{
return (pt.x > (rc.left - distance) &&
pt.x < (rc.right + rc.width + distance) &&
pt.y > (rc.bottom - distance) &&
pt.y < (rc.bottom + rc.height + distance));
}