一种基于向量代数的简明软笔效果生成方法转让专利

申请号 : CN201110269267.7

文献号 : CN102332173B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 刘鹏

申请人 : 浙江万朋网络技术有限公司

摘要 :

本发明涉及一种基于向量代数的简明软笔效果生成方法。本发明方法首先对原始输入的点序列进行移除近似重复点操作,得到采样点序列,根据相邻采样点坐标位置的距离计算并修正得到每个中间点的笔宽;基于向量代数计算中间点的切矢量、法矢量和,并计算的对应点和的对应点,如果存在退化问题,则只计算结束点的;如有退化问题,对点集S进行退化问题的处理得到点集C,如无退化问题,由点集S直接得到点集C;将点集C中的各点作为控制点用二次B样条曲线进行平滑拟合,绘制并填充该B样条曲线,得到最终的模拟效果。本发明方法无需额外数据的支持,从而最大程度的对数据进行压缩,获得更好的网络传输效率,取得更好的流畅性和笔锋笔润效果。

权利要求 :

1.一种基于向量代数的简明软笔效果生成方法,其特征在于该方法的具体步骤是: 步骤(1)对原始输入的点序列进行移除近似重复点的操作,去除坐标位置近似重复的点,得到采样点序列;采样点序列的起始点为Ps、结束点为Pe、中间点为Pi,i为中间点的序号,1≤i≤u,u为中间点的个数; 步骤(2)根据相邻采样点之间坐标位置的距离计算每个中间点Pi的笔宽Wpi,具体方法是: 根据需要,预设最大笔宽Wmax,计算中间点Pi与前驱点Pi-1的距离D, D=‖Pi–Pi-1‖

设定Wnormal=Wmax-1

Wr=Wnormal-Wt

Wnormal、Wt、Wr为中间值

步骤(3)根据前驱点Pi-1修正后的笔宽Wpi-1′修正中间点Pi的笔宽Wpi,其中第一个中间点P1不作修正,直接作为修正第二个中间点P2的笔宽Wp2的依据; 具体方法是:

如果K>Ku,则Wpi′=Wpi-1′×Ku 如果K≤Ku,则Wpi′=Wpi

其中K为相邻两中间点笔宽比,K=Wpi/Wpi-1′ Ku为修正系数,Ku=1.05~1.15 Wpi′为修正后的中间点Pi的笔宽 ;

步骤(4)基于向量代数计算中间点Pi的切矢量Tpi、两个法矢量Npi和Mpi; Tpi=Pi–Pi-1令‖Npi‖=‖Mpi‖=Wpi′

计算Npi的对应点Sni和Mpi的对应点Smi, Sni=Pi+Npi

Smi=Pi+Mpi

对于只有起始点Ps和结束点Pe而没有中间点为Pi情况,则计算结束点Pe的切矢量Tpe、两个法矢量分别Npe和Mpe,以及Npe的对应点Sne和Mpe的对应点Sme,计算方法同上; 步骤(5)对于存在对于只有起始点Ps和结束点Pe而没有中间点Pi的情况,则对点集S进行退化问题的处理得到点集C;此时S={Ps,Pe},定义点Cn1=(Ps+Sne )/2 点Cm1=(Ps+Sme)/2 C={Ps,Cn1,Pe,Cm1}

对于除起始点Ps和结束点Pe外,还有中间点Pi的情况,由点集S直接得到点集C,其中S={Ps,Sn1,Sn2,…,Snu,Pe,Smu,Smu-1,…,Sm2,Sm1}, C={Ps,Cn1,Cn2,…,Cnu,Pe,Cmu,Cmu-1,…,Cm2,Cm1}, Cni=Sni、Cmi=Smi

步骤(6)将点集C中的各点作为控制点用二次B样条曲线进行平滑拟合,绘制并填充该B样条曲线,得到最终的模拟效果。

说明书 :

一种基于向量代数的简明软笔效果生成方法

技术领域

[0001] 本发明属于计算机图形学几何算法领域,涉及一种基于向量代数的简明软笔效果生成方法。

背景技术

[0002] 软笔的线条粗细富于变化,运笔流畅有动感,相对于硬笔单调的笔宽,具有更生动的表现力。
[0003] 软笔模拟的实现分为两个大的方向,一个是面向真实感的仿真,力求实现和真实软笔一样的效果,比如毛笔书法艺术中的顿笔、压笔、笔杆转动和诸如枯笔、飞白与渗透等水墨特效。这个方向的研究需要建立非常复杂的模型,多应用于毛笔字书法和艺术的学术研究;另一个方向是面向非真实感的简明软笔效果模拟,主要是模拟软笔的动感特性和几何变化,比如线条粗细过渡,笔锋、笔润的简明效果实现等。由于简明软笔效果的模拟实现模型简单,因此在各个领域中都有着广泛的应用,特别是在手写输入,网络会议,远程教育,电子白板中,是非常重要的书写沟通和绘制工具。本发明属于后面这个方向。
[0004] 对于简明软笔效果模拟,鼠标和触控技术是最常用的交互输入设备,我们以鼠标为例进行说明。传统的实现模型如下,仅对关键步骤做描述:
[0005] 步骤一,计算线条粗细。鼠标的移动速度与线条的粗细成反比,用解析几何的方法计算笔宽。因为线条粗细的计算依赖鼠标的移动速度,而速度为相邻鼠标点坐标值的距离与时间差的比值,因此要保存额外的计算数据;另外用解析几何的方式进行计算,算法实现的稳定性较差。
[0006] 步骤二,与“纸面”的接触面可认为为圆形,由于鼠标的移动过程中,计算机只能取得一系列的不连续点和当时的画笔宽度,因此需要对连续的点进行平滑处理。
[0007] 步骤三,最终用直线和圆弧进行绘制。
[0008] 使用该模型实现的效果不好,最终绘制的软笔线条不流畅,笔锋笔润表现力不强。此外还需要保存额外的计算数据。

发明内容

[0009] 本发明的主要目的是针对现有技术的不足,提供了一种基于向量代数的简明软笔效果生成方法,该方法能够取得更好的软笔效果,同时最大程度的对数据进行压缩,从而获得更好的网络传输效率和视觉效果。
[0010] 本发明方法的具体步骤为:
[0011] 步骤(1)对原始输入的点序列进行移除近似重复点的操作,去除坐标位置近似重复的点,得到采样点序列;采样点序列的起始点为Ps、结束点为Pe、中间点为Pi,i为中间点的序号,1≤i≤u,u为中间点的个数;
[0012] 步骤(2)根据相邻采样点之间坐标位置的距离计算每个中间点Pi的笔宽Wpi,具体方法是:
[0013] 根据需要,预设最大笔宽Wmax,
[0014] 计算中间点Pi与前驱点Pi-1(与中间点Pi相邻的前一个点)的距离D,[0015] D=‖Pi–Pi-1‖
[0016] 设定Wnormal=Wmax-1
[0017]
[0018] Wr=Wnormal-Wt
[0019] Wnormal、Wt、Wr为中间值
[0020]
[0021]
[0022] 步骤(3)根据前驱点Pi-1修正后的笔宽Wpi-1′修正中间点Pi的笔宽Wpi,其中第一个中间点P1不作修正,直接作为修正第二个中间点P2的笔宽Wp2的依据;
[0023] 具体方法是:
[0024] 如果K>Ku,则Wpi′=Wpi-1′×Ku
[0025] 如果K≤Ku,则Wpi′=Wpi
[0026] 其中K为相邻两中间点笔宽比,K=Wpi/Wpi-1′
[0027] Ku为修正系数,Ku=1.05~1.15
[0028] Wpi′为修正后的中间点Pi的笔宽
[0029] 步骤(4)基于向量代数计算中间点Pi的切矢量Tpi、两个法矢量Npi和Mpi;
[0030] Tpi=Pi–Pi-1
[0031] 令‖Npi‖=‖Mpi‖=Wpi′
[0032] 计算Npi的对应点Sni和Mpi的对应点Smi,
[0033] Sni=Pi+Npi
[0034] Smi=Pi+Mpi
[0035] 对于只有起始点Ps和结束点Pe而没有中间点为Pi情况(退化问题),则计算结束点Pe的切矢量Tpe、两个法矢量分别Npe和Mpe,以及Npe的对应点Sne和Mpe的对应点Sme,计算方法同上。
[0036] 步骤(5)对于存在对于只有起始点Ps和结束点Pe而没有中间点Pi的情况(退化问题),则对点集S进行退化问题的处理得到点集C;此时S={Ps,Pe},定义点Cn1=(Ps+Sne)/2[0037] 点Cm1=(Ps+Sme)/2
[0038] C={Ps,Cn1,Pe,Cm1}
[0039] 对于除起始点Ps和结束点Pe外,还有中间点Pi的情况,由点集S直接得到点集C,其中S={Ps,Sn1,Sn2,…,Snu,Pe,Smu,Smu-1,…,Sm2,Sm1},
[0040] C={Ps,Cn1,Cn2,…,Cnu,Pe,Cmu,Cmu-1,…,Cm2,Cm1},
[0041] Cni=Sni、Cmi=Smi。
[0042] 步骤(6)将点集C中的各点作为控制点用二次B样条曲线进行平滑拟合,绘制并填充该B样条曲线,得到最终的模拟效果,该方法为成熟技术。
[0043] 本发明方法的优点是:根据采样点的坐标位置的疏密间距来计算笔宽,无需额外数据的支持,从而最大程度的对数据进行压缩,可以获得更好的网络传输效率;使用本发明提供的计算公式和计算步骤,软笔模拟可以获得更好的流畅性和笔锋笔润效果。

附图说明

[0044] 图1为本发明的流程图;
[0045] 图2为切向量和法向量计算示意图;
[0046] 图3为Sni点和Smi点计算示意图;
[0047] 图4为对S点集进行退化问题处理的示意图;
[0048] 图5为当S点集的点个数等于4时的处理示意图;
[0049] 图6为当S点集的点个数等于6时的处理示意图;
[0050] 图7为一具体的计算结果示意图;
[0051] 图8为另一具体的计算结果示意图;
[0052] 图9为又一具体的计算结果示意图;
[0053] 图10为一个具体的填充效果。

具体实施方式

[0054] 如图1,一种基于向量代数的简明软笔效果生成方法,具体步骤为:
[0055] 步骤(1)对原始输入的点序列进行移除近似重复点的操作,去除坐标位置近似重复的点,得到采样点序列;采样点序列的起始点为Ps、结束点为Pe、中间点为Pi,i为中间点的序号,1≤i≤u,u为中间点的个数;
[0056] 步骤(2)根据相邻采样点之间坐标位置的距离计算每个中间点Pi的笔宽Wpi,具体方法是:
[0057] 根据需要,预设最大笔宽Wmax,
[0058] 计算中间点Pi与前驱点Pi-1的距离D,D=‖Pi–Pi-1‖(1)
[0059] 设定Wnormal=Wmax–1(2)
[0060]
[0061] Wr=Wnormal-Wt(4)
[0062] Wnormal、Wt、Wr为中间值
[0063]
[0064]
[0065] 步骤(3)根据前驱点Pi-1修正后的笔宽Wpi-1′修正中间点Pi的笔宽Wpi,其中第一个中间点P1不作修正,直接作为修正第二个中间点P2的笔宽Wp2的依据;
[0066] 具体方法是:
[0067] 如果K>Ku,则Wpi'=Wpi-1'×Ku
[0068] 如果K≤Ku,则Wpi'=Wpi(7)
[0069] 其中K为相邻两中间点笔宽比,K=Wpi/Wpi-1'(8)
[0070] Ku为修正系数,Ku=1.05~1.15(9)
[0071] Wpi'为修正后的中间点Pi的笔宽
[0072] 步骤(4)基于向量代数计算中间点Pi的切矢量Tpi、两个法矢量Npi和Mpi;
[0073] Tpi=Pi–Pi-1(10)
[0074] 令‖Npi‖=‖Mpi‖=Wpi'(11)
[0075] 计算Npi的对应点Sni和Mpi的对应点Smi,
[0076] Sni=Pi+Npi(12)
[0077] Smi=Pi+Mpi(13)
[0078] 对于只有起始点Ps和结束点Pe而没有中间点为Pi情况(退化问题),则计算结束点Pe的切矢量Tpe、两个法矢量分别Npe和Mpe,以及Npe的对应点Sne和Mpe的对应点Sme,计算方法同上。
[0079] 步骤(5)根据前面的计算,一般的,可以得到点集S={Ps,Sn1,Sn2,…,Snu,Pe,Smu,Smu-1,…,Sm2,Sm1}。
[0080] 当点集的个数为2时,属于退化问题,此时S={Ps,Pe}。
[0081] 定义点Cn1=(Ps+Sne)/2(14)
[0082] 定义点Cm1=(Ps+Sme)/2(15)
[0083] 得到点集C={Ps,Cn1,Pe,Cm1}(16)
[0084] 当S点集的点个数等于4时,此时S={Ps,Sn1,Pe,Sm1}
[0085] 定义点Cn1=Sn1
[0086] 定义点Cm1=Sm1
[0087] 得到点集C={Ps,Cn1,Pe,Cm1}
[0088] 当S点集的点个数等于6时,此时S={Ps,Sn1,Sn2,Pe,Sm2,Sm1}[0089] 定义点Cn1=Sn1
[0090] 定义点Cn2=Sn2
[0091] 定义点Cm1=Sm1
[0092] 定义点Cm2=Sm2
[0093] 得到点集C={Ps,Cn1,Cn2,Pe,Cm2,Cm1}
[0094] 依次类推,一般的,最终我们可以得到点集C={Ps,Cn1,Cn2,…,Cnu,Pe,Cmu,Cmu-1,…,Cm2,Cm1}。此时Cni=Sni、Cmi=Smi。
[0095] 步骤(6)利用现有技术,将点集C中的各点作为控制点用二次B样条曲线进行平滑拟合,绘制并填充该B样条曲线,得到最终的模拟效果。
[0096] 图2为切向量和法向量计算示意图。切向量为Tpi,计算公式为式(10)。法向量为Npi和Mpi,其中向量模的计算参见式(11),其方向垂直于切向量Tpi。
[0097] 图3为Sni点和Smi点计算示意图。计算公式参见式(12)(13)。
[0098] 图4为对S点集进行退化问题处理的示意图。此时需要计算结束点Pe的笔宽和相关数据,计算方法同图2和图3。然后参见式(14)(15)(16)构造点集C。
[0099] 图5为当S点集的点个数等于4时的处理示意图。此时,点集C的取值为{Ps,Cn1,Pe,Cm1}。
[0100] 图6为当S点集的点个数等于6时的处理示意图。此时,点集C的取值为{Ps,Cn1,Cn2,Pe,Cm2,Cm1}。
[0101] 图7为一具体的计算结果示意图。这是用鼠标作为输入设备生成的结果,书写了汉字“浙江”。该示意图中有采样点的数据和切矢量的数据。
[0102] 图8为另一具体的计算结果示意图。这是用鼠标作为输入设备生成的结果,书写了汉字“浙江”。该示意图中有采样点的数据、点集C和法矢量的数据。
[0103] 图9为又一具体的计算结果示意图。这是用鼠标作为输入设备生成的结果,书写了汉字“浙江”。该示意图中有采样点的数据、点集C和拟合而成的二次B样条曲线。
[0104] 图10为一个具体的填充效果。这是用鼠标作为输入设备生成的结果,书写了汉字“浙江”。