一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于寻找更优控制点的书写笔迹优化显示方法与流程

2023-02-04 16:47:28 来源:中国专利 TAG:


1.本发明涉及书法练习领域,尤其是涉及一种基于寻找更优控制点的书写笔迹优化显示方法。


背景技术:

2.现有的在显示屏上书写时生成笔迹方法为:一、通过笔触摸移动端屏幕,进行点的采样。二、每三点之间,生成首尾两端半径大小不同的半圆弧。三、通过两条贝塞尔曲线连接这两个圆弧形成每一小段轨迹。四、每段轨迹之间简单的拼接形成笔迹。上述笔迹的显示方法在笔迹粗细变化过大时,笔迹变化过程很突兀,导致线条连接不够平滑,使得显示出的笔迹不够自然、圆润,影响笔迹的显示效果。具体原因是生成贝塞尔曲线时的控制点获取方法不同导致的,这种控制点的获取方法比较粗糙,没有根据3个点之间形成轨迹的弯曲程度生成控制点,如图1所示,贝塞尔曲线的控制点3和4的获取方法是直接过pn 1点作线段12的平行线得到相应的控制点,不能很好的反应出p1、p2、p3三个点之间的走势,使得连接点1、2、5、6与贝塞尔曲线之间过渡不够自然。


技术实现要素:

3.本发明就是为了解决上述问题而提出一种基于寻找更优控制点的书写笔迹优化显示方法,通过优化贝塞尔曲线的控制点获取方法来使得各个连接点的连接更加自然、平滑,显示出的笔迹圆润、自然。
4.本发明的技术方案是这样实现的:
5.一种基于寻找更优控制点的书写笔迹优化显示方法,包括以下步骤:
6.步骤一:采集触摸点,通过书写笔在移动端屏幕上书写时与屏幕接触来采集触摸点(p1、p2、p3、p4
……
pn)信息,采集到的触摸点信息包括触摸点坐标pn(xn,yn)、触摸点与屏幕接触时间tn、触摸点受到的压力大小fn;
7.步骤二:书写笔轨迹获取,对触摸点信息进行处理,得到相邻两个触摸点连线中点c处的轮廓半径r,连接两端两个触摸点的贝塞尔曲线的控制点,并自动生成以三个触摸点为主的笔迹轮廓单元;
8.步骤三:笔迹轮廓生成,将若干组笔迹轮廓单元组合在一起形成完整的笔迹轮廓;
9.步骤四:笔迹生成,将若干组笔迹轮廓单元用颜色进行填充得到笔迹点,将所有的笔迹点按照顺序组合在一起得到完整的书写轨迹,从而在移动端屏幕上生成对应的笔画图案;
10.步骤五:文字生成,将多条笔画图案按照触摸点位置进行排序在移动端屏幕上组合形成对应的文字。
11.进一步的,所述步骤二中对触摸点信息的处理包括获取触摸点的坐标,并根据触摸点的坐标将相邻的两个触摸点利用线段连接,并自动计算出线段的中心点(c1、c2、c3、c4
……
cn-1)的坐标;
12.中心点的坐标计算公式为:
13.cn.x=(pn.x pn 1.x)/2,
14.cn.y=(pn.y pn 1.y)/2;
15.其中:cn为触摸点pn和触摸点pn 1之间连线的中心点。
16.进一步的,所述步骤二中绘制闭环的笔迹轮廓包括以下步骤:
17.步骤2.1,在显示屏上采集到三个连续的点pn、pn 1、pn 2,连接pn点和pn 2点,然后计算线段pnpn 2的中点cenmid的坐标,
18.cenmid.x=(pn.x pn 2.x)/2,
19.cenmid.x=(pn.y pn 2.y)/2;
20.步骤2.2,通过计算线段pnpn 1与线段pn 1pn 2之间的夹角φ判断绘制贝塞尔曲线时是否需要控制点,当180
°‑
φ<toleranceangle时,无需控制点;当180
°‑
φ>toleranceangle时,计算控制点的位置,其中toleranceangle为容忍偏差角,toleranceangle的取值范围为【0
°
,5
°
】;
21.步骤2.3,过点pn 1作线段pnpn 2的垂线,获得垂直点0,计算线段cenmid-0与线段cenmid-pn 1之间的夹角d并计算点pn 1到线段pnpn 2的垂直距离h,获得向量opn 1;
22.步骤2.4,计算以pn为中心以r1为半径的圆弧与以pn 2为中心以r2为半径的圆弧的外公切线的切点:oldt1,oldt2,oldt3,oldt4;
23.步骤2.5,求外切点oldt1与oldt3,oldt2与oldt4之间的中点mid1,mid2,然后借助mid1和mid2以及向量op2得到两个控制点control1和control2;
24.步骤2.6,通过两个新生成的控制点contro11、control2,求出四个新的外切点newt1、newt2、newt3、newt4;
25.步骤2.7,连接点生成轨迹,以pn为圆心r1为半径在切点newt1与切点newt2之间逆时针方向作一个半圆弧线arcs12;以control2为控制点,以切点newt2为起点,以切点newt4为终点连接一条贝塞尔曲线curves24;以pn 2为圆心r2为半径在切点newt4与切点newt3之间逆时针方向作一个半圆弧线arcs43;以control1为控制点,以切点newt3为起点,以切点newt1为终点连接一条贝塞尔曲线curves31,半圆弧线arcs12、curves24、半圆弧线arcs43、curves31就形成一个圆润的闭合笔迹轮廓单元。
26.采用了上述技术方案,本发明的有益效果为:通过优化笔迹轮廓单元的计算方法使得笔迹轮廓线更加的平滑,圆润,解决了电子书写过程中出现的笔迹粗细变化突兀、线条连接不够平滑的问题,从而提高了显示屏上笔迹的显示效果,改善书写体验。
附图说明
27.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
28.图1是现有技术的控制点获取原理图;
29.图2是本发明的流程框图;
30.图3是本发明的控制点获取原理图;
31.图4是本发明的旧外公切线切断获取原理图;
32.图5是本发明的新外公切线切断获取原理图;
33.图6是本发明的笔迹轮廓单元获取流程框图。
具体实施方式
34.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
35.如图2-图3、图6所示,一种基于寻找更优控制点的书写笔迹优化显示方法,包括以下步骤:
36.步骤一:采集触摸点,通过书写笔在移动端屏幕上书写时与屏幕接触来采集触摸点(p1、p2、p3、p4
……
pn)信息,采集到的触摸点信息包括触摸点坐标pn(xn,yn)、触摸点与屏幕接触时间tn、触摸点受到的压力大小fn;
37.步骤二:书写笔轨迹获取,对触摸点信息进行处理,得到相邻两个触摸点连线中点c处的轮廓半径r,连接两端两个触摸点的贝塞尔曲线的控制点,并自动生成以三个触摸点为主的笔迹轮廓单元;
38.步骤三:笔迹轮廓生成,将若干组笔迹轮廓单元组合在一起形成完整的笔迹轮廓;
39.步骤四:笔迹生成,将若干组笔迹轮廓单元用颜色进行填充得到笔迹点,将所有的笔迹点按照顺序组合在一起得到完整的书写轨迹,从而在移动端屏幕上生成对应的笔画图案;
40.步骤五:文字生成,将多条笔画图案按照触摸点位置进行排序在移动端屏幕上组合形成对应的文字。
41.优选的,所述步骤二中对触摸点信息的处理包括获取触摸点的坐标,并根据触摸点的坐标将相邻的两个触摸点利用线段连接,并自动计算出线段的中心点(c1、c2、c3、c4
……
cn-1)的坐标;
42.中心点的坐标计算公式为:
43.cn.x=(pn.x pn 1.x)/2,
44.cn.y=(pn.y pn 1.y)/2;
45.其中:cn为触摸点pn和触摸点pn 1之间连线的中心点。
46.进一步的,所述步骤三中c点处的轮廓半径r的计算公式有两种,
47.第一种为:r=multiplier*width;
48.其中:
49.multiplier为触摸点修饰后的线宽倍数;
50.width为初始固定笔迹宽度;
51.第二种为:r=newf*width;
52.其中:
53.newf为触摸点修饰后的压力值;
54.width为初始固定笔迹宽度;
55.进一步的,所述步骤二中绘制闭环的笔迹轮廓包括以下步骤:
56.步骤2.1,在显示屏上采集到三个连续的点p1、p2、p3,连接p1点和p3点,然后计算线段p1p3的中点cenmid的坐标,
57.cenmid.x=(p1.x p3.x)/2,
58.cenmid.x=(p1.y p3.y)/2;
59.步骤2.2,通过计算线段p1p2与线段p2p3之间的夹角φ判断绘制贝塞尔曲线时是否需要控制点,当180
°‑
φ<toleranceangle时,说明p2距离线段p1p3的垂直距离很近,可以认为3点几乎在一条直线上,此时无需求控制点;当180
°‑
φ>toleranceangle时,计算控制点的位置,其中toleranceangle为容忍偏差角,toleranceangle的取值范围为【0
°
,5
°
】;
60.步骤2.3,过点p2作线段p1p3的垂线,获得垂直点0,以及垂直向量op2,计算线段cenmid-o与线段cenmid-p2之间的夹角α并计算点p2到线段p1p3的垂直距离h,获得向量op2;
61.向量op2的计算公式为:
62.向量cenmid-p1=(p1.x-cenmid.x,p1.y-cenmid.y),
63.向量cenmid-p1的长度为l1=sqrt(cenmid-p1.x^2 cenmid-p1.y^2);
64.向量cenmid-p2=(p2.x-cenmid.x,p2.y-cenmid.y),
65.向量cenmid-p2的长度为l2=sqrt(cenmid-p2.x^2 cenmid-p2.y^2);
66.那么向量cenmid-p2与向量cenmid-p1之间的夹角
67.α=(cenmid-p1.x*cenmid-p2.x cenmid-p1.y*cenmid-p2.y)/(l1*l2);
68.p2点距离线段p1p3的垂直距离h=l2*sin(a);点p1到p3的向量vectot1=(p3.x-p1.x,p3.y-p1.y);
69.点0到p2的向量op2可以表示为(p2.x-0.x,p2.y-o.y),其中o.x,o.y未知;
70.根据垂直向量的公式:
71.vector1.x*(p2.x-o.x) vector1.y*(p2.y-o.y)=0,
72.得出0.x=p2.x (vector1.y/vector1.x)*(p2.y-o.y),
73.根据同一方向上向量的任意性,假设o.y=1,则o.x=p2.x (vector1.y/vector1.x)*(p2.y-1);
74.那么,平行于op2的一个向量vector2可以表示为:(p2.x (vector1.y/vector1.x)*(p2.y-1),1);
75.vector2现已求出,求vector2的长度为length=sqrt(vector2.x^2 vector2.y^2);
76.那么vector2的单位向量n=(vector2.x/length,vector2.y/1ength);
77.因为向量op2的长度为h,那么向量op2=(h*n.x,h*n.y);
78.步骤2.4,计算以p1为中心以r1为半径的圆弧与以p3为中心以r2为半径的圆弧的外公切线的切点:oldt1,oldt2,oldt3,oldt4;
79.具体求解方法以oldt1为例,如图4所示:其余三点的求法相同;
80.p1到p3的向量vector=(p3.x-p1.x,p3.y-p1.y),
81.向量vector的倾斜角slopeangle=afctan(vector.y/vector.x);
82.p1到p3的距离length=sqtr(vector.x^2 vector.y^2),
83.圆circle1的半径和圆circle2的半径之差diff=r1-r2;
84.则夹角a=arcos(diff/1ength),
85.夹角a1=pi-slopeangle-a;
86.点a距离p1的距离为|ap1|=r1*cos(a1),
87.点a距离切点oldt1的距离|a-oldt1|=r1*sin(a1);
88.则切点oldt1的坐标为(p1.x-|ap1|,p1.y-|a-oldt1|)。
89.步骤2.5,求外切点oldt1与oldt3,oldt2与oldt4之间的中点mid1,mid2,然后借助mid1和mid2以及向量op2得到两个控制点control1和control2;
90.mid1=((oldt1.x oldt3.x)/2,(oldt1.y oldt3.y)/2),
91.mid2=((oldt2.x oldt4.x)/2,(oldt2.y oldt4.y)/2),
92.步骤2.3中已经求出向量op2,那么
93.control1=(mid1.x op2.x,mid1.y op2.y),
94.contro12=(mid2.x op2.x,mid2.y op2.y);
95.步骤2.6,通过两个新生成的控制点control1、control2,求出四个新的外切点newt1、newt2、newt3、newt4;
96.具体求解方法以newt1为例,如图5所示:其余三点的求法相同;
97.连接p1-control1,令点p1到点control1的向量为v,
98.v=(control1.x-p1.x,control1.y-p1.y),
99.向量v的长度
100.length1=sqrt((control1.x-p1.x)^2 (control1.y-p1.y)^2);
101.点c坐标为(r1,0),
102.向量p1c=(c.x-p1.x,c.y-p1.y),
103.长度length2=sqrt((c.x-p1.x)^2 (c.y-p1.y)^2);
104.角度b2=arccos(r1/length1);
105.向量p1c与向量v之间的夹角
106.b1=(p1c.x*v.x p1c.y*v.y)/(length1*length2);
107.角度b3=pi-b1-b2;
108.线段p1b的长度|p1b|=r1*cos(b3),
109.线段newt1-b的长度|newt1-b|=r1*sin(b3);
110.那么切点newt1的坐标为(p1.x-r1*cos(b3),p1.y-r1*sin(b3));
111.步骤2.7,连接点生成轨迹,
112.2.71、以p1为圆心r1为半径在切点newt1与切点newt2之间逆时针方向作一个半圆弧线arcs12;
113.2.72、以control2为控制点,以切点newt2为起点,以切点newt4为终点连接一条贝塞尔曲线curves24;
114.2.73、以p3为圆心r2为半径在切点newt4与切点newt3之间逆时针方向作一个半圆弧线arcs43;
115.2.74、以control1为控制点,以切点newt3为起点,以切点newt1为终点连接一条贝塞尔曲线curves31;
116.2.75、半圆弧线arcsl2、curves24、半圆弧线arcs43、curves31就形成一个圆润的闭合笔迹轮廓单元。
117.以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献