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

发布于 2015-07-08 12:38:19
如果您碰巧使用了Qt,那么可以将该交集计算为QPolygonF交集。大致如此:
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坐标)。
现在计算面积(使用前面提到的鞋带公式):
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;
}我这里的代码:公共域
https://stackoverflow.com/questions/8011267
复制相似问题