[英]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.