用于确定两个相交的矩形的总面积的算法是什么?可以从坐标轴上旋转?
答案 0 :(得分:18)
这里大致是你需要做的,尽可能一般地表达,但涵盖所有可能性:
这是矩形可以交叉的所有方式:
<强>更新强>
我有一些想法,对交叉点进行分类的最佳方法是围绕每个矩形的周长进行追踪,并计算每条边与另一条边相交的次数。你会得到一个矢量,例如对于六边交叉区域:{1,1,1,1},{0,1,1,1}和8:{2,2,2,2},{2,2,2,2} 。您需要检查的两个特殊情况是,当一个矩形完全包围另一个矩形并且边缘在线时。您需要仔细检查,但这将是功能对交叉点进行分类的起点。
答案 1 :(得分:3)
区域(R1联合R2)=区域(R1)+区域(R2) - 区域(R1交叉点R2),因此您可以计算交叉区域以获得联合区域。
两个矩形(或两个凸多边形)的交点很简单:
所以它是这样的:
L中的点凸壳是你的交点。由于L中的每个点都在交叉点的边界上,因此您可以对其进行三角测量并计算其面积。易:
三角形的面积由苍鹭公式给出:
但要注意独立地计算s - a,s - b和s - c,因为你可能会遇到舍入错误(如果c~a和b&lt;&lt; a,例如?)
答案 2 :(得分:1)
好的,你有3种可能性: 1.矩形不相交 2.一个矩形完全包含在另一个内(或者它们重合) 交点的结果是一些凸多边形。您可以通过将多边形区域划分为三角形来计算多边形的面积(通过从第一个顶点绘制线段到除了相邻的一个顶点之外的所有其他线段)。你总结一下这些区域。你可以使用希罗德定理来计算三角形的面积,这就是中学几何学所在的地方。