首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >矩形-矩形相交面积

矩形-矩形相交面积
EN

Stack Overflow用户
提问于 2011-11-04 15:00:18
回答 6查看 9.3K关注 0票数 27

下面是两个矩形。给定矩形顶点的坐标- (x1,y1).(x8,y8),如何计算重叠区域(下图中为白色)的面积?

请注意:

  1. 点的坐标可能是
  2. 矩形可能重叠,也可能不重叠
  3. 假设矩形不重叠或在点或线重叠时面积为0。
  4. 如果一个矩形位于另一个内,则计算较小矩形的面积。

EN

Stack Overflow用户

发布于 2015-07-08 12:38:19

如果您碰巧使用了Qt,那么可以将该交集计算为QPolygonF交集。大致如此:

代码语言:javascript
复制
QPolygonF p1,p2, intersected;
p1 << QPointF(r1x1,r1y1) << ... << QPointF(r1x4, r1y4);
p2 << QPointF(r2x1,r2y2) << ... << QPointF(r2x4, r2y4);
intersected = p1.intersected(p2);

float area = polyArea(intersected); // see code block below

(r1 =矩形1,r2 =矩形2,4个分别为x和y坐标)。

现在计算面积(使用前面提到的鞋带公式):

代码语言:javascript
复制
inline float polyArea(const QPolygonF& p)
{
    //https://en.wikipedia.org/wiki/Polygon#Area_and_centroid
    const int n = p.size();
    float area = 0.0;
    for (int i=0; i<n; i++)
    {
        area += p[i].x()*p[(i+1)%n].y() - p[(i+1)%n].x()*p[i].y();
    }
    if (area < 0)
        return -0.5*area;
    else
        return 0.5*area;
}

我这里的代码:公共域

票数 0
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8011267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档