我正在开发一个iOS应用程序,我需要能够看到屏幕范围内有多少CGPath,以确保有足够的空间让用户仍然可以触摸。问题是,当形状在角落时,我通常会使用的所有方法(以及我能想到的所有方法)都会在路径位于角落时失败。
这是一张照片:
如何计算屏幕上有多少形状?
答案 0 :(得分:3)
明显的答案是通过像素绘画凭经验进行,或通过多边形裁剪进行分析。
因此,根据经验,你要创建一个CGBitmapContext
视口大小,将其清除为已知颜色(如0,0,0),用另一种已知颜色在多边形上绘画,比如说(1,1,1)然后只需遍历位图上下文中的所有像素,并将您可以找到的总数加起来。这可能相当昂贵,但如果有帮助,您可以使用较低分辨率的上下文来获得更接近的结果。
要进行分析,您需要运行多边形裁剪算法,例如described here,以从原始多边形派生新多边形,这只是它实际在屏幕上的那部分。然后你可以使用任何常规公式获得该区域。
剪切凸多边形实际上比凹多边形容易得多,因此如果多边形具有固定形状,则可以考虑使用三角剖分算法,例如ear clipping或decomposition to monotone edges和然后对那些而不是原始进行剪裁和区域计算。
答案 1 :(得分:0)
您可以使用此方法获得近似值:
您可以根据reg的大小选择参数N,以获得良好且快速的近似值