iOS图形手势识别框架SGGestureRecognizer

本文介绍了iOS图形手势识别框架SGGestureRecognizer的实现原理,包括手势采样、重新采样、标准化过程及手势识别。该框架支持自定义图形手势,如五角星、三角形等,适用于执行特定操作或输入命令。
摘要由CSDN通过智能技术生成

简介

苹果官方为我们提供了简单手势的识别器,但对于图形手势,例如五角星、三角形等的识别,就需要自己实现了。通过识别这些手势,可以去执行特定的操作,或是输入公式、释放魔法等,可以为App增光添彩。

下载与使用

该框架已经上传到github,点击这里前去下载,欢迎Star!
有关该框架的使用在github上已经写明,这里不再赘述,本文主要介绍的是图形手势识别的实现原理与框架的结构。

框架的结构

一个图形手势是一条曲线,可以用采样点来描述,存储采样点的类为SGGesturePoint,使用它替代CGPoint,更符合面向对象的操作规范。
采样点的集合为SGGestureSet,它用于记录所有采样点以及手势的名称,以及标准化以后的手势向量。
手势向量使用SGGestureVector存储,向量通过将所有采样点的(x,y)坐标依次插入并标准化得来,手势向量用于进行余弦相似度计算。
用于标准化集合、生成向量、保存、加载与识别手势的类为SGGestureManager,它是一个单例对象,正常使用中只需要关心manager和set两个对象,其他对象由manager负责管理。

手势采样的过程

1.采样

Demo中给出的是使用UIPanGestureRecognizer完成的采样,每个采样点都是一个CGPoint,将其包装秤NSValue并且存储在数组中。

2.生成集合

使用SGGestureSet的gestureSetWithName:points:方法,传入手势的名称与采样点(NSValue数组),即可使用采样点初始化一个集合。

3.重新采样

将集合中的所有采样点构成的图形看作折线,根据所需要的采样密度确定采样间距interval,并在原曲线上生成均匀分布的采样点,生成采样点的代码如下&

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值