计算相交矩形的角点和边
Calculating Cornerpoints and Edges of intersecting Recangles
我正在寻找一种算法来找到多个重叠 矩形 [=] 的 外边缘 和 角点 42=].
给定一些矩形,它们平行于轴,定义为:x,y 、宽度 和 高度。
需要新兴形状的 角点,定义为:x、y和 2 个相邻的 cornerpoints.
还需要边,定义为:2 角点和方向 (北、东、南、西).
如果矩形完全在其他矩形里面,则可以忽略。
算法不需要非常优化,内存也不是问题。
这可以通过使用多边形裁剪算法来解决;例如,Vatti 或 Martinez 建议的那些。使用此技术:
- 将每个矩形视为一个多边形(一条由追踪矩形边缘的线组成的路径)。裁剪算法假定每个矩形都沿相同方向追踪。
- 找到所有多边形的并集。
- 生成的形状将只包含位于多边形外缘的点
(这些是您正在寻找的角点)。
不过,如果生成的形状形成一个洞,则存在一种极端情况。这通常会沿着与其余形状相反的方向进行追踪:
我不知道这是否重要,但如果重要,您需要反转任何孔的方向并重新计算形状及其孔的并集,直到不再出现孔为止。
要获取边缘方向,多边形裁剪器实现需要在裁剪边缘时保存有关边缘的信息(在本例中为边缘方向)。
我正在寻找一种算法来找到多个重叠 矩形 [=] 的 外边缘 和 角点 42=].
给定一些矩形,它们平行于轴,定义为:x,y 、宽度 和 高度。
需要新兴形状的 角点,定义为:x、y和 2 个相邻的 cornerpoints.
还需要边,定义为:2 角点和方向 (北、东、南、西).
如果矩形完全在其他矩形里面,则可以忽略。
算法不需要非常优化,内存也不是问题。
这可以通过使用多边形裁剪算法来解决;例如,Vatti 或 Martinez 建议的那些。使用此技术:
- 将每个矩形视为一个多边形(一条由追踪矩形边缘的线组成的路径)。裁剪算法假定每个矩形都沿相同方向追踪。
- 找到所有多边形的并集。
- 生成的形状将只包含位于多边形外缘的点 (这些是您正在寻找的角点)。
不过,如果生成的形状形成一个洞,则存在一种极端情况。这通常会沿着与其余形状相反的方向进行追踪:
我不知道这是否重要,但如果重要,您需要反转任何孔的方向并重新计算形状及其孔的并集,直到不再出现孔为止。
要获取边缘方向,多边形裁剪器实现需要在裁剪边缘时保存有关边缘的信息(在本例中为边缘方向)。