计算交叉重复的角点和边

时间:2015-12-02 21:12:23

标签: algorithm geometry collision-detection intersection

我正在寻找一种算法来查找多个重叠矩形外边角点

给出了许多矩形,它们与轴平行,由以下定义: x y width < / strong>和身高

通缉新兴形状的角点,定义如下: x y 和2个相邻角点

通缉也是边缘,定义为:2 cornerpoints 方向 (北,东,南,西)

如果矩形完全在其他内容中,则可以忽略它。

Example of the problem

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

1 个答案:

答案 0 :(得分:0)

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

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

但是,如果生成的形状形成一个洞,则有一个角落的情况。这通常与其他形状的方向相反:

enter image description here

我不知道这是否重要,但如果确实如此,则需要反转任何孔的方向,并从形状和孔中重新计算联合,直到不再出现任何孔。

要获得边缘方向,多边形限幅器实现需要在剪切它们时保存边缘信息(在本例中为边缘方向)。