发明内容
有鉴于此,本发明的目的在于提出一种基于触屏的软笔实现方法及装置,在绘制过程中绘制线条能够模仿出软笔(如例如毛笔或者其他一些笔头较为软的笔)的绘制过程,并且绘制的显示过程无延迟。
基于上述目的本发明提供的一种基于触屏的软笔实现方法,包括以下步骤:
在与触屏的接触面上获取数据,数据包括当前点的实际速度和当前点的坐标位置,第一个点为起始点;
根据获取的实际速度算出绘制速度;
根据所述当前点的绘制速度在当前点绘制椭圆,在相邻的两个椭圆之间绘制公切线,并对两个椭圆与公切线之间的区域进行填充,形成具有一定粗细的线段;
对所述线段进行关键点算法计算;
判断是否存在关键点,如果存在,以该关键点为基准拟合优化该关键点两边的线段;如果不存在则拟合优化所述已经绘制的线段;
固化所述拟合优化后的线段;
显示所述固化后的线段。
可选的,所述实际速度与所述坐标位置都是根据预设间隔值进行取样;所述预设间隔值为像素间隔值或时间间隔值。
可选的,所述数据由硬件装置提供,该硬件装置与所述触屏直接接触,接触部分有两个感应点。
可选的,所述绘制速度值是根据当前点的实际速度,以及与当前点相邻且在当前点之前的前面点的实际速度值计算得出,计算公式为:
绘制速度=∑惯性系数*实际速度。
可选的,所述计算公式中的惯性系数为小于1的分数;
分数的分子部分是从斐波那契数列中获取,分母部分为所有分子的总和,所有的惯性系数的总和为1;
离当前点越近的点,惯性系数的数值越大,离当前点越远的点,惯性系数的数值越小。
可选的,所述绘制椭圆的步骤包括:
当前点的坐标位置确定椭圆圆心所在位置,当前点坐标位置即为椭圆圆心所在位置;
确定椭圆长轴所在位置,两个感应点所在直线为椭圆长轴所在直线;
将绘制速度大小按照反比关系确定椭圆长轴半径
根据长轴半径与短轴半径比值确定短轴半径;
绘制椭圆。
可选的,所述椭圆长轴半径与短轴半径比值为固定比值。
可选的,所述关键点算法计算,从起始点起第三个点开始执行所述的关键点算法计算步骤,包括以下步骤:
选取需要计算关键点的线段;
将所选取线段的两个端点之间连成一条直线;
计算所述线段上的所有的点到所述直线的垂直距离。
可选的,所述判断是否存在关键点是对所述垂直距离进行判断,判断阈值为M,所述阈值M>0;
如果所述垂直距离中最大的垂直距离大于等于所述阈值M,则有关键点;所述垂直距离最大的点为关键点;
如果所述垂直距离中最大的垂直距离小于所述阈值M,则没有关键点。
可选的,所述关键点存在时,以关键点为基准分别拟合优化所述关键点两边的线段,关键点固定不动。
可选的,所述关键点两边的线段在拟合优化后,判断所述关键点是为否新出现的关键点:
如果是,则选取所述起始点到所述关键点、以及从所述关键点到所述当前点之间的两段线段,分别对所述两段线段进行关键点计算;
如果否,则固化拟合优化后的所述关键点到所述起始点之间的线段。
可选的,所述关键点到所述起始点之间的线段完成固化后,所述关键点作为下一个绘制过程的起始点,绘制重新开始。
可选的,所述关键点不存在时,进一步判断所述当前点到起始点是否达到第二阈值N,如果是,则拟合优化所述当前点与所述起始点之间的线段,并固化拟合优化后的线段;如果否,则拟合优化所述当前点与所述起始点之间的线段,然后重新开始获取所述数据。
可选的,所述第二阈值N包括时间阈值TM和/或长度阈值LM。
可选的,所述第二阈值N为时间阈值TM与距离阈值LM,判断从所述当前点到起始点的时间或距离中任意一个是否达到所述时间阈值TM或距离阈值LM,如果达到了任何一个,则判断结果为是;否则,即T<TM且L<LM时,则判断结果为否。
可选的,所述第二阈值N为时间阈值TM,判断从所述当前点到起始点的时间是否达到所述时间阈值TM,如果达到,则判断结果为是;否则,即T<TM时,则判断结果为否。
可选的,所述第二阈值N为距离阈值LM,其特征在于所述第二阈值N为距离阈值LM,判断从所述当前点到起始点的时间是否达到所述距离阈值LM,如果达到,则判断结果为是;否则,即L<LM时,则判断结果为否。
可选的,所述当前点与所述起始点之间的线段完成固化后,所述当前点作为下一个绘制过程的起始点,绘制重新开始。
可选的,所述拟合优化所述线段是基于根据贝塞尔曲线算法优化得出的。
同时,本发明还提出了一种基于触屏的软笔实现装置,其特征在于包括:
数据获取模块,用于获取与触屏的接触面上获取数据,数据包括当前点的压力值和当前点的坐标位置,第一个点为起始点;
绘制速度计算模块,用于根据获取的实际速度算出绘制速度
绘制模块,根据所述当前点的绘制速度在当前点绘制椭圆,在相邻的两个椭圆之间绘制公切线,并对两个椭圆与公切线之间的区域进行填充,形成具有一定粗细的线段;
关键点计算模块,用于对所述线段进行关键点算法计算;
判断模块,用于判断是否存在关键点,如果存在,以该关键点为基准拟合优化该关键点两边的线段;如果不存在则拟合优化所述已经绘制的线段;
拟合优化模块,用于拟合优化所述线段;
固化模块,用于固化拟合优化后的线段;
显示模块,用于显示所述固化后的线段。
可选的,所述数据获取模块中所获取所述实际速度与所述坐标位置都是根据预设间隔值进行取样;所述预设间隔值为像素间隔值或时间间隔值。
可选的,所述数据获取模块中的数据由硬件装置提供,该硬件装置与所述触屏直接接触,接触部分有两个感应点。
可选的,所述绘制速度计算模块计算绘制速度值是根据当前点的实际速度,以及与当前点相邻且在当前点之前的点的实际速度值计算得出,计算公式为:
绘制速度=∑惯性系数*实际速度。
可选的,所述绘制速度计算模块的计算公式中的惯性系数为小于1的分数;
分数的分子部分是从斐波那契数列中获取,分母部分为所有分子的总和,所有的惯性系数的总和为1;
离当前点越近的点,惯性系数的数值越大,离当前点越远的点,惯性系数的数值越小。
可选的,所述绘制模块绘制椭圆的步骤包括:
当前点的坐标位置确定椭圆圆心所在位置,当前点坐标位置即为椭圆圆心所在位置;
确定椭圆长轴所在位置,两个感应点所在直线为椭圆长轴所在直线;
将绘制速度大小按照反比关系确定椭圆长轴半径
根据长轴半径与短轴半径比值确定短轴半径;
绘制椭圆。
可选的,所述绘制模块绘制出的椭圆长轴半径与短轴半径比值为固定比值。
可选的,所述关键点计算模块在进行关键点算法计算时,从起始点起第三个点开始执行所述的关键点算法计算过程,包括以下计算过程:
选取需要计算关键点的线段;
将所选取线段的两个端点之间连成一条直线;
计算所述线段上的所有的点到所述直线的垂直距离。
可选的,所述判断模块判断是否存在关键点是对所述垂直距离进行判断,判断阈值为M,所述阈值M>0;
如果所述垂直距离中最大的垂直距离大于等于所述阈值M,则有关键点;所述垂直距离最大的点为关键点;
如果所述垂直距离中最大的垂直距离小于所述阈值M,则没有关键点。
可选的,当所述判断模块判断出关键点存在时,以关键点为基准用所述拟合优化模块分别拟合优化所述关键点两边的线段,关键点固定不动。
可选的,所述判断模块还包括判断所述关键点是否为新出现的关键点;
如果是则选取所述起始点到所述关键点、以及从所述关键点到所述当前点之间的两段线段,分别用计算模块对所述两端线段进行关键点计算;
如果否则用拟合优化模块拟合所述关键点到所述起点之间的线段之后,用固化模块线段。
可选的,所述固化模块固化所述关键点到所述起点之间的线段后,所述关键点在所述数据获取模块中作为起始点,绘制模块重新开始绘制。
可选的,所述判断模块在判断关键点不存在时,还包括用于进一步判断所述当前点到起始点是否达到第二阈值N;
如果是,则用所述拟合优化模块拟合优化所述当前点与所述起始点之间的线段之后,用固化模块固化所述线段;
如果否,则用所述拟合优化模块拟合优化所述当前点与所述起始点之间的线段之后,用数据获取模块重新开始获取所述数据。
可选的,所述判断模块中判断的第二阈值N包括时间阈值TM和/或长度阈值LM。
可选的,所述第二阈值N为时间阈值TM与距离阈值LM,判断模块将判断从所述当前点到起始点的时间或距离中任意一个是否达到所述时间阈值TM或距离阈值LM,如果达到了任何一个,则判断结果为是;否则,即T<TM且L<LM时,则判断结果为否。
可选的,所述第二阈值N为时间阈值TM,判断模块将判断从所述当前点到起始点的时间是否达到所述时间阈值TM,如果达到,则判断结果为是;否则,即T<TM时,则判断结果为否。
可选的,所述第二阈值N为距离阈值LM,判断模块判断从所述当前点到起始点的距离是否达到所述距离阈值LM,如果达到,则判断结果为是;否则,即L<LM时,则判断结果为否。
可选的,所述固化模块固化所述当前点与所述起始点之间的线段后,绘制模块将当前点作为下一个绘制过程的起始点,绘制重新开始。
可选的,所述拟合优化模块在拟合优化所述线段时,拟合优化方式是基于根据贝塞尔曲线算法优化得出的。
从上面所述可以看出,本发明提供的一种基于触屏的软笔实现方法及装置,实现方式是通过获取的实际速度值,并根据实际速度值计算绘制速度,以绘制速度大小调节绘制线段的宽度,笔锋的宽度与绘制速度成反比。通过关键点算法进行计算,以贝塞尔曲线拟合优化线段,并对拟合优化后的线段进行固化并显示固化后的线段。本发明所提供的方法及装置,是模拟软笔的实际绘制过程进行绘制的。这样的绘制方式使得绘制图像的真实度高,显示实时性强,整个绘制过程非常真实,用户在绘制过程中感觉良好。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
参见图1所示,本发明提供了一种基于触屏的软笔实现方法,具体包括以下步骤:
步骤1,在与触屏的接触面上获取数据,数据包括当前点的实际速度值和当前点的坐标位置。
作为本发明的一个实施例,与触屏所接触的硬件装置是一种手写笔,这种手写笔的笔头上有两个感应点,两个感应点连线的中点位置是当前点所在坐标位置。作为一个实施例,坐标位置是一个动态值,在屏幕上的每个像素点,都对应一个唯一的坐标位置。
作为本发明的一个实施例,为了避免采样点过多影响计算速度,数据获取过程中,实际速度与坐标位置都是根据预设间隔值进行取样,例如每隔两个像素值获取一次数据,或者每间隔一段时间,例如每40ms获取一次数据。
步骤2,根据步骤1中所获得的当前点的实际速度,算出绘制速度。
所述绘制速度值是根据当前点的实际速度,以及与当前点相邻,在当前点之前的点实际速度值计算得出。
绘制速度=∑惯性系数*实际速度
作为一个实施例,公式中惯性系数是小于1的分数,分数的分子部分是从斐波那契数列中获取,分母部分为所有分子的总和。所有的惯性系数的总和为1。
作为一个实施例,离当前点越近的点,惯性系数的数值越大,离当前点越远的点,惯性系数的数值越小。
假设当前点的绘制速度是由当前点到当前点之前的第三个点计算得出的,则计算公式为V′D为当前点的绘制速度,VD为当前点的实际速度、VD-1当前点前一个点的实际速度、VD-2当前点之前第二个点的实际速度、VD-3当前点之前第三个点的实际速度, 分别为这四个点对应的惯性系数。
具体的参见图3所示,假设绘制线段从AV1至AV4点方向,过程中共获取到四个点的数据分别是点AV1、AV2、AV3、AV4,,当前点为AV4。这四个点所对应的实际速度分别是V1、V2、V3、V4,假设当前点AV4的绘制速度是根据当前点和之前三个点的实际速度绘制的,那么前点AV4的绘制速度V4’的计算公式为公式中每个实际速度前面的系数为惯性系数,该系数是根据斐波那契数列计算得出的,系数的分子部分1、1、2、3构成斐波那契数列,分母部分为公式中所有惯性系数分子的总和。从公式中可以看出,距离点AV4越近的点对绘制速度V4’影响越大,离AV4越远的点对绘制速度V4’影响越小。离当前点越近的点对绘制速度的影响大于离当前点较远的点。当前点的绘制速度会受到之前点的实际速度的牵制。
以这样的方式计算为了避免在绘制过程中,由于速度突变所导致的绘制失真。
步骤3,根据绘制速度在当前点绘制椭圆,并对两个椭圆与公切线之间的区域进行填充,形成具有一定粗细的线段。
作为本发明的一个实施例,绘制椭圆的步骤包括:
以当前点的坐标位置确定椭圆圆心所在位置,当前点坐标位置即为椭圆圆心所在位置。
确定椭圆长轴所在位置,两个感应点所在直线为椭圆长轴所在直线;
将绘制速度大小按照反比关系确定椭圆长轴半径;
根据长轴半径与短轴半径比值确定短轴半径;
生成椭圆。
作为一个实施例,椭圆长轴半径与短轴半径的比例关系固定。当椭圆长轴半径确定时,根据比例关系可以得出椭圆短轴半径。例如假设椭圆长轴半径与短轴半径比值为5:3,那么当椭圆长轴半径为0.1mm的时候,短轴半径为0.06mm。作为一个实施例,所述绘制的椭圆为实心圆。
在实际绘制过程中,通常当速度加快时,笔锋会变细,而当速度变慢时,笔锋会变粗。所以绘制速度与椭圆长轴半径成反比,也就是当绘制速度越快时,线段越细,而当绘制速度越慢时,线段越粗。
作为本发明的一个实施例,绘制椭圆是一个实时的过程,每当获取到一个点的数据时,就在该点根据两个感应点所在直线和绘制速度在所述坐标位置绘制椭圆,然后在相邻的椭圆之间绘制公切线。公切线绘制完成后,对公切线与相邻的两个椭圆之间形成空白区域进行填充。作为一个实施例,对空白区域填充的颜色与绘制所使用的颜色是相同颜色。
作为一个实施例,所述绘制是一个虚拟的运算过程,包括步骤3中的绘制过程,步骤6或步骤10或步骤12中的拟合优化过程,都是在绘制过程中虚拟进行的,这些过程并不会被用户看到,而用户最终从显示屏幕上看到的,就是步骤7或步骤11已经完成固化的线段。
步骤4,对已经绘制的线段进行关键点算法计算。关键点算法包括以下步骤:
步骤41,选取需要计算关键点的线段(该线段并非一定是直线,也可能是曲线、折线等)。作为本发明的一个实施例,关键点算法计算至少应该包括三个点。
步骤42,将所选取线段的两个端点(起始点和终点)之间连成一条直线。
步骤43,计算该线段上的所有的点到所述直线的垂直距离。
作为本发明的一个实施例,所述选取需要计算关键点的线段是当前点与所述起始点之间的线段。所述该线段上的所有的点一般为步骤1中的数据获取点,若该点在步骤6或步骤12中做过拟合优化处理,则为步骤6或步骤12中拟合优化的线段上的点。
作为本发明的一个实施例,所述垂直距离计算,不包括线段的两个端点到所述直线的垂直距离。因为线段的两个端点与直线的两个端点是重合的,距离为0。
假设选取线段ADAS进行计算,起始点AS、当前点AD,AS和AD两个点为线段的两个端点,将AS到AD连成一条直线,计算直线上所有的点到该直线间的垂直距离,不包括AS和AD两个点的。
步骤5,对步骤43中所述所有垂直距离计算结果进行判断,判断阈值为M,所述阈值M>0。若其中最大的垂直距离L⊥大于等于预设的阈值M时,即L⊥≥M时则判断有关键点,垂直距离最大的点即为关键点AK。若该最大的垂直距离L⊥小于阈值M时,即L⊥<M则判断该线段上没有关键点。
若判断结果为有关键点,则触发步骤6,若判断结果为没有关键点,则触发步骤9。
步骤6,当步骤5的判断结果为有关键点时,拟合优化所述关键点两边的线段。具体的是指,关键点固定不动,以关键点所在位置为界,将所述线段分为两段,即起始点到关键点之间的选段,以及关键点到当前点之间的线段,分别对这两部分线段进行拟合优化。
步骤7,固化关键点与起始点之间的线段。对这部分线段不再进行绘制和计算,所述关键点作为下一个绘制过程的起始点,触发步骤1,绘制过程重新开始。
步骤8,显示固优化后的线段。
步骤61,作为本发明的一个实施例,可以在步骤6之后增加一个步骤61,判断步骤5得到的关键点是否为新出现的关键点,如果否,则进入步骤7;如果是,则选取起始点到所述关键点、以及从所述关键点到当前点之间的两段线段,然后触发步骤42分别对上述两段线段进行关键点计算。这种将线段分段再计算的方式会能够保证计算出所绘制线段上的所有关键点都被找出没有遗漏。
假设当前点AD与起始点AS之间的线段是ASAD,前一个点AD-1与起始点AS之间的线段ASAD-1,ASAD与ASAD-1这两个线段上计算出的关键点AK重合时,固化关键点AK到起始点AS之间的线段AKAS,固化后,对AKAS计算停止,触发步骤1,关键点AK作为起始点AS绘制重新开始。
步骤9,当步骤5中判断结果为没有关键点时,进一步判断当前点到起始点是否达到第二阈值N。若判断结果为是,则触发步骤10;若判断结果为否则触发步骤12。
作为本发明的一个实施例,第二阈值N可以包括时间阈值TM和/或距离阈值LM。
如果第二阈值N为时间阈值TM与距离阈值LM,则步骤9为进一步判断从当前点到起始点的时间或距离中的任意一个是否达到所述时间阈值TM或距离阈值LM,如果达到了任何一个,则判断结果为是;否则,即T<TM且L<LM时,则判断结果为否。在实际绘制过程中,用户会有各种各样不同的绘制方式,对时间阈值TM和长度阈值LM这两个条件,在每一次判断计算结果没有关键点之后,都会对时间阈值TM和长度与之LM分别进行判断,以先达到判断条件的阈值为触发条件。在实际教学演示过程中,有时候为了能够演示详细的过程,会放慢绘制速度,绘制时间就会增加,这时绘制时间T就会首先达到时间阈值TM,这时就根据TM进行判断;或者有些学生在绘制过程中,绘制速度会比加快,在同样的绘制时间里,绘制的长度就会增加,当距离L达到距离阈值LM时,这时就根据LM进行判断。
如果第二阈值N为时间阈值TM,则步骤9为进一步判断当前点到起始点的时间是否达到所述时间阈值TM,如果达到,则判断结果为是;否则T<TM时,则判断结果为否。
如果第二阈值N为距离阈值LM,则步骤9为进一步判断当前点到起始点的距离是否达到所述距离阈值LM,如果达到,则判断结果为是;否则L<LM时,则判断结果为否。
步骤10,作为本发明的一个实施例,当步骤9的判断结果为是的时候,即达到第二阈值N时,则触发步骤10,拟合优化当前点与起始点之间的线段。
步骤11,固化当前点到起始点之间的线段。对这部分线段不再进行绘制、计算、拟合优化,所述当前点作为下一个绘制过程的起始点,触发步骤1,绘制、计算、拟合优化重新开始。然后将已经固化的线段显示,即触发步骤8。
步骤12,作为本发明的一个实施例,当步骤9的判断结果为否的时候,即没有达到第二阈值N时,则触发步骤12,拟合优化当前点与起始点之间的线段,然后触发步骤1。
作为本发明的一个实施例,所述步骤10到步骤12的目的是当起始点到当前点之间在没有出现关键点时候,起始点到当前点的线段可以再进行第二次拟合优化,使绘制出的线段更加光滑优美。
作为本发明的一个实施例,所述步骤5、步骤9、步骤11中线段的拟合优化方式是根据贝塞尔曲线算法拟合优化得出的。贝塞尔曲线的优点是其仿真程度更非常高,并且可以有效的去除绘制过程中由于抖动产生的毛刺和失真度非常大的尖锐拐点。
作为本发明的一个实施例,在步骤41中所述线段为经过拟合优化后的线段。在实际绘制过程中,实际的采样点可能是毛刺或尖锐的拐点,线段在进行优化后,实际线段会被优化线段所覆盖,覆盖后该点消失。在对所述优化线段进行关键点计算时,将在优化的线段上获取需要计算的点。
对拟合优化后的线段进行固化,能够缩短庞杂的计算过程所带来的由于运算时间过长导致的运算速度过慢。这种对线段进行分段式的绘制、计算、拟合优化、固化方式是一种增量式存储方式,这种存储方式使得运算速度大大提升。
本发明的方法可应用在所有触屏设备上,如手机、平板电脑、电子白板等,特别是在大型的电子白板触屏应用上。大型电子白板的应用常见于教学演示、教学互动、会议、展览展示等。可以应用于包括:电阻式、电容式、压电式、红外线、表面声波等各种类型的触屏。
参见图2所示,本发明还提供了一种基于触屏的软笔实现装置,包括以下模块:
数据获取模块901,用于获取与触屏的接触面上获取数据,数据包括当前点的压力值和当前点的坐标位置,第一个点为起始点;
绘制速度计算模块902,用于根据获取的实际速度算出绘制速度
绘制模块903,根据所述当前点的绘制速度在当前点绘制椭圆,在相邻的两个椭圆之间绘制公切线,并对两个椭圆与公切线之间的区域进行填充,形成具有一定粗细的线段;
关键点计算模块904,用于对所述线段进行关键点算法计算;
判断模块905,用于判断是否存在关键点,如果存在,以该关键点为基准拟合优化该关键点两边的线段;如果不存在则拟合优化所述已经绘制的线段;
拟合优化模块906,用于拟合优化所述线段;
固化模块907,用于固化拟合优化后的线段;
显示模块908,用于显示所述固化后的线段。
作为本发明的一个实施例,与触屏所接触的硬件装置是一种手写笔,这种手写笔的笔头上有两个感应点,两个感应点连线的中点位置是当前点所在坐标位置。作为一个实施例,坐标位置是一个动态值,在屏幕上的每个像素点,都对应一个唯一的坐标位置。
作为本发明的一个实施例,为了避免采样点过多影响计算速度,数据获取模块901在获取数据过程中,实际速度与坐标位置都是根据预设间隔值进行取样,例如每隔两个像素值获取一次数据,或者每间隔一段时间,例如每40ms获取一次数据。
绘制速度计算模块902根据数据获取模块901中所获得的当前点的实际速度,算出绘制速度。
所述绘制速度值是根据当前点的实际速度,以及与当前点相邻,在当前点之前的点实际速度值计算得出。
绘制速度=∑惯性系数*实际速度
作为一个实施例,所述公式中惯性系数是小于1的分数,分数的分子部分是从斐波那契数列中获取,分母部分为所有分子的总和。所有的惯性系数的总和为1。
作为一个实施例,离当前点越近的点,惯性系数的数值越大,离当前点越远的点,惯性系数的数值越小。
假设绘速度计算模块902中当前点的绘制速度是由当前点到当前点之前的第三个点计算得出的,则计算公式为V′D为当前点的绘制速度,VD为当前点的实际速度、VD-1当前点前一个点的实际速度、VD-2当前点之前第二个点的实际速度、VD-3当前点之前第三个点的实际速度,分别为这四个点对应的惯性系数。
具体的参见图3所示,假设绘制线段从AV1至AV4点方向,过程中共获取到四个点的数据分别是点AV1、AV2、AV3、AV4,,当前点为AV4。这四个点所对应的实际速度分别是V1、V2、V3、V4,假设当前点AV4的绘制速度是根据当前点和之前三个点的实际速度绘制的,那么前点AV4的绘制速度V4’的计算公式为公式中每个实际速度前面的系数为惯性系数,该系数是根据斐波那契数列计算得出的,系数的分子部分1、1、2、3构成斐波那契数列,分母部分为公式中所有惯性系数分子的总和。从公式中可以看出,距离点AV4越近的点对绘制速度V4’影响越大,离AV4越远的点对绘制速度V4’影响越小。离当前点越近的点对绘制速度的影响大于离当前点较远的点。当前点的绘制速度会受到之前点的实际速度的牵制。所述绘制速度计算模块902以这样的方式计算为了避免在绘制过程中,由于速度突变所导致的绘制失真。
绘制模块903首先在当前点绘制椭圆,其绘制椭圆的步骤包括:
数据获取模块901中获取到的当前点的坐标位置确定椭圆圆心所在位置,当前点坐标位置即为椭圆圆心所在位置。
确定椭圆长轴所在位置,两个感应点所在直线为椭圆长轴所在直线;
根据绘制速度计算模块902计算出的绘制速度大小按照反比关系确定椭圆长轴半径;
根据长轴半径与短轴半径比值确定短轴半径;
生成椭圆。
作为一个实施例,绘制模块903所绘制的椭圆长轴半径与短轴半径的比例关系固定。当椭圆长轴半径确定时,根据比例关系可以得出椭圆短轴半径。例如假设椭圆长轴半径与短轴半径比值为5:3,那么当椭圆长轴半径为0.1mm的时候,短轴半径为0.06mm。作为一个实施例,所述绘制模块903绘制的椭圆为实心圆。
作为本发明的一个实施例,绘制模块903的绘制过程是一个实时的过程。即数据获取模块901每获得到一个点的数据,绘制模块903就在就在该点根据两个感应点所在直线和绘制速度在所述坐标位置绘制椭圆,然后在相邻的椭圆之间绘制公切线。公切线绘制完成后,对公切线与相邻的两个椭圆之间形成空白区域进行填充。作为一个实施例,对空白区域填充的颜色与绘制所使用的颜色是相同颜色。
作为本发明的一个实施例,绘制模块903在绘制椭圆是一个实时的过程,每当数据获取模块901获取到一个点的数据时,绘制速度算模块902会根据公式算出当前点的绘制速度,绘制模块903就在该点绘制椭圆。作为一个实施例,所述绘制是一个虚拟的运算过程,还包括绘制模块904在绘制公切线和填充时,以及拟合优化模块906拟合优化过程,都是在绘制过程中虚拟进行的,这些过程并不会被用户看到,而用户最终从显示屏幕上看到的,是固化模块907完成固化后的线段。
计算模块904对已经绘制的线段进行关键点算法计算。关键点算法包括以下计算过程:
首先,计算模块904选取需要计算关键点的线段(该线段并非一定是直线,也可能是曲线、折线等)。作为本发明的一个实施例,关键点算法计算至少应该包括三个点;
其次,计算模块904将所选取线段的两个端点(起始点和终点)之间连成一条直线;
再次,关键点计算模块904计算该线段上的所有的点到所述直线的垂直距离。
作为本发明的一个实施例,关键点计算模块904所选取的需要计算关键点的线段,是指当前点与所述起始点之间的线段。所述该线段上的所有的点一般为数据获取模块901数据的获取点,若该点经过拟合优化模块906做过拟合优化处理,则为拟合优化后的线段上的点。
作为本发明的一个实施例,关键点计算模块904在计算所述垂直距离时,不包括线段的两个端点到所述直线的垂直距离。因为线段的两个端点与直线的两个端点是重合的,距离为0。
判断模块905对关键点计算模块904中所述所有垂直距离计算结果进行判断,判断阈值为M,所述阈值M>0。若其中最大的垂直距离L⊥大于等于预设的阈值M时,即L⊥≥M时则判断有关键点,垂直距离最大的点即为关键点AK。若该最大的垂直距离L⊥小于阈值M时,即L⊥<M则判断该线段上没有关键点。
若判断模块905判断出有关键点,则用拟合优化模块906拟合优化所述线段,若判断为没有关键点,则判断模块905将对当前点与起始点之间的线段进行进一步判断。
当判断模块905判断结果为有关键点时,拟合优化模块906将拟合优化所述关键点两边的线段。具体的是指,关键点固定不动,以关键点所在位置为界,将所述线段分为两段,即起始点到关键点之间的选段,以及关键点到当前点之间的线段,分别对这两部分线段进行拟合优化。
然后固化模块907将固化关键点与起始点之间的线段。对这部分线段不再进行绘制和计算,所述关键点作为数据获取模块901中的起始点,绘制过程重新开始。
显示模块908,显示固化后的线段。
作为本发明的一个实施例,判断模块905还包括判断关键点是否为新出现的关键点,如果否,则用固化模块907固化关键带点与起始点之间的线段;如果是则关键点计算模块904将选取起始点到所述关键点、以及从所述关键点到当前点之间的两段线段,然后分别对上述两段线段进行关键点计算。这种将线段分段再计算的方式会能够保证计算出所绘制线段上的所有关键点都被找出没有遗漏。
作为本发明的一个实施例,当判断模块905判断出没有关键点时,判断模块905还将进一步判断当前点到起始点是否达到第二阈值N。若判断结果为是,则用拟合优化模块906拟合优化当前点与起点之间的线段,然后用固化模块907固化当前点与起点之间的线段。当这部分线段完成固化后,对这部分线段不再进行拟合优化和计算,所述当前点作为下一个绘制过程数据获取模块901的起始点,绘制过程重新开始。
若判断结果为否,则用拟合优化模块906拟合优化当前点与起点之间的线段,然后用数据获取模块901继续获取数据。
作为本发明的一个实施例,第二阈值N可以包括时间阈值TM和/或距离阈值LM。
如果第二阈值N为时间阈值TM与距离阈值LM,则判断模块905将进一步判断从当前点到起始点的时间或距离中的任意一个是否达到所述时间阈值TM或距离阈值LM,如果达到了任何一个,则判断结果为是;否则,即T<TM且L<LM时,则判断结果为否。在实际绘制过程中,用户会有各种各样不同的绘制方式,对时间阈值TM和长度阈值LM这两个条件,在每一次判断计算结果没有关键点之后,都会对时间阈值TM和长度与之LM分别进行判断,以先达到判断条件的阈值为触发条件。在实际教学演示过程中,有时候为了能够演示详细的过程,会放慢绘制速度,绘制时间就会增加,这时绘制时间T就会首先达到时间阈值TM,这时就根据TM进行判断;或者有些学生在绘制过程中,绘制速度会比加快,在同样的绘制时间里,绘制的长度就会增加,当距离L达到距离阈值LM时,这时就根据LM进行判断。
如果第二阈值N为时间阈值TM,则判断模块905将进一步判断当前点到起始点的时间是否达到所述时间阈值TM,如果达到,则判断结果为是;否则T<TM时,则判断结果为否。
如果第二阈值N为距离阈值LM,则判断模块905将进一步判断当前点到起始点的距离是否达到所述距离阈值LM,如果达到,则判断结果为是;否则L<LM时,则判断结果为否。
作为本发明的一个实施例,从上述内容可以看出,拟合优化模块906可以用于拟合关键点与起始点之间的线段,而当起始点到当前点之间在没有出现关键点时候,拟合优化模块906还可以用于拟合对起始点到当前点的线段再进行第二次拟合优化,使线段更加光滑优美。
作为本发明的一个实施例,所述拟合优化模块906中拟合优化线段方式是根据贝塞尔曲线算法拟合优化得出的。贝塞尔曲线的优点是其仿真程度更非常高,并且可以有效的去除绘制过程中由于抖动产生的毛刺和失真度非常大的尖锐拐点。
作为本发明的一个实施例,关键点计算模块904中选取的线段为经过拟合优化后的线段。在实际绘制过程中,实际的采样点可能是毛刺或尖锐的拐点,线段在进行优化后,实际线段会被优化线段所覆盖,覆盖后该点消失。在对所述优化线段进行关键点计算时,将在优化的线段上获取需要计算的点。
固化模块907对拟合优化后的线段进行固化,能够缩短庞杂的计算过程所带来的由于运算时间过长导致的运算速度过慢。这种对线段进行分段式的绘制、计算、拟合优化、固化方式是一种增量式存储方式,这种存储方式使得运算速度大大提升。
所属领域的普通技术人员应当理解:以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。