一种在触摸屏设备中生成滑动轨迹的方法与流程

文档序号:16427847发布日期:2018-12-28 19:55阅读:746来源:国知局
一种在触摸屏设备中生成滑动轨迹的方法与流程

本发明涉及计算机图形处理领域,尤其涉及一种在触摸屏设备中生成滑动轨迹的方法。

背景技术

目前的电子产品一般都具有手写功能,例如,手写签批,手写批注,手写签名,手写识别,手写记笔记等功能。

当触摸笔或者人的手指在设备屏幕上移动时,设备一般以触摸事件的方式通知相应的处理软件当前触摸笔或者人的手指所处的位置。由于设备的处理能力和事件通知机制存在一定局限性(比如,通知触摸事件的时间间隔不均匀),以及用户在用手指或者触摸笔进行手写操作时可能有抖动,因此,通过手写操作在设备屏幕上形成的触摸轨迹存在有褶皱,平滑度不够的问题。



技术实现要素:

本发明的实施例提供了一种在触摸屏设备中生成滑动轨迹的方法,实现了在具有手写功能的电子设备上执行手写操作时,能够形成平滑的滑动轨迹,解决了现有技术中的手写操作在设备屏幕上形成的滑动轨迹平滑度不够的问题。为达到上述目的,本发明的实施例提供了一种在触摸屏设备中生成滑动轨迹的方法,包括以下步骤:接收所述触摸屏设备发送的触点轨迹,并根据触点对应的触摸发生的时间顺序依次获取所述触点轨迹上两个相邻的触摸点;在依次获取的每两个相邻的触摸点之间的触点轨迹上随机选取两个点;根据所选取的两个点之间,以及所选取的两个点与依次获取的两个相邻的触摸点之间的位置关系,得到贝塞尔曲线的两个控制点;

基于所得到的两个控制点,对依次获取的每两个相邻的触摸点之间进行贝塞尔曲线拟合,以生成滑动轨迹。

上述步骤中,在得到两个相邻的触摸点之间的控制点之后,就可以在该两个触摸点之间拟合出一段贝塞尔曲线,如此,根据用户的触摸顺序,不断在触点轨迹上两个相邻的触摸点之间拟合一段贝塞尔曲线,便可得到整个触点轨迹所对应的贝塞尔曲线。

可选地,校正所选取的两个点,以得到贝塞尔曲线的控制点的步骤为计算两个相邻的触摸点和所选取的两个点共四个点中,两两相邻的点之间的中点;计算中点之间连线的长度,并计算长度之间的比值;根据比值以及中点,校正所选取的两个点的位置,分别平移所选取的两个点至所述位置或者在所述位置上绘制两个点,以得到贝塞尔曲线的控制点。

可选地,计算两个相邻的触摸点和所选取的两个点共四个点中,两两相邻的点之间的中点的步骤为:计算两个相邻的触摸点的起点和靠近所述起点的选取点之间的起始中点,所选取的两个点之间的过渡中点,所选取的另一个点与所述两个相邻的触摸点的终点之间的终止中点。

上述计算中点的步骤将相邻的两个触摸点的其中一个触摸点作为两个触摸点之间的一段贝塞尔曲线的起点,另一个触摸点作为该段贝塞尔曲线的终点,分别计算起点与靠近起点的选取点之间的中点,两个选取点之间的中点,以及另一个选取点与终点之间的中点,由于校正所选取两个点的位置和相邻的两个触摸点之间的中点基本无关,因此,上述步骤无需计算两个相邻的触摸点之间的中点。

可选地,计算中点之间连线的长度的步骤为:计算起始中点和过渡中点连线的第一长度,过渡中点和终止中点的第二长度,以及起始中点和终止中点的第三长度。

可选地,计算长度之间的比值的步骤为:计算第一长度与第一长度和第二长度之和的比值;计算第二长度与第二长度和第三长度之和的比值。

可选地,在基于所得到的控制点,对触点轨迹进行曲线拟合,以生成滑动轨迹之前还包括调整控制点和两个相邻的触摸点之间的距离的步骤。

可选地,生成滑动轨迹之前还包括:计算待生成滑动轨迹的曲线的长度,根据所计算的长度,计算所述曲线上两个相邻的触摸点之间的坐标点的数量;基于所述数量和所述两个相邻的触摸点的直径,确定所述坐标点的直径;根据所述坐标点的直径,在所述两个相邻的触摸点之间进行贝塞尔曲线拟合,以生成宽度可变的滑动轨迹。

可选地,坐标点的数量的获取步骤为:建立坐标系,将所述待生成滑动轨迹的曲线映射到所述坐标系;根据所述待生成滑动轨迹的长度和预设的坐标点之间的间距,得到所述曲线上坐标点的数量。

触摸点直径的计算步骤为:获取触摸点的触摸时间;计算相邻的两个触摸点的触摸时间差;根据所述相邻的两个触摸点之间的距离和所述触摸时间差,得到所述两个触摸点之间的触摸速度;根据所述触摸速度,确定所述相邻的两个触摸点中,触摸时间靠后的触摸点的直径。

可选地,得到当前两个触摸点之间的触摸速度之后还包括:根据上一个相邻的两个触摸点之间的触摸速度,以及设定的权重值,调整所得到的当前相邻的两个触摸点之间的触摸速度。

可选地,得到贝塞尔曲线的控制点之后还包括:基于所得到的控制点,绘制出两个相邻的触摸点之间的曲线,并将曲线保存到位图文件中;在绘制下一对相邻的触摸点之间的曲线时,调用上述的位图文件。

可选地,生成滑动轨迹的步骤为:在绘制缓冲区对触点轨迹进行曲线拟合,将所绘制的贝塞尔曲线发送到显示缓冲区进行显示。

可选地,获取触摸轨迹上两个相邻的触摸点的步骤为:获取触摸轨迹发送的触摸点的坐标;获取所述触摸屏设备发送的触点轨迹上触摸点的坐标;根据所获取的触摸点的坐标,计算所述触点轨迹上两个相邻的触摸点的距离;如果所述距离小于预定阈值,则舍弃所述两个相邻的触摸点的其中一个,使得未舍弃的触摸点和下一个触摸点之间的距离等于或者大于所述预定阈值。

可选地,预定阈值的设置过程为:获取触摸屏设备的屏幕密度;根据所获取的屏幕密度和设定的屏幕密度阈值,得到待舍弃触摸点的数量;根据待舍弃触摸点的数量,得到触摸轨迹上相邻两个触摸点的平均距离;将平均距离作为预定阈值。

综上,本发明实施例提供了一种在触摸屏设备中生成滑动轨迹的方法,该方法在触点轨迹上两个相邻的触摸点之间随机选取两个点,通过求解两个相邻的触摸点和随机所选取的两个点共四个点之间的中点,以及中点之间连线的长度及比值的步骤,对随机选取的两个点的位置进行校正,使得该随机选取的两个点无限接近控制点,最后基于经校正得到的控制点,在两个相邻的触摸点之间绘制出一段贝塞尔曲线,或者根据计算出来的控制点的坐标值,直接绘制出两个控制点,根据绘制出的控制点,在两个相邻的触摸点之间绘制出一段贝塞尔曲线。通过连接触点轨迹上多对相邻的触摸点之间的贝塞尔曲线,最终得到与触点轨迹相对应的平滑的滑动轨迹。由上述可见,本发明实施例根据触摸点计算得到贝塞尔曲线的控制点,从而根据控制点精准地确定触点轨迹上两个相邻的触摸点之间曲线的形状,使得触摸屏设备可以根据每两个相邻的触摸点之间的控制点提供的方向信息,拟合出平滑的滑动轨迹,而不像现有技术中,直接将各个触摸点连接起来,导致连线之间产生硬角,不平滑。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种在触摸屏设备中生成滑动轨迹的方法的流程图;

图2为本发明实施例提供的一种根据控制点进行贝塞尔曲线绘制的示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本申请实施例提供了一种在触摸屏设备中生成滑动轨迹的方法,包括步骤:

s100:接收触摸屏设备发送的触点轨迹,并根据触点对应的触摸发生的时间顺序依次获取触点轨迹上两个相邻的触摸点。

在执行步骤s100时,由于触摸屏设备的更新速度很快,导致不同分辨率不同尺寸的触摸屏设备很多,设备碎片化程度高,而对于分辨率高的触摸屏设备,在获取触摸点时,获得的触摸点较多,取点密,从而影响触摸屏设备的响应速度,本申请实施例考虑到高分辨率设备和低分辨率设备有一个区分标准,即存在一个分辨率阈值,当高于该阈值时为高分辨率设备,当低于该阈值时为低分辨率设备,比如,屏幕密度高于320的手机设备为高分辨率手机,屏幕密度低于320的手机为低分辨率手机。本申请实施例在执行步骤s100时,首先获取触摸屏设备的屏幕密度,然后计算所获取的屏幕密度与设定的屏幕密度阈值的比值,得到二者的余数,该余数就是获取触摸点时需要舍弃的点的数量,根据触点轨迹上发送的触摸点的总量和舍弃点的数量,得到绘制贝塞尔曲线实际用到的触摸点的数量,结合触点轨迹的长度,得到触点轨迹上相邻的两个触摸点的平均距离,将所得到的平均距离作为相邻的两个触摸点距离的预定阈值。

需要说明的是,本申请实施例是在用户触摸的同时,对用户的触摸动作产生响应,绘制出平滑的触摸轨迹,因此,在生成最终的滑动轨迹之前并不能获取到触摸点的数量,上述实施例中提到的触点轨迹上发送的触摸点的总量,可以为本次触摸发生之前的上次触摸动作所发生的触摸点的数量。在实现过程中,可以将得到的触点轨迹映射到坐标系中,从而可以得到触点轨迹上各个触摸点的坐标值,进而根据坐标值,计算两点之间的距离以及两点之间的中点。

可选地,相邻的两个触摸点之间距离的预定阈值确定后,在执行步骤s100时,根据所获取的触点轨迹上的触摸点的坐标值,计算两个相邻的触摸点之间的实际距离,将该实际距离和上述的预定阈值进行比较,如果实际距离小于预定阈值,则舍弃相邻的两个触摸点的其中一个,使得未舍弃的触摸点和下一个触摸点之间的距离等于或者大于预定阈值。在触摸轨迹上两个相邻的触摸点中,可以舍弃触摸时间靠后的点,也可以舍弃触摸时间靠前的点。举例来说,假设获取到的两个相邻的触摸点分别是q1,q2,q1是触摸时间靠前的点,q2是触摸时间靠后的点,且q1和q2之间的距离小于预定阈值l,如果舍弃触摸点q2,则判断未舍弃的触摸点q1和下一个触摸点q3之间的距离是否小于预定阈值l,如果等于或者大于预定阈值l,则保留触摸点q3;如果仍然小于预定阈值l,则舍弃点q3,继续判断q1和q3的下一个触摸点之间的距离。如果舍弃触摸点q1,由于已经将q1和其前面的相邻触摸点q0之间的距离作出了判断,那么舍弃触摸点q1之后,q0和未舍弃的触摸点q2之间的距离一定大于预定阈值l。接下来就是继续将触摸点q2和触摸点q3之间的距离和预定阈值l之间做比较。

需要说明的是,计算触点轨迹的长度是已有技术,这里不再赘述。而且一般情况下,本申请实施例舍弃的是沿着触点轨迹的起始点至终止点方向靠后的触摸点,因为靠前的触摸点在判断上一对相邻的两个触摸点之间取舍的时候就已经确定了。

本申请实施例通过设定两个相邻的触摸点之间的预定阈值,使得在屏幕密度较大的触摸屏设备上执行手写操作时,也不需要取很多的触摸点,从而在绘制出平滑的滑动轨迹的同时,也不影响设备的响应速度,而且该预定阈值取的是触摸点之间的平均距离,一般情况下,该距离不至于过大,即使在屏幕密度低的触摸屏设备上执行手写操作时,也能保证用于生成滑动轨迹的触摸点的数量,进而保障了所绘制的滑动轨迹的质量。

如图2所示,在获取到两个相邻的触摸点之后,执行步骤s200:在依次获取的每两个相邻的触摸点之间的触点轨迹上随机选取两个点。如图所示,该相邻的两个触摸点分别为p0,p3,即两个相邻的触摸点之间的贝塞尔曲线的起始点是p0,终止点是p3。这里所说的起始点和终止点是根据触点轨迹的滑动方向确定的,其中,滑动方向可以根据触点轨迹上触点对应的触摸动作发生的时间确定。

需要说明的是,触摸点p0和p3是两个相邻的触摸点,为了描述清楚,如图2所示,对触摸点之间的距离进行了放大。

本申请可以运用三次贝塞尔插值算法在相邻的触摸点之间进行曲线拟合,所以需要根据触摸点p0和p3的坐标计算出两个控制点,设定触摸点p0和p3之间的、贝塞尔曲线的两个控制点为p1,p2,在p0和p3之间随机选取两个点a1和a2,为了方便计算,可以对a1,a2两个点和控制点p1,p2的位置关系进行预先设定。可以设定a1,a2在p1,p2之间,也可以设定p1,p2在a1,a2之间,也可以设定p1,a1在p2,a2之间等等。本申请实施例以假定两个点a1和a2在控制点p1和p2之间为例进行说明。则在步骤s300中,根据所选取的两个点之间,以及所选取的两个点与依次获取的两个相邻的触摸点之间的位置关系,得到贝塞尔曲线的两个控制点的步骤包括:计算p0和靠近p0的选取点a1之间的中点,该中点可以称之为起始中点,a1和a2之间的中点,该中点可以称之为过渡中点,a2和p3之间的中点,该中点可以称之为终止中点。

实际执行上述操作时,假定a1(x1,y1)和a2(x2,y2)在两个控制点之间,计算p0(x0,y0)和a1(x1,y1)之间的中点为m1(xc1,yc1),计算a1(x1,y1)和a2(x2,y2)之间的中点为m2(xc2,yc2),以及a2(x2,y2)和p3(x3,y3)之间的中点为m3(xc3,yc3)。

接着计算中点m1和m2之间连线的长度len1,中点m2和m3之间连线的长度len2,中点m1和m3之间连线的长度len3,并计算这三个长度之间的比值,计算比值的公式为:

k1=len1/(len1+len2);

k2=len2/(len2+len3);

根据比值k1,k2以及上述的中点m1,m2和m3,通过以下公式校正a1和a2的位置:

xm1=xc1+(xc2-xc1)*k1;

ym1=yc1+(yc2-yc1)*k1;

xm2=xc2+(xc3-xc2)*k2;

ym2=yc2+(yc3-yc2)*k2;

其中,(xm1,ym1)为在m1(xc1,yc1)的基础上,结合m2(xc2,yc2)以及k1的值,对m1进行平移得到的控制点p1的坐标。(xm2,ym2)为在m2(xc2,yc2)的基础上,结合p3((xc3,yc3))以及k2的值,对m2进行平移,得到的控制点p2的坐标。

经过上述的步骤,便可得到触点轨迹上每两个相邻的触摸点之间的贝塞尔曲线控制点。需要说明的是,得到控制点的位置后,可以将选取的两个点移动到计算出的控制点位置上,也可以在计算出的控制点位置上重新绘制控制点,从而根据移动后得到的控制点或者重新绘制后得到的控制点提供的曲线方向信息,绘制出从两个相邻的触摸点的其中一个触摸点出发,趋近于另一个触摸点的贝塞尔曲线。从而,在触点轨迹上每一对相邻的触摸点之间都绘制好贝塞尔曲线后,这些贝塞尔曲线两两相接,便可在触摸屏设备上呈现平滑的滑动轨迹。在实现过程中,也可以运用canvas技术来绘制滑动轨迹,canvas技术可以根据每段三次贝塞尔曲线选取的起始点,控制点和终止点绘制成触摸滑动轨迹,然后通过进一步的描边以及填充形成平滑的滑动轨迹并显示在触摸屏上。相比于现有技术中,直接把相邻的触摸点进行连接的曲线绘制方法,本申请实施例提供的曲线绘制方法减少了曲线中硬角的产生,能够得到平滑度较高的曲线。

可选地,在生成滑动轨迹之前,还包括调整控制点和两个相邻的触摸点之间的距离,具体可以通过调整控制点p1和p2的坐标来实现。在实现过程中,可以通过一个介于0和1之间的平滑度参数smooth_value对控制点p1和p2的坐标进行调整,调整过程为:

ctrl1_x=xm1+(xc2-xm1)*smooth_value+x1-xm1;

ctrl1_y=ym1+(yc2-ym1)*smooth_value+y1-ym1;

ctrl2_x=xm2+(xc2-xm2)*smooth_value+x2-xm2;

ctrl2_y=ym2+(yc2-ym2)*smooth_value+y2-ym2;

其中,ctrl1_x和ctrl1_y分别为调整后的控制点p1的横坐标和纵坐标,ctrl2_x和ctrl2_y分别为调整后的控制点p2的横坐标和纵坐标。

需要说明的是,经验证,平滑度smooth_value的值越大,得到的滑动轨迹越平滑,因此,可以结合实际情况,在允许范围内将平滑度适当调大,以进一步增强所生成的滑动轨迹的平滑度。

为了更好地呈现滑动轨迹,本申请实施例还提供了绘制粗细变化的贝塞尔曲线的方法,即通过计算两个相邻的触摸点之间的绘制速度来确定触摸点的直径大小。本申请实施例在采集触摸点时,读取所采集触摸点的触摸时间,根据该触摸时间,计算相邻的两个触摸点的触摸时间差,因为根据相邻的两个触摸点的坐标值,可以计算出两个触摸点之间的距离,根据距离和触摸时间差,就可以计算出两点之间的触摸速度,通过设定的速度和直径的对应关系,便可得到与触摸速度对应的直径大小。

因为实际执行方案的过程中,一般预先设定贝塞尔曲线路径上的第一个触摸点的直径,所以,在贝塞尔曲线路径上的第一个触摸点和第二个触摸点之间,根据触摸速度确定触摸点直径时,所确定的是第二个触摸点的直径。依此类推,相邻的两个触摸点中,根据触摸速度确定的是触摸时间靠后,即靠近贝塞尔曲线终点的触摸点的直径。

需要说明的是,触摸速度和触摸点的直径可以呈正比关系,也可以呈反比关系,只要触摸点的直径可以根据触摸速度呈现一定规律的变化即可。

为了避免上一对相邻的两个触摸点之间的触摸速度和下一对相邻的两个触摸点的触摸速度之间相差太大,使得所绘制的曲线的宽度有突兀的变化,本申请实施例设定了一个介于0和1之间的权重值,并用该权重值调整当前两个相邻的触摸点之间的触摸速度,具体可以通过(一个0到1之间的权重值)*(目前的一个两点速度)+(1-权重值)*(上一个两点的速度)计算得到当前两个相邻的触摸点之间的触摸速度。

为了进一步避免贝塞尔曲线出现宽度变化过快的情形,本申请实施例还预设了一个触摸点的最大直径和最小直径,这里的最大直径和最小直径可以经过对触摸点的直径进行统计,根据经验值预设。并用最大直径/(速度+1)和最小直径两者比较取较大值,如果该较大值超过了所设定的最大直径,则取最大直径,如果该较大值小于所设定的最小直径,则取最小直径。通过上述方式对计算出来的触摸点的直径进行调整,能够使得贝塞尔曲线在能够根据不同的触摸速度展示不同的宽度大小的同时,不会出现超过最大直径,或者小于最小直径的情况,即宽度不会呈现过快的变化,进一步保证了滑动轨迹的平滑度。

可选地,宽度变化的贝塞尔曲线的绘制方法为:计算待生成滑动轨迹的曲线的长度;前面已经提到,可以将触摸屏设备传递的触点轨迹映射到坐标系中,这里我们可以将待生成滑动轨迹的曲线映射到相应的坐标系中,根据计算出来的长度和预设的坐标点之间的间距来计算曲线上的坐标点的数量。举例来说,计算出的曲线长度为10,设定的坐标点之间的距离为1,那么曲线上坐标点的数量就为11。需要说明的是,这里之所以分别称作坐标点和触摸点,是因为有的坐标点可能不是触摸点,但是为了在绘制粗细变化的滑动轨迹的同时,避免将滑动轨迹放大后,出现曲线不连续的情况,本方案在绘制曲线时,也将两个相邻的触摸点之间的坐标点都绘制出来。也就是说,这里的坐标点可以包括两个相邻的触摸点,即前述计算出的坐标点的数量为11的例子中,11个点中已经包含了两个相邻的触摸点。当然,也可以不包括两个相邻的触摸点,比如可以设定第一个坐标点和两个相邻的触摸点中的起点之间的距离,和设定最后一个坐标点和两个相邻的触摸点中的终点之间的距离,再用曲线的总长度减去上述两个距离,也可以计算出坐标点的数量。还需要说明的是,坐标点之间的间距越小,或者两个相邻的触摸点之间坐标点的数量越多,得到的宽度可变的滑动轨迹就越平滑。

基于上述数量,以及前面已经确定的两个相邻的触摸点之间的直径,就可以确定各个坐标点的直径。举例来说,如果设定的两个相邻的触摸点的起点的直径是1,或者根据触摸速度确定的起点的直径是1,根据触摸速度确定的两个相邻的触摸点的终点的直径是11,这两个相邻的触摸点之间有9个坐标点,那么,本方案中,第一个坐标点的直径就是2,第二个坐标点的直径是3,第三个坐标点的直径是4,……第9个坐标点的直径是10,即在2个触摸点,9个坐标点共11个点之间,直径呈等差数列排布。当然,触摸点和坐标点之间呈等差数列排布,或者只是坐标点之间呈等差数列排布,只是其中一种使得滑动轨迹更加平滑的一种方式,具体实现时也可以呈等比数列排布或者其他排布方式。

上述在绘制宽度可变的曲线时,如果上一对两个触摸点之间的触摸速度和下一对两个触摸点之间的触摸速度之间成上升趋势,那么曲线宽度呈加粗趋势,如果触摸速度之间呈下降趋势,那么曲线宽度呈变窄趋势。

需要说明的是,如果在触点轨迹上获取相邻的触摸点时,对触摸点进行了舍弃,本方案中提到的触摸点就是舍弃后的触摸点;如果未对触摸点进行舍弃,本方案中提到的触摸点就为触摸屏设备发送的触点轨迹上的所有触摸点。

在执行步骤s400时,所得到的控制点一般只是提供方向信息,如图2所示,所绘制出的贝塞尔曲线一般不经过p1和p2这两个控制点。在触点轨迹上每一对相邻的触摸点之间均绘制完贝塞尔曲线后,就完成了整个触点轨迹对应的滑动轨迹的绘制。

还需要说明的是,步骤s100,s200,s300,s400中的所有步骤,或者其中一个或者多个步骤的组合,可以由触摸屏设备自身来完成,举例来说,可以由触摸屏设备中的处理器或者单独的图形处理器等来完成,也可以由触摸屏设备以外的第三方设备完成后,再由第三方设备完成后的滑动轨迹发送给触摸屏设备来显示。

由于在触摸屏设备中,一般以触摸事件的方式通知相应的处理软件当前触摸笔或者人的手指所处的位置,进而处理软件根据位置做出响应。从触摸笔或者人的手指开始执行触摸操作到在触摸屏设备上显示图形的过程,触摸屏设备产生响应延迟在所难免。本申请实施例为了缩短触摸笔或者人的手指在屏幕上滑动与图形显示之间的时间间隔,将绘制好的图形保存到位图文件中,即保存到bitmap中。之后在绘制图形时,直接从位图文件中调用该图形即可,从而不需要对每个图形重复运行贝塞尔曲线的绘制算法,削弱了从触摸到显示之间的延迟感。

进一步地,本申请实施例开辟了两个缓冲区,分别是绘制缓冲区和显示缓冲区,在绘制缓冲区完成对触点轨迹进行曲线拟合的操作后,将拟合后生成的滑动轨迹发送给显示缓冲区进行显示。即可以单独开启一条线程用于贝塞尔曲线的绘制,这样绘制过程中,触摸屏设备的主线程接收到其他请求时,依然可以进行响应,而不至于因为绘制曲线而对其他请求不响应。

本申请实施例还提供了一种在触摸屏设备中生成滑动轨迹的方法,与上述实施例不同的是,该方法接收触摸屏设备发送的触点轨迹后,根据触点对应的触摸动作发生的时间顺序,依次获取的是触点轨迹上四个相邻的触摸点;然后根据所选取的四个点之间的位置关系,得到贝塞尔曲线的控制点;最后基于所得到的控制点,对依次选取的每四个相邻的触摸点之间进行贝塞尔曲线的拟合,生成滑动轨迹。

上述实施例首先获取到时间上相邻的四个点,比如四个点分别为t0,t1,t2,t3。分别对这四个点进行连接,得到线段t0t1,t1t2,t2t3,计算线段t0t1的中点为m0',t1t2的中点为m1',t2t3的中点为m2',接着分别计算中点m0'和m1',m1'和m2',m2'和m0'之间连线的长度,并分别计算这三段连线长度之间的比值。计算比值的公式可以为:

k1=len1/(len1+len2);

k2=len2/(len2+len3);

根据比值k1,k2以及上述的中点m0',m1'和m2',通过以下公式计算控制点q1和q2的坐标:

xq1=xm0+(xm1-xm0)*k1;

yq1=ym0+(ym1-ym0)*k1;

xq2=xm1+(xm2-xm1)*k2;

yq2=ym1+(ym2-ym1)*k2;

(xq1,yq1)为控制点q1的坐标值,可以通过平移触摸点t1得到,也可以通过绘制该坐标值对应的坐标点得到。(xq2,yq2)为控制点q2的坐标值,可以通过平移触摸点t2得到,也可以通过绘制该坐标值对应的坐标点得到。

基于相同的发明构思,本申请还提供了一种在触摸屏设备中生成滑动轨迹的装置,包括接收和获取单元,用于接收触摸屏设备发送的触点轨迹,并根据触点对应的触摸发生的时间顺序依次获取触点轨迹上两个相邻的触摸点;选取单元,用于在依次选取的每两个相邻的触摸点之间的触点轨迹上随机选取两个点;控制点获取单元,用于根据选取单元所选取的两个点之间,以及所选取的两个点与触点轨迹上依次选取的两个相邻的触摸点之间的位置关系,得到贝塞尔曲线的两个控制点;生成单元,用于基于所得到的两个控制点,对依次选取的每两个相邻的触摸点之间进行曲线拟合,以生成滑动轨迹。

基于相同的发明构思,本申请实施例还提供了另一种在触摸屏设备中生成滑动轨迹的装置,包括接收触摸屏设备发送的触点轨迹的接收单元,该接收单元根据触点对应的触摸发生的时间顺序依次获取触点轨迹上四个相邻的触摸点;控制点获取单元,用于根据所选取的四个点之间的位置关系,得到贝塞尔曲线的控制点;生成单元,用于基于所得到的控制点,对依次选取的每四个相邻的触摸点之间进行贝塞尔曲线拟合,以生成滑动轨迹。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独处理,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,简称rom)、随机存取存储器(randomaccessmemory,简称ram)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1