电子毛笔书写笔形变形方法转让专利

申请号 : CN201110384390.3

文献号 : CN102521856B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 谭韩成赵志强刘炎

申请人 : 北京盛世宣合信息科技有限公司

摘要 :

本发明公开了一种电子毛笔书写笔形变形方法,在绘制电子毛笔笔形过程中,若达到预设的变形条件,则按如下步骤对所述笔形进行变形:S1:以所述笔形的对称轴线上的质点根据预先设计的弹簧质点模型对所述质点进行迭代积分,得到所述变形后质点的坐标;S2:根据变形后质点的坐标计算笔形边缘的坐标;S3:根据笔形边缘坐标绘制变形后的笔形。本发明实现了对毛笔笔形流畅的变形,同时能达到较高的笔画真实感。

权利要求 :

1.一种电子毛笔书写笔形变形方法,其特征在于,在绘制电子毛笔笔形过程中,若达到预设的变形条件,则按如下步骤对所述笔形进行变形:S1:以所述笔形的对称轴线上的质点根据预先设计的弹簧质点模型对所述质点进行迭代积分,得到所述变形后质点的坐标,所述弹簧质点模型为:所述笔形的对称轴线上连接的第i与第i+1的两个质点间为拉伸弹簧,连接第i个质点与第i+2个质点间的弹簧为弯曲弹簧;

S2:根据变形后质点的坐标计算笔形边缘的坐标;

S3:根据笔形边缘坐标绘制变形后的笔形,

所述预设的变形条件为:在除顿笔和回锋的转弯笔迹处,笔形宽度大于预设的最小笔形宽度值和最短的质点间距离的较大值,且笔形角度和行进角度相差在60°~90°。

2.如权利要求1所述的电子毛笔书写笔形变形方法,其特征在于,所述笔形的对称轴线上的质点在靠近笔尖处相对密集,在靠近笔杆处相对稀疏,其质点间的间距按如下公式计算:其中,Li为第i个质点与前一质点的距离,i从0开始,Ls为笔形总的长度,i为当前是第几个点,从0开始,N为预设的质点总数。

3.如权利要求1所述的电子毛笔书写笔形变形方法,其特征在于,S1具体采用Verlet积分算法进行迭代,公式如下:r(t)为t时刻质点的坐标,开始变形时刻为t,Δt为时间增量,M为质点质量,f(t)为质点所受的合力,合力包括:弹簧形变力:

Fk=ks×(ls-distance1)

其中,Fk为弹性力,ks为与质点连接弹簧的弹性系数,ls为弹簧的原长度,distance1为当前弹簧的长度;

弹簧阻尼力:

其中,Fd为弹簧阻尼力,Kd为与弹簧的阻尼系数,V1x为弹簧一端的质点在X方向上的速度,V2x为弹簧另一端的质点在X方向上的速度,dx为弹簧的两端质点间在X方向上的距离,V1y为弹簧一端的质点在Y方向上的速度,V2y为弹簧另一端的质点在Y方向上的速度,dy为弹簧的两端质点间在Y方向上的距离;

阻力:

Fr=Kr×Vm/M

其中,Fr表示阻力,Kr为阻尼系数,Vm为质点运动速度,M为质点质量。

4.如权利要求1所述的电子毛笔书写笔形变形方法,其特征在于,如果在绘制笔形时,已经开始变形,而判断的结果为不需要变形,则需要检查对称轴线上的质点是否在一条直线上,如果是,则变形结束,否则继续变形。

说明书 :

电子毛笔书写笔形变形方法

技术领域

[0001] 本发明涉及计算机图形处理技术领域,特别涉及一种电子毛笔书写笔形变形方法。

背景技术

[0002] 现有的基于图形模型的毛笔模拟方法,使用测试设备已经能够体会到毛笔书写的感觉,能够体现较多的毛笔书法特征,但是由于笔形单一且没有变化,与毛笔柔软、灵活多变的特性不符,在转弯处容易出现突起,因此,需要考虑增加基于物理力学模型,使笔形能够变化。
[0003] 根据对现有的毛笔模拟状态和成果的研究,一般对毛笔笔形变化的模拟均基于三维空间进行,有以圆锥笔形模拟笔头,有的研究每个笔毛的变形,有的将笔毛分成多簇,研究每一簇的中心骨架变形。在力学算法方面,有利用弹簧力量计算,也有通过能量最小化计算,都需要对受力进行细致的分析以及大量的积分运算。
[0004] 通过三维空间模拟笔头的变形,在模拟毛笔的真实感效果上比二维方式要好很多,但是三维模拟需要大量运算,对于常规的PC机来说都不能满足其流畅运行的需要,更不用说对于运算能力比较低的手持设备了,因此,虽然三维方式模拟更逼真,表现力更强,但对于手持设备来说可用性不高。

发明内容

[0005] (一)要解决的技术问题
[0006] 本发明要解决的技术问题是:如何实现在计算量较低的情况下,对毛笔笔形进行流畅的变形,且能达到较高的笔画真实感。
[0007] (二)技术方案
[0008] 为解决上述技术问题,本发明提供了一种电子毛笔书写笔形变形方法,其特征在于,在绘制电子毛笔笔形过程中,若达到预设的变形条件,则按如下步骤对所述笔形进行变形:
[0009] S1:以所述笔形的对称轴线上的质点根据预先设计的弹簧质点模型对所述质点进行迭代积分,得到所述变形后质点的坐标;
[0010] S2:根据变形后质点的坐标计算笔形边缘的坐标;
[0011] S3:根据笔形边缘坐标绘制变形后的笔形。
[0012] 其中,所述弹簧质点模型为:所述对称轴线上连接的第i与第i+1的两个质点间为拉伸弹簧,连接第i个质点与第i+2个质点间的弹簧为弯曲弹簧。
[0013] 其中,所述对称轴线上的质点在靠近笔尖处相对密集,在靠近笔杆处相对稀疏,其质点间的间距按如下公式计算:
[0014]
[0015] 其中,Li为第i个质点与前一质点的距离,i从0开始,Ls为笔形总的长度,i为当前是第几个点,从0开始,N为预设的质点总数。
[0016] 其中,S1具体采用Verlet积分算法进行迭代,公式如下:
[0017]
[0018] r(t)为t时刻质点的坐标,开始变形时刻为t,Δt为时间增量,M为质点质量,f(t)为质点所受的合力,合力包括:
[0019] 弹簧形变力:
[0020] Fk=ks×(ls-distance1)
[0021] 其中,Fk为弹性力,ks为与质点连接弹簧的弹性系数,ls为弹簧的原长度(预设参数),distance1为当前弹簧的长度;
[0022] 弹簧阻尼力:
[0023]
[0024] 其中,Fd为弹簧阻尼力,Kd为与弹簧的阻尼系数,V1x为弹簧一端的质点在X方向上的速度,V2x为弹簧另一端的质点在X方向上的速度,dx为弹簧的两端质点间在X方向上的距离,V1y为弹簧一端的质点在Y方向上的速度,V2y为弹簧另一端的质点在Y方向上的速度,dy为弹簧的两端质点间在Y方向上的距离;
[0025] 阻力:
[0026] Fr=Kr×Vm/M
[0027] 其中,Fr表示阻力,Kr为阻尼系数,Vm为质点运动速度,M为质点质量。
[0028] 其中,所述预设的变形条件为:在除顿笔和回锋的转弯笔迹处,笔形宽度大于预设的最小笔形宽度值和最短的质点间距离的较大值,且笔形角度和行进角度相差在60°~90°。
[0029] 其中,如果在绘制笔形时,已经开始变形,而判断的结果为不需要变形,则需要检查对称轴线上的质点是否在一条直线上,如果是,则变形结束,否则继续变形。
[0030] 其中,以变形前笔形的对称轴线为笔形骨架,笔形形状的计算方式如下:
[0031] 在对称轴线上靠近笔尖的一端,按以下公式计算笔形边缘的点:
[0032]
[0033] 其中,R为笔形边缘点到对称轴线的距离,l为沿对称轴线从笔尖到当前点的距离,rs为靠近笔尖的小圆的半径,所述小圆的圆心为对称轴线上靠近笔尖一端的点;
[0034] 在对称轴线上靠近笔杆的一端,按以下公式计算笔形边缘的点:
[0035]
[0036] 其中,rb为靠近笔杆的大圆的半径,所述大圆的圆心为对称轴线上靠近笔杆一端的点,h为大圆圆心和小圆圆心之间的距离;
[0037] 在对称轴线对应长度为h的一段上,按以下公式计算笔形边缘的点:
[0038]
[0039] 以所述边缘点为控制点采用贝塞尔曲线连接所述边缘点,大圆半径:
[0040] rb=W×pressure
[0041] 根据如下公式确定笔尖方向的小圆半径和h:
[0042] rs=rb×k×pressure
[0043] h=H×pressure
[0044] 其中,H表示预设的最大笔行长度,k为形状比例参数,取值为0~1的浮点数,pressure为触摸屏感应的压力值,该值为量化到0~1浮点数。
[0045] (三)有益效果
[0046] 通过本发明的基于弹簧质点模型的笔形变形方法,实现了对毛笔笔形流畅的变形,同时能达到较高的笔画真实感。

附图说明

[0047] 图1是生成笔迹时的笔迹生成示意图;
[0048] 图2是本发明实施例的一种电子毛笔书写笔形变形方法流程图;
[0049] 图3是图2的方法中所采用的笔形模型示意图;
[0050] 图4是图2的方法中所采用的弹簧质点模型示意图;
[0051] 图5是图2的方法中笔形变形示意图。

具体实施方式

[0052] 下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0053] 首先简单介绍一下如何生成笔,在生成笔迹的转弯处可能发生笔形变形。
[0054] 本发明中生成笔迹时采用贝塞尔曲线插值法,插值示意图如图1所示,插值步骤如下:
[0055] 步骤1,以触摸点(触摸笔滑过时触摸屏感应到的点)为控制点计算贝塞尔曲线轨迹,本实施例中,计算贝塞尔曲线轨迹的方式为:以当前点的前一点为控制点,从当前点的前二点向当前点与当前点的前一点的中点计算贝塞尔曲线轨迹。
[0056] 步骤2,根据以下公式计算插值点:
[0057]
[0058] 其中,insertCount为两点间插值点个数,distance为沿贝塞尔曲线轨迹方向上距离已插值部分最近的一个触摸点到其前一点的距离,width为已插值部分绘制的最后一个笔形的宽度,number_per_shape为每个笔形需要绘制的点的个数。
[0059] 如图1所示,P0、P1、P2、P3为连续的几个触摸点,P3为当前点,当P3触摸事件发生时,笔迹已经处理到IPL0位置(即已插值到IPL0点),此时,计算IPL0到P2间的插值点,根据最后显示笔形宽度width和预设的每个笔形需要绘制的点的个数number_per_shape,采用上述公式计算IPL0和P2两点间插值点个数,其中,distance为从IPL0到P2的曲线长度。
[0060] 步骤3,判断insertCount是否小于1,若小于1,则增加已插值的贝塞尔曲线的长度,跳转到步骤2,否则执行步骤4。
[0061] 步骤4,计算插值点的插值步长stepLength=distance/insertCount。
[0062] 步骤5,按所述步长在所述贝塞尔曲线轨迹上长度为上述distance的部分上插入一个点。
[0063] 步骤6,重复执行步骤2~步骤5,直到最后一个触摸点。由于上述计算贝塞尔曲线轨迹的特殊性(贝塞尔曲线绘制总是从当前点的前二点绘制到当前的前一点与当前点的中点,因此,该中点与当前点之间总是不能被处理),在重复过程中,当已插值的贝塞尔曲线到达最后一个触摸点与其前一触摸点的中点时,在最后一个触摸点到其与其前一触摸点的中点的直线轨迹上按所述步骤2~步骤6进行直线插值,即该中点与当前点之间用直线连接,在直线上按步骤2~步骤6进行插值。
[0064] 如图2所示,为本发明的电子毛笔书写笔形变形方法流程图,在绘制电子毛笔笔形过程中,只有符合条件的一些转弯才需要通过变形来完善书写效果,弥补图形模型的不足,因此设置了是否需要变形的标志,当进行一个触摸点的处理时,首先判断是否需要变形,判断的条件和过程如下:
[0065] 如果是顿笔则不需要变形,因为顿笔应该立刻转变方向,平面变形的效果不好;
[0066] 如果是回峰则不需要变形,因为回峰是在垂直面进行变形,基于平面的变形技术很难模拟;
[0067] 如果笔形宽度太小则不需要变形,因为宽度太小变形没有效果,浪费CPU资源,此处比较的宽度值,有两个参数控制,一个是预设的最小笔形宽度值,另外一个是最短的质点间距离,也就是最靠近笔尖的两个质点距离,小于这个距离则没有弹簧参与计算,不能计算出变形量,笔形宽度将与这两个参数中较大的做比较,且转弯处笔形角度和行进角度相差在60°~90°。
[0068] 如果当前点与前一点(本文中“前一点”或“当前点”之类的术语指的是生成笔迹时笔迹上的触摸点或插值点)的偏转角度在预设的阀值内则需要变形,否则不需要,此处的角度阀值可以根据经验和实验结果确定。
[0069] 若达到上述变形条件时按如下步骤对所述笔形进行变形:
[0070] 步骤S201,以笔形的对称轴线上的质点根据预先设计的弹簧质点模型对所述质点进行迭代积分,得到所述变形后质点的坐标。
[0071] 本实施例中,质点在笔形对称轴线上的设计如图3所示,只要考虑这个对称轴线的变形就能够确定整个形状。在质点的确定上,选择一种不等距离的方式,这种方式能够更好的模拟笔尖更软而笔根部更硬的事实情况,即对称轴线上的质点在靠近笔尖处相对密集,在靠近笔杆处相对稀疏。每个质点的质量相同,质点间距离的选择按照如下公式确定:
[0072]
[0073] 其中,Li为第i个质点与前一质点的距离,i从0开始,Ls为笔形总的长度,i为当前是第几个点,从0开始,N为预设的质点总数。
[0074] 为了达到在二维空间更好地模拟毛笔笔形的变形,本实施例中采用弹簧质点模型来实现笔形变形,弹簧质点理论实现简单、速度相对于其他类似算法是最快速的,因此适合在二维空间模拟毛笔笔形的变形。如图4所示,质点间的弹簧分为两种,一种是拉伸弹簧,连接相邻的两个质点(第i个和第i+1个质点);另一种是弯曲弹簧,连接第i个质点与第i+2个质点。
[0075] 对称轴线模型所受的力主要为弹簧的弹力和与纸面摩擦等产生的阻力,以对称轴线为笔形的骨架,骨架上每个质点的所受的弹簧弹力包括,与每个连接弹簧的弹性形变力与弹簧阻尼力,分别计算如下:
[0076] 弹簧形变力:
[0077] Fk=ks×(ls-distance1)
[0078] 其中,Fk为弹性力,ks为与质点连接弹簧的弹性系数(预设参数),ls为弹簧的原长度(预设参数),distance1为当前弹簧的长度,即弹簧两端点的坐标距离。
[0079] 弹簧阻尼力:
[0080]
[0081] 其中,Fd为弹簧阻尼力,Kd为与弹簧的阻尼系数(预设参数),V1x为弹簧一端的质点在X方向上的速度,V2x为弹簧另一端的质点在X方向上的速度,dx为弹簧的两端质点间在X方向上的距离,V1y为弹簧一端的质点在Y方向上的速度,V2y为弹簧另一端的质点在Y方向上的速度,dy为弹簧的两端质点间在Y方向上的距离,distance1为当前弹簧的长度。
[0082] 笔形在运动过程中还会受到阻力阻止毛笔的运动,这些阻力如毛笔与纸面的摩擦力、笔毛与纸面墨的粘滞力,笔毛之间的粘滞力等,将这些力统一称为阻力,其计算方法是:
[0083] Fr=Kr×Vm/M
[0084] 其中,Fr表示阻力,Kr为阻尼系数(预设参数),Vm为质点运动速度(为X和Y方向的合速度),M为质点质量(预设参数)。
[0085] 弹簧质点算法需要用到积分算法来计算质点带到稳定的状态,我们对比了如下几种积分算法:显示积分算法、隐式积分算法、龙格-库塔积分算法、Verlet积分算法,从计算速度和稳定性方面考虑,优选采用Verlet积分法,公式如下:
[0086]
[0087] r(t)为t时刻质点的坐标,可设置开始变形时刻为t,Δt为时间增量,f(t)为质点所受的合力,即在书写过程中所受的弹簧弹性力Fk,弹簧阻尼力Fd及阻力Fr。M为质点质量。可以推导出质点速度Vm与时间的关系:
[0088]
[0089] 弹簧模型上的质点分为固定点和活动点,如前所述,根据当前触点的压力参数可以计算出当前笔形长度,在笔形模型上,尖端的到笔形大圆圆心的一段对称轴线上覆盖的质点为活动点,表示可以变形部分,笔形大圆圆心到笔形末端的一段对称轴线上覆盖的质点为固定点。变形计算过程为:当笔形从前一点移动到当前点时,固定点直接移动到当前点对应位置,由于与第一个活动点相连的固定点移动位置,导致这两个点之间的距离(distance1)发生变化,distance1在迭代过程中不断变化。根据弹簧基本力学理论,弹簧长度发生变化会产生相应的力,根据下面所述的力学计算,活动点会产生相应于受力的速度变化,从而活动点产生位移,第一个活动点的位移又会牵动与第一个活动点相连的第二个活动点发生位移,如此往复到最后一个活动点产生位移变化,这就是一次迭代过程,本实施例中采用上述Verlet积分法进行迭代。由于活动点之间的作用力是相互的,不会一次迭代就能达到稳定,因此需要多次迭代过程,最终各个活动点的运动速度接近于0,模型趋于稳定,停止迭代,便完成了本次笔形的变形计算。
[0090] 为了便于采用上述弹簧质点模型计算,本实施例的笔形的原形如图3所示,计算笔形的方式如下:
[0091] 在对称轴线上靠近笔尖的一端,按以下公式计算笔形边缘的点:
[0092]
[0093] 其中,R为笔形边缘点到对称轴线的距离,l为沿对称轴线从笔尖到当前点的距离(如图3中从第0点到第4点(当前点)的距离),rs为靠近笔尖的小圆的半径,所述小圆的圆心为对称轴线上靠近笔尖一端的点,如O1点,即O1点到笔尖的对称轴线对应的笔形边缘的点按上述式(1)计算;
[0094] 在对称轴线上靠近笔杆的一端,按以下公式计算笔形边缘的点:
[0095]
[0096] 其中,rb为靠近笔杆的大圆的半径,所述大圆的圆心为对称轴线上靠近笔杆一端的点,如O2点,即O2点到笔杆的对称轴线对应的笔形边缘的点按上述式(2)计算,h为大圆圆心和小圆圆心之间的距离,大圆和小圆的半径为预设值以保证绘制出图3所示笔形。
[0097] 在对称轴线对应长度为h的一段上,按以下公式计算笔形边缘的点:
[0098]
[0099] 以边缘点为控制点采用贝塞尔曲线连接所述边缘点。上述大圆半径:
[0100] rb=W×pressure
[0101] 根据如下公式确定笔尖方向的小圆半径:
[0102] rs=rb×k×pressure
[0103] h=H×pressure
[0104] 其中,H表示预设的最大笔行长度,k为形状比例参数,取值为0~1的浮点数,pressure为触摸屏感应的压力值,该值为量化到0~1浮点数。
[0105] 弹簧质点模型中的质点为骨架线上的点,采用上述的变形方法,变形效果如图5所示。另外,如果已经开始变形,而前面判断的结果为不需要变形,则需要检查骨架上的质点是否在一条直线上,如果是,则变形结束,否则继续变形,也就是说变形停止要看是否骨架已经运动为一条直线。
[0106] 步骤S202,根据变形后质点的坐标计算笔形边缘的坐标,骨架变形后,按上述笔形计算公式计算笔形边缘的点的坐标。
[0107] 步骤S203,根据笔形边缘坐标绘制变形后的笔形。
[0108] 以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。