CN104240176B - 一种具有纤维网络结构的数字纸张的墨水表达方法 - Google Patents
一种具有纤维网络结构的数字纸张的墨水表达方法 Download PDFInfo
- Publication number
- CN104240176B CN104240176B CN201410482698.5A CN201410482698A CN104240176B CN 104240176 B CN104240176 B CN 104240176B CN 201410482698 A CN201410482698 A CN 201410482698A CN 104240176 B CN104240176 B CN 104240176B
- Authority
- CN
- China
- Prior art keywords
- ink
- point
- diffusion
- digital paper
- handwriting
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Image Processing (AREA)
Abstract
本发明公开了一种具有纤维网络结构的数字纸张的墨水表达方法,其特征是按如下步骤进行:1定义所述数字纸张的纤维网络结构;2获取所述数字纸张的纤维网络结构与墨水表达相关的属性并分别进行存储;3设置笔迹宽度系数;4设置墨水油墨粒子的均匀性;5获取书写位置;6填充笔迹;7墨水扩散计算;8墨水过滤计算。本发明能够实时仿真出具有真实性和多样性的墨水表达。
Description
技术领域
本发明涉及计算机信息领域和计算机艺术仿真技术领域,特别涉及一种具有纤维网络结构的数字纸张的墨水表达方法。
背景技术
纸张和墨水相互作用所产生的扩散、过滤等特殊效果,不仅抒发了书法家和绘画家们的特殊感情,而且其简单表象所映射出的多端变化和丰富的意象、意境,给人们留下了无尽的遐想空间和艺术感受。
纸张是由不规则纤维随机分布形成的三维纤维网络,该三维纤维网络具有“整体一致,局部随机”的特点,纤维之间交织交错形成了纤维交叉点和纤维间空隙,纤维交叉点对墨水具有吸收作用,纤维间空隙形成了毛细管,毛细管的毛细作用力对墨水具有吸引作用,会把墨水从一个地方带到另一个地方,当墨水中的油墨粒子大小不均匀的时候,大于纤维间空隙的油墨粒子就会被纤维阻挡而形成一个颜色比较深的区域。
现有专利中,专利号为CN100338612C的“基于毛笔和宣纸的水墨传输模型与仿真”用纤维束连接起来的纤维团组成宣纸的纤维网结构,实现墨水在宣纸上的传输。通过对现有技术的研究,发现存在以下问题:
1、现有技术中对纤维网络的仿真仅仅考虑了纤维分布随机性这个特点,并没有考虑对纤维网络结构有重要影响的纤维的属性,如纤维的形变性、纤维的数目等,在墨水表达仿真中没有充分考虑纤维网络与墨水表达相关的属性,从而严重影响了墨水表达的真实性;
2、现有技术中都是实时对纤维网络进行仿真,仿真墨水表达之前需要等待纤维网络结构的仿真时间,严重影响了墨水表达的实时性。
发明内容
本发明为解决上述现有技术存在的不足之处,提出一种具有纤维网络结构的数字纸张的墨水表达方法,能够实时仿真出具有真实性和多样性的墨水表达。
本发明为解决技术问题采用如下技术方案:
本发明一种具有纤维网络结构的数字纸张的墨水表达方法的特点是按如下步骤进行:
步骤1、定义所述数字纸张的纤维网络结构;
以三维空间中的任意一点为原点O,建立空间直角坐标系O-XYZ;以原点O为起点,分别沿着X轴、Y轴和Z轴的正方向延伸,建立长、宽、高分别为x、y、z的数字纸张纤维网络空间;分别沿着与X轴、Y轴和Z轴平行的方向对数字纸张纤维网络空间进行均匀分割获得细胞网络,以细胞网络中的最小单元为一个单位细胞;
所述数字纸张的纤维网络结构是由单根纤维逐根沿着Z轴负方向沉淀到数字纸张纤维网络空间中并发生形变而形成;所述单根纤维是由若干个纤维粒子组成;设定所述单根纤维的纤维粒子个数为所述单根纤维在所述数字纸张的纤维网络结构中占用的单位细胞的个数;
所述数字纸张的纤维网络结构的属性是存储在所述数字纸张的存储文件中;
步骤2、获取所述数字纸张的纤维网络结构与墨水表达相关的属性并分别进行存储;
设定所述数字纸张的纤维网络结构中具有相同X轴坐标和Y轴坐标的单位细胞为测量单位,以数字纸张平面的一个点对应一个测量单位;
从所述数字纸张的存储文件中获取所述数字纸张的纤维网络结构与墨水表达相关的属性,包括:在所述测量单位中单根纤维与其他单根纤维之间的交叉点数目B、所述测量单位与其相邻的8个测量单位之间存在同一根单根纤维的数目C以及在所述测量单位中单根纤维与其他单根纤维之间的空隙数目P;
设定存储所述交叉点数目B的矩阵为bondedNum[x][y];
设定存储所述同一单根纤维数目C的矩阵为connectingFiberNum[x][y][8];
设定存储所述空隙数目P的矩阵为poreNum[x][y];
并将所述交叉点数目B存储到所述矩阵bondedNum[x][y]中;将所述同一单根纤维数目C存储到所述矩阵connectingFiberNum[x][y][8]中;将所述空隙数目P存储到所述矩阵poreNum[x][y]中;
步骤3、设置笔迹宽度系数;
设定所述笔迹宽度系数为w;
步骤4、设置墨水油墨粒子的均匀性;
设定所述墨水油墨粒子的均匀性为u,u的取值为“均匀”或者“不均匀”;
设定过滤墨水油墨粒子的空隙数目的阈值为l,l∈[80,90];
设定墨水过滤的层次数目为W,W∈[1,4];
步骤5、获取书写位置;
假设书写的初始时刻为t0,书写的终止时刻为tm;ti表示初始时刻t0与终止时刻tm之间采集到书写位置的任意时刻;则ti时刻的书写位置为(xi,yi);0≤i≤m;
步骤6、填充笔迹;
步骤6.1、填充ti时刻的书写位置(xi,yi)处的笔迹;
利用特定的形状填充ti时刻的书写位置(xi,yi)处的笔迹;
定义ti时刻的书写位置(xi,yi)处的笔迹中的任一点的坐标为原始坐标(xin,yin);
步骤6.2、计算所述原始坐标(xin,yin)的旋转坐标(xin',yin');
利用式(1)获得旋转角度
式(1)中,表示ti时刻的书写位置(xi,yi)处的笔迹的旋转角度;
利用式(2)和式(3)分别获得xin'和yin':
以所述旋转坐标(xin',yin')替代所述原始坐标(xin,yin)对ti时刻的书写位置(xi,yi)处的笔迹进行旋转;
步骤6.3、在ti时刻的书写位置(xi,yi)处的笔迹和ti+1时刻的书写位置(xi+1,yi+1)处的笔迹之间进行插值完成连线填充;
步骤7、判断u的取值为“均匀”是否成立,若成立,则执行步骤8;否则,设置所述过滤墨水油墨粒子的空隙数目的阈值l的值和所述墨水过滤的层次数目W的值并执行步骤9;
步骤8、墨水扩散计算;
步骤8.1、获取ti时刻的书写位置(xi,yi)处的笔迹的所有边缘点,定义每个边缘点的墨水量和颜色值并将所有边缘点加入到所定义的“扩散队列”中形成扩散点;
步骤8.2、判断“扩散队列”是否为空,若为空,则完成所述墨水扩散计算;否则,执行步骤8.3;
步骤8.3、获取“扩散队列”中的第一个扩散点作为当前扩散点,把所述当前扩散点的墨水量和颜色值分别赋值给k和c;
步骤8.4、获取所述当前扩散点在矩阵bondedNum[x][y]中存储的值为b以及所述当前扩散点在矩阵connectingFiberNum[x][y][8]中存储的8个值分别为fj,j∈[1,8];
步骤8.5、计算所述当前扩散点吸收的墨水量和所述当前扩散点扩散的墨水量;
设定所述数字纸张的纤维网络结构的吸墨因子为α,α∈[4,8];设定当前扩散点吸收的墨水量为b×α;则所述当前扩散点扩散的墨水量为k-b×α;
步骤8.6、判断k-b×α>0是否成立,若成立,则执行步骤8.7;否则,删除“扩散队列”中的第一个扩散点,并执行步骤8.2;
步骤8.7、令j=1;
步骤8.8、计算所述当前扩散点扩散到第j个相邻点的墨水量kj和所述当前扩散点的第j个相邻点的颜色值cj;
利用式(4)获得所述第j个相邻点的墨水量kj:
利用式(5)获得所述第j个相邻点的颜色值cj;
步骤8.9、以所述第j个相邻点的颜色值cj对所述当前扩散点的第j个相邻点进行着色;
步骤8.10、将所述当前扩散点的第j个相邻点加入到“扩散队列”中;
步骤8.11、将j+1的值赋给j;
步骤8.12、判断j≤8是否成立,若成立,则执行步骤8.8;否则,删除“扩散队列”中的第一个扩散点,并执行步骤8.2;
步骤9、墨水过滤计算;
步骤9.1、获取ti时刻的书写位置(xi,yi)处的笔迹的所有边缘点,定义每个边缘点的墨水量、颜色值和所在的过滤层数;并将所有边缘点加入到所定义的“过滤队列”中形成过滤点;
步骤9.2、判断“过滤队列”是否为空,若为空,则执行步骤8.2;否则,执行步骤9.3;
步骤9.3、获取“过滤队列”中的第一个过滤点作为当前过滤点,把所述当前过滤点的墨水量、颜色值和所在的过滤层数分别赋值给k、c和E;
步骤9.4、判断E<W是否成立,若成立,则执行步骤9.5;否则,将所述当前过滤点加入“扩散队列”中,删除“过滤队列”中第一个过滤点并执行步骤9.2;
步骤9.5、获取所述当前过滤点的8个相邻点在矩阵poreNum[x][y]中存储的值为pj;
步骤9.6、令j=1;
步骤9.7、判断pj≤l是否成立,若成立,则利用式(6)获得所述当前过滤点的第j个相邻点的颜色值gj并执行步骤9.8;否则,利用式(7)和式(8)分别获得所述当前过滤点的第j个相邻点的颜色值gj和墨水量hj,并执行步骤9.9;
gj=c-c×β (6)
式(6)中,β为所述数字纸张的纤维网络结构的过滤因子;β∈(0,1);
gj=c+c×β (7)
hj=k-k×β (8)
步骤9.8、以所述第j个相邻点的颜色值gj对所述当前过滤点的第j个相邻点进行着色,把E+1赋值给所述当前过滤点的第j个相邻点所在的过滤层数,并将所述当前过滤点的第j个相邻点加入“过滤队列”中,执行步骤9.10;
步骤9.9、以所述第j个相邻点的颜色值gj对所述当前过滤点的第j个相邻点进行着色;并将所述当前过滤点的第j个相邻点加入“扩散队列”中;
步骤9.10、将j+1的值赋给j;
步骤9.11、判断j≤8是否成立,若成立,则执行步骤9.7;否则,删除“过滤队列”中第一个过滤点并执行步骤9.2。
本发明具有纤维网络结构的数字纸张的墨水表达方法的特点也在于,所述步骤6.3是按如下方式进行:
设定ti时刻的书写位置(xi,yi)处的笔迹和ti+1时刻的书写位置(xi+1,yi+1)处的笔迹之间需要插值的书写位置为(xiq,yiq);则依次执行步骤6.1和步骤6.2对书写位置(xiq,yiq)处的笔迹进行填充和旋转即完成ti时刻的书写位置(xi,yi)处的笔迹和ti+1时刻的书写位置(xi+1,yi+1)处的笔迹之间的连线填充。
与已有技术相比,本发明的有益效果体现在:
1、本发明通过从数字纸张的存储文件中获取数字纸张的纤维网络结构与墨水表达相关的属性,省去了在墨水表达之前生成数字纸张的纤维网络结构的时间,增强了墨水表达的实时性;
2、本发明所用的数字纸张的纤维网络结构是通过众多单根纤维逐根沉淀并发生形变生成,充分考虑了纤维的属性,从而使得生成的数字纸张的纤维网络结构更接近真实纸张的纤维网络结构,为墨水表达的真实性提供了基础;
3、本发明通过选择由不同属性的纤维生成的数字纸张的纤维网络结构,以实现获得的数字纸张的纤维网络结构与墨水表达相关的属性的多样性,从而实现墨水表达效果的多样性;
4、本发明所获取的属性是数字纸张的纤维网络结构与墨水表达相关的所有属性,为墨水表达的真实性提供了保障。
附图说明
图1为本发明实施例中数字纸张的纤维网络结构生成方法流程图;
图2为本发明实施例中单根纤维的底层纤维的形变流程图;
图3为本发明实施例中单根纤维的底层纤维在单根纤维所在的切面上还没有单根纤维沉淀时的沉淀过程;
图4为本发明实施例中单根纤维的底层纤维在单根纤维所在的切面上已有单根纤维沉淀时的沉淀过程;
图5为本发明实施例中F=1,M=3,f=1000时单根纤维生成的数字纸张的纤维网络结构;
图6为本发明实施例中F=1,M=3,f=1500时单根纤维生成的数字纸张的纤维网络结构;
图7为本发明实施例中F=1,M=5,f=1500时单根纤维生成的数字纸张的纤维网络结构;
图8为本发明实施例中F=3,M=5,f=1500时单根纤维生成的数字纸张的纤维网络结构;
图9为本发明实施例中墨水8邻域扩散方法示意图;
图10为本发明实施例中墨水扩散流程图;
图11为本发明实施例中墨水过滤流程图;
图12为本发明实施例填充笔迹所用的形状;
图13为本发明实施例中f=1000的纤维网络结构的墨水扩散效果;
图14为本发明实施例中f=1200的纤维网络结构的墨水扩散效果;
图15为本发明实施例中f=1500的纤维网络结构的墨水扩散效果;
图16为本发明实施例中f=1700的纤维网络结构的墨水扩散效果;
图17为本发明实施例中f=1500的纤维网络结构的墨水过滤效果;
图18为本发明实施例中f=1700的纤维网络结构的墨水过滤效果;
图19为本发明实施例中利用不同笔迹宽度系数完成的墨水表达作品;
图20为本发明实施例中利用相同笔迹宽度系数完成的墨水表达作品。
具体实施方式
本实施例实现的总体功能为:生成数字纸张的纤维网络结构并测量数字纸张的纤维网络结构与墨水表达相关的属性,定义数字纸张的纤维网络结构与墨水表达相关的属性的文件存储结构,存储所测量的属性到数字纸张的存储文件XML文件中,从数字纸张的存储文件XML文件中读取数字纸张的纤维网络结构与墨水表达相关的属性到矩阵中并基于数字纸张的纤维网络结构与墨水表达相关的属性进行墨水表达,按照如下五个步骤进行:
1、数字纸张的纤维网络结构的生成;
2、数字纸张的纤维网络结构的属性获取;
3、数字纸张的纤维网络结构的属性的文件存储结构的定义;
数字纸张的纤维网络结构与墨水表达相关的属性的文件存储结构是指基于XMLSchema定义生成数字纸张的纤维网络结构与墨水表达相关的属性的文件存储结构的XSD文件;具体的,定义数字纸张的纤维网络结构与墨水表达相关的属性的文件存储结构的XSD文件为:定义数字纸张的纤维网络结构与墨水表达相关的属性对应的元素的名称、数据类型和限制条件,限制条件为对存储的字符串中的空格字符、回车字符、换行字符、Tab字符等字符的处理方式,处理方式包括:(1)保留所存储字符串的原有字符格式;(2)删除字符串中的回车字符、换行字符、Tab字符:(3)用单个空格字符替换回车字符、换行字符、Tab字符:(4)用单个空格字符替换字符串中多个相连的空格字符等;
4、数字纸张的纤维网络结构的属性的文件存储;
基于所定义的数字纸张的纤维网络结构的属性的文件存储结构XSD文件,存储所测量的数字纸张的纤维网络结构与墨水表达相关的属性值到数字纸张的存储文件XML文件中,从而为墨水表达提供数字纸张的纤维网路结构与其相关的属性以提高墨水表达的真实度。
5、墨水表达。
如图1所示,具体的,一种数字纸张的纤维网络结构的生成方法是按如下步骤进行:
步骤1、开始;即表示开始执行数字纸张的纤维网络结构的生成方法;本实施例的开发环境是Windows XP和Matlab2013a,运行环境是Windows XP;
步骤2、建立数字纸张纤维网络空间;
以三维空间中的任意一点为原点O,建立空间直角坐标系O-XYZ,以原点O为起点,分别沿着X轴、Y轴和Z轴的正方向延伸,建立长、宽、高分别为x、y、z的数字纸张纤维网络空间;设定数字纸张纤维网络空间的底面为A;底面A的Z轴坐标值为0;
数字纸张纤维网络空间,确定了三维空间中生成数字纸张的纤维网络结构的位置和空间,数字纸张纤维网络空间的长、宽、高根据数字纸张的纤维网络结构的长、宽、厚度确定;数字纸张纤维网络空间的长和宽等于数字纸张的纤维网络结构的长和宽,数字纸张纤维网络空间的高为数字纸张的纤维网络结构的厚度的1.5倍到3倍;数字纸张的纤维网络结构的长和宽是事先设定的;
分别沿着与X轴、Y轴和Z轴平行的方向对数字纸张纤维网络空间进行均匀分割获得细胞网络,以细胞网络中的最小单元为一个单位细胞;
步骤3、定义单根纤维和数字纸张的纤维网络结构
假设有f根单根纤维记为L={l1,l2,…,lp,…,lf},p∈(1,f),lp表示第p根单根纤维;单根纤维是由若干个纤维粒子组成,设定单根纤维的纤维粒子个数为单根纤维在数字纸张纤维网络结构中占用的单位细胞的个数;设定单根纤维的宽度为一个纤维粒子,厚度为M个纤维粒子,M∈[2,8],将M个纤维粒子厚度的单根纤维分为底层纤维、中层纤维和顶层纤维,定义底层纤维和顶层纤维的厚度分别为1个纤维粒子,则中层纤维的厚度为M-2个纤维粒子;定义低层纤维和顶层纤维中的纤维粒子个数均为n,则中层纤维的粒子个数为(M-2)×n,定义单根纤维的长度为n;
数字纸张的纤维网络结构是由f根单根纤维L逐根沿着Z轴负方向沉淀到数字纸张纤维网络空间中而形成;数字纸张的纤维网络结构的属性是存储在数字纸张的存储文件中;
f越大,生成的数字纸张的纤维网络结构越密实;反之,生成的数字纸张的纤维网络结构越稀疏;F=1,M=3,f=1000时生成的数字纸张的纤维网络结构如图5所示;F=1,M=3,f=1500时生成的数字纸张的纤维网络结构如图6所示;
定义数字纸张的纤维网络结构的底面即为数字纸张纤维网络空间的底面A,数字纸张的纤维网络结构的厚度为f根单根纤维沉淀到数字纸张纤维网络空间后沿着Z轴正方向的沉积高度,数字纸张的纤维网络结构的厚度是单根纤维厚度的10倍到18倍;由单根纤维沿着Z轴负方向沉淀对数字纸张纤维网络空间进行切割,形成单根纤维所在的切面;单根纤维所在的切面的宽度为单根纤维的长度n;单根纤维所在的切面的高度为数字纸张纤维网络空间的高度z;单根纤维所在的切面的方向是由单根纤维的底层纤维所占用的单位细胞在空间直角坐标系O-XYZ中的坐标值获得的;
步骤4、令p=1;初始化p值为1;
步骤5、在数字纸张纤维网络空间的上表面生成位置、方向和长度服从随机分布的第p根单根纤维lp;生成的第p根单根纤维lp平行于底面A;设定单根纤维的平均长度为a,a∈[30,100];设定第p根单根纤维lp的中点位置处的X坐标值和Y坐标值分别为cx和cy,设定第p根单根纤维lp的方向为o,设定第p根单根纤维lp靠近原点O端的X坐标值和Y坐标值分别为tx1和ty1,设定第p根单根纤维lp远离原点O端的X坐标值和Y坐标值分别为tx2和ty2;
本实施例中,第p根单根纤维lp的位置处的X坐标值和Y坐标值分别服从[0,x]上的均匀分布和[0,y]上的均匀分布,第p根单根纤维lp的方向服从[0,2π]上的均匀分布,第p根单根纤维lp的长度n服从均值为a的泊松分布,利用式(1)~式(4)得到tx1和ty1以及tx2和ty2;,从而确定第p根单根纤维lp在数字纸张纤维网络空间的上表面的位置;
步骤6、利用式(5)所示的粒子沉淀规则判断第p根单根纤维lp是否允许沉淀到所在的切面上;若式(5)成立,则表示允许沉淀,并执行步骤7,否则执行步骤5,重新生成第p根单根纤维lp;
hp≤α×Hp (5)
式(5)中,hp为数字纸张纤维网络空间中第p根单根纤维lp所在的切面上所有单根纤维在Z轴方向上沉积高度的平均值;α为常量,α∈[0,1],本实施例中α=0.9;Hp为所有p-1根单根纤维沉积到数字纸张纤维网络空间中所形成的在Z轴方向上沉积高度的平均值;
并有:
式(6)中,hi为β点处数字纸张的纤维网络结构的高度;β点为组成第p根单根纤维lp的底层纤维中第i个纤维粒子所占用的一个单位细胞在底面A上形成的正投影点;1≤i≤n;
式(5)中Hp为:
式(7)中,m为数字纸张的纤维网络结构中上表面的单位细胞的个数,1≤j≤m,m=x×y;Hj为数字纸张的纤维网络结构中上表面的第j个单位细胞所在位置处的数字纸张的纤维网络结构的高度;
步骤7、在第p根单根纤维lp所在的切面中计算第p根单根纤维lp的底层纤维在Z轴方向上的形变;具体形变过程如图2所示,按照如下步骤进行:
步骤7.1、开始;表示开始执行底层纤维在Z轴方向上的形变过程;
步骤7.2、定义第p根单根纤维lp所在的切面中的每个单位细胞的状态为“空”、“形变”或“完成”;“空”以“0”值表征,“形变”以“-1”值表征,“完成”以“p”值表征,“空”是指单位细胞处没有纤维粒子,“形变”是指单位细胞处存在形变中的纤维粒子,“完成”是指单位细胞处的纤维粒子已经完成形变;
步骤7.3、令i=1;
步骤7.4、利用式(8)判断t时刻组成第p根单根纤维lp的底层纤维中第i个纤维粒子是否允许发生形变,若式(8)成立,表示允许形变,则执行步骤7.5;否则,表示不允许形变,则执行步骤7.6;
|Zi-Zq|≤F (8)
式(8)中,Zi表示底层纤维中第i个纤维粒子在数字纸张纤维网络空间的Z轴方向上的高度值;Zq表示与第p根单根纤维lp的底层纤维中第i个纤维粒子相邻的第q个纤维粒子在数字纸张纤维网络空间的Z轴方向上的高度值;F为第p根单根纤维lp的底层纤维的最大形变量,其取值范围为[1,M);
F越大,单根纤维在Z轴方向上形变越大,生成的数字纸张的纤维网络结构越密实,反之,单根纤维在Z轴方向上形变越小,生成的数字纸张的纤维网络结构越稀疏,F=1,M=5,f=1500时单根纤维生成的数字纸张的纤维网络结构如图7所示,F=3,M=5,f=1500时单根纤维生成的数字纸张的纤维网络结构如图8所示;
步骤7.5、底层纤维中的第i个纤维粒子向Z轴负方向沉淀一个单位细胞的高度,执行步骤7.7;设底层纤维中的第i个纤维粒子的坐标为(Xi,Yi,Zi),则底层纤维中的第i个纤维粒子向Z轴负方向沉淀一个单位细胞的高度后的坐标为(Xi,Yi,Zi-1);
步骤7.6、底层纤维中的第i个纤维粒子所在的单位细胞保持t时刻的状态;
步骤7.7、将i+1的值赋给i;
步骤7.8、判断i≤n是否成立;若成立,则执行步骤7.4;否则执行步骤7.9;
步骤7.9、判断第p根单根纤维lp的底层纤维中每个纤维粒子的状态都是“完成”;若是,则完成第p根单根纤维的沉淀;否则,执行步骤7.10;
步骤7.10、将t+1赋值给t,并执行步骤7.3;
步骤7.11、结束。表示底层纤维在Z轴方向上的形变过程执行结束;
假设第p根单根纤维lp所在的切面的宽度上的坐标从左到右递增,高度上的坐标从下到上递增,则第p根单根纤维lp所在的切面上的每个单位细胞的状态按照如下规则进行转变:
1、t时刻,如果单位细胞(Z,i)的状态为“形变”且单位细胞(Z+F,i-1)的状态为“完成”,则t+1时刻单位细胞(Z,i)的状态为“完成”;
2、t时刻,如果单位细胞(Z,i)的状态为“形变”且单位细胞(Z-1,i)的状态为“完成”或“形变”,则t+1时刻单位细胞(Z,i)的状态为“完成”;
3、t时刻,如果单位细胞(Z,i)的状态为“形变”且单位细胞(Z+F,i+1)的状态为“完成”,则t+1时刻单位细胞(Z,i)的状态为“完成”;
4、t时刻,如果单位细胞(Z,i)的状态为“形变”且单位细胞(Z+F,i-1)的状态为“形变”或“空”并且单位细胞(Z-1,i)的状态为“空”并且单位细胞(Z+F,i+1)的状态为“形变”或“空”,则t+1时刻单位细胞(Z,i)的状态为“空”,单位细胞(Z-1,i)的状态为“形变”;
5、t时刻,如果单位细胞(Z,i)的状态为“完成”,则t+1时刻单位细胞(Z,i)的状态为“完成”;
6、t时刻,如果单位细胞(Z,i)的状态为“空”且单位细胞(Z+1,i)的状态为“空”,则t+1时刻单位细胞(Z,i)的状态为“空”;
7、t时刻,如果单位细胞(Z,i)的状态为“空”且单位细胞(Z+1,i)的状态为“完成”,则t+1时刻单位细胞(Z,i)的状态为“空”;
如图3所示,按照箭头方向,从左到右是F=1时,第p根单根纤维lp所在切面还没有单根纤维沉淀时,第p根单根纤维lp的底层纤维在所在切面的沉淀过程;第p根单根纤维lp的底层纤维所占用的单位细胞的初始状态为“形变”,即“-1”,由于第p根单根纤维lp的底层纤维所占用的单位细胞正下方的单位细胞的状态都是“空”,因此,第p根单根纤维lp的底层纤维一直沿着Z轴负方向每次沉淀一个单位细胞的高度向下沉淀,直到沉淀到第p根单根纤维lp所在切面的最底层不能再沉淀为止,然后设置第p根单根纤维lp的底层纤维占用的单位细胞的状态为“完成”,即“p”;
如图4所示,从左到右,从上到下按照箭头的方向是F=1时,第p根单根纤维lp所在切面已有单根纤维沉淀时,第p根单根纤维lp的底层纤维在所在切面的沉淀过程;为了简化,图4中第p根单根纤维lp所在切面中已沉淀的每个单根纤维仅用一个“p”来表示,实际中每个单根纤维要用M个“p”来表示;第p根单根纤维lp的底层纤维有9个纤维粒子;第p根单根纤维lp的底层纤维所占用的单位细胞的初始状态为“形变”,即“-1”,如图4a所示;
由于第p根单根纤维lp的底层纤维所占用的单位细胞正下方的单位细胞的状态都是“空”,因此,第p根单根纤维lp的底层纤维一直沿着Z轴负方向每次沉淀一个单位细胞的高度向下沉淀,直到第p根单根纤维lp的底层纤维所占用的单位细胞正下方的单位细胞有状态不为“空”的时候,如图4b所示;
由于第p根单根纤维lp的底层纤维中第9个纤维粒子正下方的单位细胞的状态为“完成”,所以第p根单根纤维lp的底层纤维中第9个纤维粒子不能向下沉淀,从而第p根单根纤维lp的底层纤维中第9个纤维粒子所占用的单位细胞的状态从“形变”转变到状态“完成”,即“p”,第p根单根纤维lp的底层纤维中第1~8个纤维粒子正下方的单位细胞状态为“空”,所以分别向Z轴负方向沉淀一个单位细胞的高度,如图4c所示;
由于第p根单根纤维lp的底层纤维中第6个纤维粒子正下方的单位细胞的状态为“完成”,所以第p根单根纤维lp的底层纤维中第6个纤维粒子不能向下沉淀,从而第p根单根纤维lp的底层纤维中第6个纤维粒子所占用的单位细胞的状态从“形变”转变到状态“完成”,即“p”;由于第p根单根纤维lp的底层纤维中第8个纤维粒子的高度与第p根单根纤维lp的底层纤维中第9个纤维粒子的高度差值等于F,所以第p根单根纤维lp的底层纤维中第8个纤维粒子所占用的单位细胞的状态从“形变”转变到状态“完成”,即“p”;第p根单根纤维lp的底层纤维中第1~5个纤维粒子和第7个纤维粒子正下方的单位细胞状态为“空”,所以分别向Z轴负方向沉淀一个单位细胞的高度,如图4d所示;
由于第p根单根纤维lp的底层纤维中第2个纤维粒子和第5个纤维粒子正下方的单位细胞的状态为“完成”,所以第p根单根纤维lp的底层纤维中第2个纤维粒子和第5个纤维粒子不能向下沉淀,从而第p根单根纤维lp的底层纤维中第2个纤维粒子和第5个纤维粒子所在单位细胞的状态从“形变”转变到状态“完”,即“p”;由于第p根单根纤维lp的底层纤维中第7个纤维粒子的高度与第p根单根纤维lp的底层纤维中第6个纤维粒子的高度差值等于F,所以第p根单根纤维lp的底层纤维中第7个纤维粒子所占用的单位细胞的状态从“形变”转变到状态“完成”,即“p”;第p根单根纤维lp的底层纤维中第1个纤维粒子、第3个纤维粒子和第4个纤维粒子正下方的单位细胞状态为“空”,所以分别向Z轴负方向沉淀一个单位细胞的高度,如图4e所示;
由于第p根单根纤维lp的底层纤维中第1个纤维粒子的高度和第3个纤维粒子的高度与第p根单根纤维lp的底层纤维中第2个纤维粒子的高度差值等于F,所以第p根单根纤维lp的底层纤维中第1个纤维粒子和第3个纤维粒子所占用的单位细胞的状态从“形变”转变到状态“完成”,即“p”;由于第p根单根纤维lp的底层纤维中第4个纤维粒子的高度与第p根单根纤维lp的底层纤维中第5个纤维粒子的高度差值等于F,所以第p根单根纤维lp的底层纤维中第4个纤维粒子所占用的单位细胞的状态从“形变”转变到状态“完成”,即“p”,如图4f所示;
由于第p根单根纤维lp的底层纤维所占用的单位细胞的状态都为“完成”,所以第p根单根纤维lp的底层纤维的形变完成;
步骤8、将p+1的值赋给p;
步骤9、判断p≤f是否成立,若成立,则执行步骤5,否则,完成数字纸张的纤维网络结构的生成;
步骤10、结束。表示数字纸张的纤维网络结构的生成方法执行结束。
具体的,一种数字纸张的纤维网络结构的属性获取方法是按如下步骤进行:
步骤1、相关属性与存储矩阵的定义
设定数字纸张的纤维网络结构中具有相同X轴坐标和Y轴坐标的单位细胞为测量单位,以数字纸张平面的一个点对应一个测量单位;把具有相同X轴坐标和Y轴坐标的单位细胞作为测量单位,而不是把单位细胞作为测量单位,使所测量的属性在体现数字纸张的纤维网络结构的同时,降低了存储的数据量;
墨水接触到纸张后,在纸张的吸收力作用下渗透到纸张内部,在纸张内部,一部分墨水会在纤维间形成的毛细作用力下,沿着纤维扩散到其相邻的区域,另一部分墨水被纤维交叉点吸收。相邻区域与原区域相连的纤维越多,纤维间形成的毛细作用力越强,墨水扩散的就越快,扩散到相邻区域的墨水就越多;墨水所在区域纤维交叉点数越多,吸墨性越强,吸收的墨水就越多。当墨水中的油墨粒子大小不均匀的时候,大于纤维间空隙的油墨粒子就会被纤维阻挡而不会扩散,从而在墨迹边缘形成一个颜色比较深的区域;
因此定义数字纸张的纤维网络结构与墨水表达的相关属性为:
在测量单位中单根纤维与其他单根纤维之间的交叉点数目B、测量单位与其相邻的其他测量单位之间存在同一根单根纤维的数目C以及在测量单位中单根纤维与其他单根纤维之间的空隙数目P;
设定存储交叉点数目B的矩阵为bondedNum[x][y];设定与测量单位相邻的其他测量单位个数为w;则存储同一单根纤维数目C的矩阵为connectingFiberNum[x][y][w],本实施例中,w=8;
设定存储空隙数目P的矩阵为poreNum[x][y];
步骤2、相关属性的获取
矩阵bondedNum[x][y]中任一元素的值是通过测量单位中所包含的状态为“完成”的单位细胞的总数除以M获得的;
矩阵connectingFiberNum[x][y][w]中任一组的w个值分别为测量单位与其相邻的w个测量单位中相同“p”值的个数;
矩阵poreNum[x][y]中任一元素的值为测量单位中所包含的状态为“空”的单位细胞个数。
具体的,一种具有纤维网络结构的数字纸张的墨水表达方法是按如下步骤进行:
步骤1、获取数字纸张的纤维网络结构与墨水表达相关的属性并分别进行存储;
从数字纸张的存储文件XML文件中获取数字纸张的纤维网络结构与墨水表达相关的属性,包括:在测量单位中单根纤维与其他单根纤维之间的交叉点数目B、测量单位与其相邻的8个测量单位之间存在同一根单根纤维的数目C以及在测量单位中单根纤维与其他单根纤维之间的空隙数目P;
设定存储交叉点数目B的矩阵为bondedNum[x][y];
设定存储同一单根纤维数目C的矩阵为connectingFiberNum[x][y][8];
设定存储空隙数目P的矩阵为poreNum[x][y];
并将交叉点数目B存储到矩阵bondedNum[x][y]中;将同一单根纤维数目C存储到矩阵connectingFiberNum[x][y][8]中;将空隙数目P存储到矩阵poreNum[x][y]中;
步骤2、设置笔迹宽度系数;
设定笔迹宽度系数为w;本实施例用的书写工具是鼠标,w∈[0.1,2.0];笔迹宽度系数w的值越大,则书写笔迹越宽;反之,笔迹宽度系数w的值越小,则书写笔迹越窄;如图19所示的墨水表达作品是用笔迹宽度系数w的值分别为1.8、1.0、0.5、0.1所完成;如图20所示的墨水表达作品是用笔迹宽度系数w=1.5所完成;
步骤3、设置墨水油墨粒子的均匀性;
设定墨水油墨粒子的均匀性为u,u的取值为“均匀”或者“不均匀”;墨水油墨粒子的均匀性对墨水表达的效果有很大的影响;当墨水中的油墨粒子均匀的时候,墨水均匀扩散到数字纸张表面,如图13-16所示;当墨水中的油墨粒子大小不均匀的时候,大于纤维间空隙的油墨粒子就会被纤维阻挡而不会扩散,从而在笔迹边缘形成一个颜色比较深的区域,如图17-18所示;
设定过滤墨水油墨粒子的空隙数目的阈值为l,l∈[80,90];
纸张纤维网络结构中,当空隙足够大以至墨水中最大的油墨粒子也能通过的时候,纸张纤维网络结构中的纤维不能对墨水中的油墨粒子进行过滤;只有当空隙小于墨水中的油墨粒子的时候,纸张纤维网络结构中的纤维才能对墨水中的油墨粒子进行过滤;
本实施例设定某个点处的空隙数目越多,点处的空隙越大;则当某个点处的空隙数目小于阈值l时,点处的空隙比较小,能够对墨水中的油墨粒子进行过滤;反之,当某个点处的空隙数目大于阈值l时,点处的空隙比较大,不能够对墨水中的油墨粒子进行过滤;
设定墨水过滤的层次数目为W,W∈[1,4];
墨水过滤一定层次后,墨水中所剩的都是大小均匀的油墨粒子,墨水开始进行墨水扩散;墨水过滤的层次数目W用来确定何时结束墨水过滤,开始进行墨水扩散;
步骤4、获取书写位置;
假设书写的初始时刻为t0,书写的终止时刻为tm;ti表示初始时刻t0与终止时刻tm之间采集书写位置的任意时刻;则ti时刻的书写位置为(xi,yi);0≤i≤m;不同的书写工具具有不同的采样频率,从而采集书写位置的时刻不同,采集到的书写位置的数目也不同;
步骤5、填充笔迹;
步骤5.1、填充ti时刻的书写位置(xi,yi)处的笔迹;
利用特定的形状填充ti时刻的书写位置(xi,yi)处的笔迹;本实施例用来填充ti时刻的书写位置(xi,yi)处的笔迹的形状为圆形和水滴形,分别如图12中的a和b所示;如图13-18所示,ti时刻的书写位置(xi,yi)处的笔迹是用圆形填充;如图19-20所示,ti时刻的书写位置(xi,yi)处的笔迹是用水滴形填充;
定义ti时刻的书写位置(xi,yi)处的笔迹中的任一点的坐标为原始坐标(xin,yin);n的取值范围由笔迹的形状确定;当笔迹的形状为水滴形时,n∈[1,56];当笔迹的形状为圆形时,n∈[1,37];
步骤5.2、计算原始坐标(xin,yin)的旋转坐标(xin',yin');
利用式(9)获得旋转角度
式(9)中,表示ti时刻的书写位置(xi,yi)处的笔迹的旋转角度;
利用式(10)和式(11)分别获得xin'和yin':
以旋转坐标(xin',yin')替代原始坐标(xin,yin)对ti时刻的书写位置(xi,yi)处的笔迹进行旋转;
步骤5.3、在ti时刻的书写位置(xi,yi)处的笔迹和ti+1时刻的书写位置(xi+1,yi+1)处的笔迹之间进行插值完成连线填充;
当书写工具的采样频率比较低的时候,相邻的两个书写位置的笔迹之间有空白不连续,为了使相邻书写位置的笔迹是连续的,需要在相邻的书写位置的笔迹之间进行插值;本实施例利用线性插值;
设定ti时刻的书写位置(xi,yi)处的笔迹和ti+1时刻的书写位置(xi+1,yi+1)处的笔迹之间需要插值的书写位置为(xiq,yiq);则依次执行步骤5.1和步骤5.2对书写位置(xiq,yiq)处的笔迹进行填充和旋转即完成ti时刻的书写位置(xi,yi)处的笔迹和ti+1时刻的书写位置(xi+1,yi+1)处的笔迹之间的连线填充;
q的值的数目由|xi-xi+1|与|yi-yi+1|之间的最大值决定;假设|xi-xi+1|>|yi-yi+1|,则q的值的数目由|xi-xi+1|决定,|xi-xi+1|越大,q的值的数目就越多,反之,|xi-xi+1|越小,q的值的数目就越少;
步骤6、判断u的取值为“均匀”是否成立,若成立,则执行步骤7;否则,设置过滤墨水油墨粒子的空隙数目的阈值l的值和墨水过滤的层次数目W的值并执行步骤8;本实施例中,l=80,W=2;
步骤7、墨水扩散计算;具体墨水扩散计算过程如图10所示,按照如下步骤进行:
步骤7.1、开始;表示开始进行墨水扩散计算;
步骤7.2、获取ti时刻的书写位置(xi,yi)处的笔迹的所有边缘点,定义每个边缘点的墨水量和颜色值并将所有边缘点加入到所定义的“扩散队列”中形成扩散点;ti时刻的书写位置(xi,yi)处的笔迹的边缘点是ti时刻的书写位置(xi,yi)处的笔迹的边缘上的点;笔迹的边缘点处墨水扩散现象最明显;
步骤7.3、判断“扩散队列”是否为空,若为空,则完成墨水扩散计算;否则,执行步骤7.4;
步骤7.4、获取“扩散队列”中的第一个扩散点作为当前扩散点,把当前扩散点的墨水量和颜色值分别赋值给k和c;
步骤7.5、获取当前扩散点在矩阵bondedNum[x][y]中存储的值为b以及当前扩散点在矩阵connectingFiberNum[x][y][8]中存储的8个值分别为fj,j∈[1,8];f越大,b和fj就越大,墨水扩散地越均匀;f=1000时数字纸张的纤维网络结构的墨水扩散、f=1200时数字纸张的纤维网络结构的墨水扩散、f=1500时数字纸张的纤维网络结构的墨水扩散和f=1700时数字纸张的纤维网络结构的墨水扩散分别如图13-16所示;
步骤7.6、计算当前扩散点吸收的墨水量和当前扩散点扩散的墨水量;
设定数字纸张的纤维网络结构的吸墨因子为α,α∈[4,8],本实施例中α=5;墨水接触到纸张后,在纸张的吸收力作用下渗透到纸张内部,在纸张内部,一部分墨水被纤维交叉点吸收;另一部分墨水会在纤维间形成的毛细作用力下,沿着纤维扩散到其相邻的区域;纤维交叉点越多,吸收的墨水越多;
设定当前扩散点吸收的墨水量为b×α;则当前扩散点扩散的墨水量为k-b×α;本实施例中,当前扩散点采用8邻域扩散法进行墨水扩散,如图9所示,图9中的黑色实心圆点即为当前扩散点,8个空心圆点即为当前扩散点的8个相邻点;当前扩散点扩散的墨水量k-b×α为当前扩散点扩散到8个相邻点的墨水量之和;
步骤7.7、判断k-b×α>0是否成立,若成立,则执行步骤7.8;否则,删除“扩散队列”中的第一个扩散点,并执行步骤7.3;墨水经过的每个点都吸收一部分墨水,因此,随着墨水的扩散,墨水量逐渐减少;如果k-b×α>0表示当前扩散点处的墨水被吸收一部分后还有一部分可以进行扩散,否则,如果k-b×α≤0表示当前扩散点的墨水已被吸收完,没有墨水可以用来进行扩散,从而当前扩散点的墨水扩散结束,删除“扩散队列”中的第一个扩散点,即当前扩散点,以便获取扩散队列中的下一个扩散点;
步骤7.8、令j=1;初始化j的值为1;
步骤7.9、计算当前扩散点扩散到第j个相邻点的墨水量kj和当前扩散点的第j个相邻点的颜色值cj;
利用式(12)获得第j个相邻点的墨水量kj:
利用式(13)获得第j个相邻点的颜色值cj;
式(12)表示随着墨水扩散的进行,墨水量逐渐变少;式(13)表示随着墨水扩散的进行,墨水的颜色逐渐变浅;
fj越大,当前扩散点与第j个相邻点之间存在同一根单根纤维的数目C越多,单根纤维间形成的毛细作用力越强,墨水扩散的就越快,当前扩散点扩散到第j个相邻点的墨水就越多,第j个相邻点的颜色就越深;
步骤7.10、以第j个相邻点的颜色值cj对当前扩散点的第j个相邻点进行着色;
步骤7.11、将当前扩散点的第j个相邻点加入“扩散队列”中;将当前扩散点的第j个相邻点加入“扩散队列”中,以便后续对第j个相邻点吸收的墨水量和第j个相邻点扩散到其8个相邻点的墨水量进行计算,从而保证墨水扩散计算的进行;
步骤7.12、将j+1的值赋给j;
步骤7.13、判断j≤8是否成立,若成立,则执行步骤7.9;否则,删除“扩散队列”中的第一个扩散点,并执行步骤7.3;j≤8表示当前扩散点扩散到8个相邻点的墨水量计算还没有结束,因此,执行步骤7.9继续计算;否则,j>8表示当前扩散点扩散到8个相邻点的墨水量计算已经完成,当前扩散点的墨水扩散结束,删除“扩散队列”中的第一个扩散点,即当前扩散点,以便获取“扩散队列”中的下一个扩散点继续进行墨水扩散计算;
步骤7.14、结束;表示完成墨水表达;
步骤8、墨水过滤计算;具体墨水过滤计算过程如图11所示,按照如下步骤进行:
步骤8.1、开始;表示开始进行墨水过滤计算;
步骤8.2、获取ti时刻的书写位置(xi,yi)处的笔迹的所有边缘点,定义每个边缘点的墨水量、颜色值和所在的过滤层数;并将所有边缘点加入到所定义的“过滤队列”中形成过滤点;墨水过滤从笔迹的边缘处开始;笔迹边缘点所在的过滤层数为0;
步骤8.3、判断“过滤队列”是否为空,若为空,则墨水过滤计算结束,执行步骤7.3;否则,执行步骤8.4;
墨水过滤是纤维网络中的纤维阻挡墨水中比较大的油墨粒子使比较大的油墨粒子不能进行扩散的现象,当墨水过滤结束时墨水中的油墨粒子比较均匀可以进行墨水扩散直到没有墨水可以扩散为止;“过滤队列”为空表示墨水过滤计算结束,执行步骤7.3进行后续的墨水扩散计算;否则,“过滤队列”不为空表示墨水中还有比较大的油墨粒子,需要继续进行墨水过滤计算;
步骤8.4、获取“过滤队列”中的第一个过滤点作为当前过滤点,把当前过滤点的墨水量、颜色值和所在的过滤层数分别赋值给k、c和E;
步骤8.5、判断E<W是否成立,若成立,则执行步骤8.6;否则,将当前过滤点加入“扩散队列”中,删除“过滤队列”中第一个过滤点并执行步骤8.3;E<W表示当当前过滤点处的空隙比较小时,当前过滤点还可以对墨水进行过滤;否则,E≥W表示当前过滤点处墨水中的油墨粒子已经均匀,将当前过滤点加入“扩散队列”中以进行后续的墨水扩散计算;
步骤8.6、获取当前过滤点的8个相邻点在矩阵poreNum[x][y]中存储的值为pj;f越大,pj就越小,墨水过滤地越均匀;f=1500时数字纸张的纤维网络结构的墨水过滤和f=1700时数字纸张的纤维网络结构的墨水过滤分别如图17-18所示;
步骤8.7、令j=1;初始化j的值为1;
步骤8.8、判断pj≤l是否成立,若成立,则利用式(14)获得当前过滤点的第j个相邻点的颜色值gj并执行步骤8.9;否则,利用式(15)和式(16)分别获得当前过滤点的第j个相邻点的颜色值gj和墨水量hj,并执行步骤8.10;
gj=c-c×β (14)
式(14)中,β为数字纸张的纤维网络结构的过滤因子;β∈(0,1);式(14)表示当前过滤点的第j个相邻点处的颜色比书写笔迹的边缘点的颜色深;
gj=c+c×β (15)
hj=k-k×β (16)
式(15)表示当前过滤点的第j个相邻点处的颜色比书写笔迹的边缘点的颜色浅;式(16)表示当前过滤点的第j个相邻点处的墨水量比书写笔迹的边缘点的墨水量少;由于墨水中的油墨粒子被过滤了一部分,所以当前过滤点的第j个相邻点处墨水的颜色比书写笔迹的边缘点的颜色浅,墨水在过滤过程中被数字纸张的纤维网络结构吸收了一部分,所以当前过滤点的第j个相邻点处的墨水量比书写笔迹的边缘点的墨水量少;
pj≤l表示当前过滤点的第j个相邻点处的空隙比较小,会对墨水进行过滤,比较大的油墨粒子的累积使得第j个相邻点处的颜色比书写笔迹的边缘点的颜色深;
否则,pj>l表示当前过滤点的第j个相邻点处的空隙比较大,对墨水没有过滤作用,从而在当前过滤点的第j个相邻点处开始进行墨水扩散;本发明中,当前过滤点的第j个相邻点进入墨水扩散计算后,当前过滤点的第j个相邻点处的墨水扩散到的相邻点也进入墨水扩散计算;
步骤8.9、以第j个相邻点的颜色值gj对当前过滤点的第j个相邻点进行着色,把E+1赋值给当前过滤点的第j个相邻点所在的过滤层数,并将当前过滤点的第j个相邻点加入“过滤队列”中,执行步骤8.11;将当前过滤点的第j个相邻点加入“过滤队列”中,以便计算第j个相邻点的相邻点是否对第j个相邻点处的墨水有过滤作用;
步骤8.10、以第j个相邻点的颜色值gj对当前过滤点的第j个相邻点进行着色;并将当前过滤点的第j个相邻点加入“扩散队列”中;当当前过滤点的第j个相邻点处的空隙数目大于阈值l时,当前过滤点的第j个相邻点不能对墨水进行过滤,加入“扩散队列”中,进行后续的墨水扩散;
步骤8.11、将j+1的值赋给j;
步骤8.12、判断j≤8是否成立,若成立,则执行步骤8.8;否则,删除“过滤队列”中第一个过滤点并执行步骤8.3。j≤8表示当前过滤点的8个相邻点对当前过滤点的墨水过滤计算还没有结束,因此,执行步骤8.8继续计算;否则,j>8表示当前过滤点的8个相邻点对当前过滤点的墨水的过滤计算已经完成,删除“过滤队列”中的第一个过滤点,即当前过滤点,以便获取“过滤队列”中的下一个过滤点;
步骤8.13、结束;表示墨水过滤计算结束。
Claims (2)
1.一种具有纤维网络结构的数字纸张的墨水表达方法,其特征是按如下步骤进行:
步骤1、定义所述数字纸张的纤维网络结构;
以三维空间中的任意一点为原点O,建立空间直角坐标系O-XYZ;以原点O为起点,分别沿着X轴、Y轴和Z轴的正方向延伸,建立长、宽、高分别为x、y、z的数字纸张纤维网络空间;分别沿着与X轴、Y轴和Z轴平行的方向对数字纸张纤维网络空间进行均匀分割获得细胞网络,以细胞网络中的最小单元为一个单位细胞;
所述数字纸张的纤维网络结构是由单根纤维逐根沿着Z轴负方向沉淀到数字纸张纤维网络空间中并发生形变而形成;所述单根纤维是由若干个纤维粒子组成;设定所述单根纤维的纤维粒子个数为所述单根纤维在所述数字纸张的纤维网络结构中占用的单位细胞的个数;
所述数字纸张的纤维网络结构的属性是存储在所述数字纸张的存储文件中;
步骤2、获取所述数字纸张的纤维网络结构与墨水表达相关的属性并分别进行存储;
设定所述数字纸张的纤维网络结构中具有相同X轴坐标和Y轴坐标的单位细胞为测量单位,以数字纸张平面的一个点对应一个测量单位;
从所述数字纸张的存储文件中获取所述数字纸张的纤维网络结构与墨水表达相关的属性,包括:在所述测量单位中单根纤维与其他单根纤维之间的交叉点数目B、所述测量单位与其相邻的8个测量单位之间存在同一根单根纤维的数目C以及在所述测量单位中单根纤维与其他单根纤维之间的空隙数目P;
设定存储所述交叉点数目B的矩阵为bondedNum[x][y];
设定存储所述同一单根纤维数目C的矩阵为connectingFiberNum[x][y][8];
设定存储所述空隙数目P的矩阵为poreNum[x][y];
并将所述交叉点数目B存储到所述矩阵bondedNum[x][y]中;将所述同一单根纤维数目C存储到所述矩阵connectingFiberNum[x][y][8]中;将所述空隙数目P存储到所述矩阵poreNum[x][y]中;
步骤3、设置笔迹宽度系数;
设定所述笔迹宽度系数为w;
步骤4、设置墨水油墨粒子的均匀性;
设定所述墨水油墨粒子的均匀性为u,u的取值为“均匀”或者“不均匀”;
设定过滤墨水油墨粒子的空隙数目的阈值为l,l∈[80,90];
设定墨水过滤的层次数目为W,W∈[1,4];
步骤5、获取书写位置;
假设书写的初始时刻为t0,书写的终止时刻为tm;ti表示初始时刻t0与终止时刻tm之间采集到书写位置的任意时刻;则ti时刻的书写位置为(xi,yi);0≤i≤m;
步骤6、填充笔迹;
步骤6.1、填充ti时刻的书写位置(xi,yi)处的笔迹;
利用特定的形状填充ti时刻的书写位置(xi,yi)处的笔迹;
定义ti时刻的书写位置(xi,yi)处的笔迹中的任一点的坐标为原始坐标(xin,yin);
步骤6.2、计算所述原始坐标(xin,yin)的旋转坐标(xin',yin');
利用式(1)获得旋转角度
式(1)中,表示ti时刻的书写位置(xi,yi)处的笔迹的旋转角度;
利用式(2)和式(3)分别获得xin'和yin':
以所述旋转坐标(xin',yin')替代所述原始坐标(xin,yin)对ti时刻的书写位置(xi,yi)处的笔迹进行旋转;
步骤6.3、在ti时刻的书写位置(xi,yi)处的笔迹和ti+1时刻的书写位置(xi+1,yi+1)处的笔迹之间进行插值完成连线填充;
步骤7、判断u的取值为“均匀”是否成立,若成立,则执行步骤8;否则,设置所述过滤墨水油墨粒子的空隙数目的阈值l的值和所述墨水过滤的层次数目W的值并执行步骤9;
步骤8、墨水扩散计算;
步骤8.1、获取ti时刻的书写位置(xi,yi)处的笔迹的所有边缘点,定义每个边缘点的墨水量和颜色值并将所有边缘点加入到所定义的“扩散队列”中形成扩散点;
步骤8.2、判断“扩散队列”是否为空,若为空,则完成所述墨水扩散计算;否则,执行步骤8.3;
步骤8.3、获取“扩散队列”中的第一个扩散点作为当前扩散点,把所述当前扩散点的墨水量和颜色值分别赋值给k和c;
步骤8.4、获取所述当前扩散点在矩阵bondedNum[x][y]中存储的值为b以及所述当前扩散点在矩阵connectingFiberNum[x][y][8]中存储的8个值分别为fj,j∈[1,8];
步骤8.5、计算所述当前扩散点吸收的墨水量和所述当前扩散点扩散的墨水量;
设定所述数字纸张的纤维网络结构的吸墨因子为α,α∈[4,8];设定当前扩散点吸收的墨水量为b×α;则所述当前扩散点扩散的墨水量为k-b×α;
步骤8.6、判断k-b×α>0是否成立,若成立,则执行步骤8.7;否则,删除“扩散队列”中的第一个扩散点,并执行步骤8.2;
步骤8.7、令j=1;
步骤8.8、计算所述当前扩散点扩散到第j个相邻点的墨水量kj和所述当前扩散点的第j个相邻点的颜色值cj;
利用式(4)获得所述第j个相邻点的墨水量kj:
利用式(5)获得所述第j个相邻点的颜色值cj;
步骤8.9、以所述第j个相邻点的颜色值cj对所述当前扩散点的第j个相邻点进行着色;
步骤8.10、将所述当前扩散点的第j个相邻点加入到“扩散队列”中;
步骤8.11、将j+1的值赋给j;
步骤8.12、判断j≤8是否成立,若成立,则执行步骤8.8;否则,删除“扩散队列”中的第一个扩散点,并执行步骤8.2;
步骤9、墨水过滤计算;
步骤9.1、获取ti时刻的书写位置(xi,yi)处的笔迹的所有边缘点,定义每个边缘点的墨水量、颜色值和所在的过滤层数;并将所有边缘点加入到所定义的“过滤队列”中形成过滤点;
步骤9.2、判断“过滤队列”是否为空,若为空,则执行步骤8.2;否则,执行步骤9.3;
步骤9.3、获取“过滤队列”中的第一个过滤点作为当前过滤点,把所述当前过滤点的墨水量、颜色值和所在的过滤层数分别赋值给k、c和E;
步骤9.4、判断E<W是否成立,若成立,则执行步骤9.5;否则,将所述当前过滤点加入“扩散队列”中,删除“过滤队列”中第一个过滤点并执行步骤9.2;
步骤9.5、获取所述当前过滤点的8个相邻点在矩阵poreNum[x][y]中存储的值为pj;
步骤9.6、令j=1;
步骤9.7、判断pj≤l是否成立,若成立,则利用式(6)获得所述当前过滤点的第j个相邻点的颜色值gj并执行步骤9.8;否则,利用式(7)和式(8)分别获得所述当前过滤点的第j个相邻点的颜色值gj和墨水量hj,并执行步骤9.9;
gj=c-c×β (6)
式(6)中,β为所述数字纸张的纤维网络结构的过滤因子;β∈(0,1);
gj=c+c×β (7)
hj=k-k×β (8)
步骤9.8、以所述第j个相邻点的颜色值gj对所述当前过滤点的第j个相邻点进行着色,把E+1赋值给所述当前过滤点的第j个相邻点所在的过滤层数,并将所述当前过滤点的第j个相邻点加入“过滤队列”中,执行步骤9.10;
步骤9.9、以所述第j个相邻点的颜色值gj对所述当前过滤点的第j个相邻点进行着色;并将所述当前过滤点的第j个相邻点加入“扩散队列”中;
步骤9.10、将j+1的值赋给j;
步骤9.11、判断j≤8是否成立,若成立,则执行步骤9.7;否则,删除“过滤队列”中第一个过滤点并执行步骤9.2。
2.根据权利要求1所述的具有纤维网络结构的数字纸张的墨水表达方法,其特征是所述步骤6.3是按如下方式进行:
设定ti时刻的书写位置(xi,yi)处的笔迹和ti+1时刻的书写位置(xi+1,yi+1)处的笔迹之间需要插值的书写位置为(xiq,yiq);则依次执行步骤6.1和步骤6.2对书写位置(xiq,yiq)处的笔迹进行填充和旋转即完成ti时刻的书写位置(xi,yi)处的笔迹和ti+1时刻的书写位置(xi+1,yi+1)处的笔迹之间的连线填充。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410482698.5A CN104240176B (zh) | 2014-09-19 | 2014-09-19 | 一种具有纤维网络结构的数字纸张的墨水表达方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410482698.5A CN104240176B (zh) | 2014-09-19 | 2014-09-19 | 一种具有纤维网络结构的数字纸张的墨水表达方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104240176A CN104240176A (zh) | 2014-12-24 |
CN104240176B true CN104240176B (zh) | 2017-07-21 |
Family
ID=52228188
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410482698.5A Active CN104240176B (zh) | 2014-09-19 | 2014-09-19 | 一种具有纤维网络结构的数字纸张的墨水表达方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104240176B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116822458A (zh) * | 2023-08-31 | 2023-09-29 | 安徽产业互联数据智能创新中心有限公司 | 数字纸张的生成方法、系统及设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1773516A (zh) * | 2005-07-08 | 2006-05-17 | 天津大学 | 基于毛笔和宣纸的水墨传输模型与仿真算法 |
-
2014
- 2014-09-19 CN CN201410482698.5A patent/CN104240176B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1773516A (zh) * | 2005-07-08 | 2006-05-17 | 天津大学 | 基于毛笔和宣纸的水墨传输模型与仿真算法 |
Non-Patent Citations (4)
Title |
---|
"中国水墨画效果的三维渲染技术研究";余斌;《万方数据学位论文库》;20070814;正文第3章 * |
"水墨扩散效果的数字实现方法与仿真";张文俊;《万方数据学位论文库》;20070611;正文第2-4章 * |
"水墨画非真实成像算法研究及硬件加速实现";金少丹;《万方数据学位论文库》;20091127;正文第2-3章 * |
基于纸的物理建模的水墨画扩散效果仿真;余斌 等;《系统仿真学报》;20050930;第17卷(第9期);第2305-2309页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104240176A (zh) | 2014-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ekdale et al. | Analysis of composite ichnofabrics: an example in uppermost Cretaceous chalk of Denmark | |
DE112010002663B4 (de) | Speichermanagementsysteme, Verfahren zur Verbesserung der Schreib-Lösch-Ausdauerlebenszeit von Speichervorrichtungen und Computerprogrammprodukt | |
CN100338612C (zh) | 基于毛笔和宣纸的水墨传输模型与仿真算法 | |
CN104346291B (zh) | 一种存储器的存储方法及存储系统 | |
CN103955558B (zh) | 一种采集并处理不同行业工勘数据的方法 | |
CN107329747A (zh) | 一种生成多主题样式的方法及装置 | |
CN105551004A (zh) | 一种基于岩心ct图像处理的剩余油微观赋存表示方法 | |
CN106295113A (zh) | 一种复杂油气储层渗透率的定量评价方法 | |
CN104240176B (zh) | 一种具有纤维网络结构的数字纸张的墨水表达方法 | |
CN101770655B (zh) | 一种大规模虚拟动态场景简化方法 | |
CN108897906A (zh) | 一种基于数字岩心模型的储层敏感性伤害模拟方法 | |
CN112232047A (zh) | 一种多维数据采集和自动汇总方法、系统、设备和介质 | |
CN103617291B (zh) | 储层成因单元界面等效表征方法 | |
DE2560672C2 (zh) | ||
CN104573339B (zh) | 页岩气储层的地质参数确定方法和装置 | |
CN112346409B (zh) | 一种快速判断点云包含问题的方法 | |
CN108287940A (zh) | 样点布设的方法、装置、电子设备和存储介质 | |
EP0161298B1 (en) | Method of producing a pattern-bearing article | |
CN103247215A (zh) | 渗透油藏多层合采物理模拟系统及方法 | |
CN104200526B (zh) | 一种数字纸张纤维网络结构的生成方法及其应用 | |
CN109189725A (zh) | 面向规则建筑物的obj文件无损压缩方法 | |
CN104331263B (zh) | 大量空间数据前端展示方法和装置 | |
CN106649234A (zh) | 火炮炮口流场数据可视化处理方法 | |
CN110349238A (zh) | 一种毛笔小楷字渲染方法 | |
CN107944131A (zh) | 一种印刷网点覆盖率模拟测量方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |