检测分两步进行,首先是一个收敛测试,圆的起点和终点一定要非常接近,近到几乎相连。不过这也需要有适当的余地,因为在不提供直接的视觉反馈的情况下,
用户可能画不圆或画过头。这里适用的像素距离是60个像素,大约是视图大小的1/3。
第二个测试检查中心点周围的移动,它合计移动的弧度,在这个正圆中应该等于360度,容许45度范围内的移动。
通过这两个测试之后,算法生成一个无框矩形,并根据原手势上的各点的几何平均值确定矩形中心。该结果被赋给圆形实例变量。
它不是一个完美的检测系统,不过这足以为许多iPhone应用程序提供相当好的圆形检查
代码:
#define POINT(X) [[self.points objectAtIndex:X] CGPointValue]