我需要估计任意大小和方向的两个矩形的重叠率。
我知道如何使用Sutherland-Hodgman算法执行精确计算,该算法可以针对这种情况进行优化。
无论如何,因为我需要集中使用该功能并且不需要完美的准确性(比如可以容忍10%的误差),我想知道它是否无法以更快的方式进行评估,最好是无分支的。
如果有帮助,可以假设两个矩形的长宽比相同,并且区域的比例不超过4。
更新:
对于未旋转的矩形,公式为
(min(W0,DX + W1) - max(-W0,DX-W1))。(min(H0,DY + H1) - max(H0,DY-H1))
如果两个因素中的任何一个为负数,则为零,其中DX
,DY
为中心坐标之间的差异,W
和H
表示相应的半尺寸。
当您改变相对旋转角度时,可能值得查看给定放置中心和给定尺寸的公共区域的曲线。
答案 0 :(得分:0)
Sutherland-Hodgman算法用于凸夹多边形与任意一个的交叉。我希望专门为凸凸案例设计的算法更快。
我对O'Rourke算法(O(m + n))有类似问题的实践经验 (两组成千上万个旋转矩形之间的交叉区域)。
Code link is here - convconv。 AFAIR,矩形可以进行一些简化。
我怀疑任何近似方法都能更快地找到结果且控制精度。