2016-09-19 76 views
0

我有一个主(红色)矩形和其他几个矩形,它们随机与主矩形相交。如何获得CGRect与多个相交的非交叉区域?

如何获得主矩形(红色区域)的非交叉区域?

see preview

+0

如果您有每个矩形的四个顶点的坐标,则可以从红色矩形的总表面中减去红色矩形内每个灰色矩形的部分的表面。这不应该太难实现。 –

回答

0

这取决于你的意思是“有”和“得到”什么非常多。什么是输入和输出格式?你想要一个点的序列,还是仅仅是该区域?这是为了一个通用的解决方案,还是只是这个简化的情况?

对于一个快速,通用的解决方案,我强烈推荐BOOST polygon library(披露:我是BOOST会议演示文稿的一位评论员)。这可以处理任意的多边形,包括孔,并且完成所有基本的多边形操作。

一个简单的多边形是一系列点。您可以制作多组多边形。对于这种情况,请声明所有的多边形;将红色矩形放入A组,将灰色矩形放入B组。然后A-B返回所需的显示多边形。