1

我正在开发一个 iOS 应用程序,我需要能够看到屏幕范围内有多少 CGPath 以确保有足够的空间让用户仍然可以触摸。问题是,当形状在拐角处时,当路径在拐角处时,我通常会使用的所有方法(以及我能想到的所有尝试)都会失败。

这是一张照片:在此处输入图像描述

我如何计算屏幕上有多少该形状?

4

2 回答 2

3

显而易见的答案是通过像素绘制凭经验进行操作,或者通过多边形裁剪进行分析。

因此,要凭经验进行操作,您将创建CGBitmapContext视口的大小,将其清除为已知颜色,例如 (0, 0, 0),然后以另一种已知颜色在多边形上绘制,例如 (1, 1, 1) 然后只需遍历位图上下文中的所有像素,然后将您可以找到的总数相加。这可能相当昂贵,但如果有帮助,您可以使用较低分辨率的上下文来获得更近似的结果。

要进行分析,您将运行多边形裁剪算法,例如此处描述的算法,以从原始多边形派生一个新多边形,这只是它实际在屏幕上的那部分。然后,您将使用任何常规公式获得该区域。

裁剪凸多边形实际上比凹多边形容易得多,因此如果您的多边形具有固定形状,那么您可以考虑使用三角测量算法,例如耳朵裁剪分解为单调边缘,然后执行裁剪和面积计算在那些而不是原来的。

于 2012-06-01T00:02:27.330 回答
0

您可以使用这种方法得到一个近似值:

  • 设 reg 为屏幕与形状边界框的交点
  • 在reg中选择N个随机点并检查它们是否包含在形状中
  • 形状的面积可以通过(reg 的面积)*(形状中包含的点数)/N 来估计

您可以根据 reg 的大小选择参数 N 以获得良好且快速的近似值

于 2012-06-07T13:28:11.250 回答