繁体   English   中英

如何计算两个矩形的重叠百分比?

[英]How can you calculate the percentage overlap of two rectangles?

我写了一个绘图功能,绘制各种屏幕上的精灵。 这些精灵只能重叠到一个点。 如果它们有很多重叠,它们会变得太模糊。 因此,我需要检测这些精灵何时重叠太多。 幸运的是,问题被简化,因为精灵可以被视为正交矩形。 我想知道这些矩形重叠多少。 现在,我只是通过测试一个矩形中的每个像素来强制它,以查看另一个矩形是否包含它。 我计算这些并计算重叠百分比。 我认为这可能是一种更好,更少蛮力的方法。 我可以使用什么算法来确定这个?

我正在使用wxwidgets。

结果取决于您如何定义重叠百分比,以保持对称,我会像这样编码:

double CalculatePercentOverlap(const wxRect& rect1, const wxRect& rect2)
{
  wxRect inter = rect1.Intersect(rect2);
  if (inter.IsEmpty())
    return 0;
  return (double)(inter.GetWidth()*inter.GetHeight()) * 2.0 /
    (double)(rect1.GetWidth()*rect1.GetHeight() + 
             rect2.GetWidth()*rect2.GetHeight());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM