计算相交矩形的角点和边

Calculating Cornerpoints and Edges of intersecting Recangles

我正在寻找一种算法来找到多个重叠 矩形 [=] 的 外边缘 角点 42=].

给定一些矩形,它们平行于轴,定义为:xy 宽度高度

需要新兴形状的 角点,定义为:xy和 2 个相邻的 cornerpoints.

还需要,定义为:2 角点方向 (北、东、南、西).

如果矩形完全在其他矩形里面,则可以忽略。

算法不需要非常优化,内存也不是问题。

这可以通过使用多边形裁剪算法来解决;例如,Vatti 或 Martinez 建议的那些。使用此技术:

  • 将每个矩形视为一个多边形(一条由追踪矩形边缘的线组成的路径)。裁剪算法假定每个矩形都沿相同方向追踪。
  • 找到所有多边形的并集。
  • 生成的形状将只包含位于多边形外缘的点 (这些是您正在寻找的角点)。

不过,如果生成的形状形成一个洞,则存在一种极端情况。这通常会沿着与其余形状相反的方向进行追踪:

我不知道这是否重要,但如果重要,您需要反转任何孔的方向并重新计算形状及其孔的并集,直到不再出现孔为止。

要获取边缘方向,多边形裁剪器实现需要在裁剪边缘时保存有关边缘的信息(在本例中为边缘方向)。