geometry - 两个矩形之间的距离

标签 geometry distance cgrect cgpoint cgsize

如何求两个矩形之间的距离?相交的距离应返回 0。

最佳答案

这里有一个快速函数,用于计算由 CGSize 表示的两个 CGRect 之间的距离:

CGSize CGSizeDistanceBetweenRects(CGRect rect1, CGRect rect2)
{
    if (CGRectIntersectsRect(rect1, rect2))
    {
        return CGSizeMake(0, 0);
    }

    CGRect mostLeft = rect1.origin.x < rect2.origin.x ? rect1 : rect2;
    CGRect mostRight = rect2.origin.x < rect1.origin.x ? rect1 : rect2;

    CGFloat xDifference = mostLeft.origin.x == mostRight.origin.x ? 0 : mostRight.origin.x - (mostLeft.origin.x + mostLeft.size.width);
    xDifference = MAX(0, xDifference);

    CGRect upper = rect1.origin.y < rect2.origin.y ? rect1 : rect2;
    CGRect lower = rect2.origin.y < rect1.origin.y ? rect1 : rect2;

    CGFloat yDifference = upper.origin.y == lower.origin.y ? 0 : lower.origin.y - (upper.origin.y + upper.size.height);
    yDifference = MAX(0, yDifference);

    return CGSizeMake(xDifference, yDifference);
}

关于geometry - 两个矩形之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10347085/

相关文章:

iphone - 围绕左上角旋转矩形

python - 使用opencv和python计算相机到物体的距离

math - 寻找投影和 z 距离

android - 在 Android 上使用 OpenGL ES 围绕另一个球体旋转

ios - 在 iOS 开发中,使用 Core Graphics 和/或 Quartz 2D,如何以看起来像球体的方式绘制一个充满渐变的圆?

wpf - 旋转几何路径

php - 查找所提供的纬度和经度的最近距离记录的过程

swift - 将自定义 CGRect 函数从 Objective-C 转换为 Swift 时遇到问题

ios - CABasicAnimation CGRect 扩大不工作

swift - Nil 与预期的参数类型 CGAffineTransform 不兼容