基于Qt的混沌动力系统图案生成系统的设计与实现
2022-08-05李文轩
李文轩
(浙江理工大学信息学院,浙江 杭州 310018)
xuchange2022@163.com
1 引言(Introduction)
浙江省是纺织大省,多种纺织面料的产量均居全国首位,在全球也是最重要的纺织品出口加工地区之一。基于“小批量、多品种、快设计、快出样、快交货”敏捷制造的个性化定制服务已成为各大龙头企业的首选,其中的“快设计”尤其是面料花型的快设计成为个性化定制服务的核心。随着人们生活节奏的加快,传统的图案创作手法由于效率较低已远远不能满足个性化定制装饰图案的需要。而利用计算机生成数字艺术图形的方法能有效地解决传统设计存在的问题,实现装饰图案的快速生成。其中,通过混沌动力学中的混沌动力系统创造富有美感的装饰图案的方法已经被证实是成功有效的。因此,本文基于Qt开发框架设计并实现了一款混沌动力系统图案生成系统,用于生成丰富多彩的具有多种对称性质的图案,以解决手工设计中存在的图案制作效率低下等问题。
2 Qt开发框架及GUI设计(Qt development framework and GUI design)
Qt是一个开源和商业授权并进的,以跨平台框架著称的,以C++语言为基础并带有多种主流语言扩展支持的,以图形用户界面为主要功能并附有其他系统资源控制类的,提供统一、直观、强大API的库函数集合。
Qt Designer是Qt开发框架中的GUI界面设计工具,其为开发人员提供了Vertical Layout、Horizontal Layout、Grid Layout、Form Layout等四种布局方式,并且包含Push Button、Group Box、Line Edit、Text Edit、Label、Text Browser、Progress Bar等数十种组件,通过为不同组件编写不同的响应函数,实现用户与系统之间的交互需求。
3 混沌动力系统图案生成原理(Generation principle of chaotic dynamic system pattern)
混沌动力系统是一种具有一定规则的数学模型,不同规则对应不同量随时间变化的规律。为进一步深入探究其变化过程,研究人员尝试通过计算机对混沌动力系统进行更为直观的可视化,发现可视化产生的图案具有一定的自然美感和较强的艺术吸引力,由此产生了混沌动力系统图案。且不同的动力系统迭代函数会产生不同的图案,并且函数本身的性质会决定图案本身所具有的对称性。作为自然界中常见的基本性质,一个系统具有某种对称性在数学上反映为该系统具有群作用下不变的性质,在集合上对称性反映了集合图形各部分之间的对应关系,即在某种变换下点之间的关系。由于可视化的结果最终是以数字艺术图形的形式呈现的,因此本文主要阐述的是离散混沌动力系统,其数学模型如下:
混沌动力系统可视化得到的图案本质上是二维平面下的数字艺术图形,因此可以从平面晶体对称群的角度研究其对称性。在二维空间的约束下,一共有四类对称性,分别是平移对称性、反射对称性、平移反射对称性、旋转对称性,其组合得到的17 个对称性集合分别对应17 种平面晶体对称群,使用特定记号表示,分别为p1、p2、pm、pg、p2mm、p2mg、p2gg、cm、c2mm、p3、p3m1、p31m、p4、p4mm、p4gm、p6、p6mm。CHUNG等人首次全面系统研究了17种平面晶体对称群所对应图案的可视化,并从理论上提供了对应的迭代函数构造方法。GDAWIEC提出基于不动点定理的离散混沌动力系统可视化方法,并且能够对不同的混沌动力系统模型进行组合,生成更加丰富的图案。尽管通过构造迭代函数能够决定混沌动力系统图案的对称性,但是其生成的图案仍具有空间布局单调和难以人为控制的问题。CHUNG等人首次提出通过构造不变映射将铺砌理论与混沌动力系统进行结合的方法,并使用彭罗斯铺砌结构对混沌动力系统图案进行约束,从而生成具有彭罗斯铺砌结构的混沌动力系统图案,并且提出了一种改进的混沌收敛方法。邹玉茹等人在不变映射的理论基础上,基于p4平面晶体群对应的迭代函数构造新的函数约束,提出生成具有椅子铺砌结构的混沌动力系统图案的方法。OUYANG等人在阿基米德铺砌基本块上构造不变映射,并利用阿基米德铺砌结构的平移对称性生成具有阿基米德铺砌结构的混沌动力系统图案。此类铺砌结构与动力系统结合的问题,难点在于如何构造合适的不变映射,避免铺砌块之间的边缝问题,从而生成点、线、面色彩变化丰富、边界过渡自然、结构清晰、具有渐变和动态效果的混沌动力系统图案。
混沌动力系统图案生成的具体步骤如下:
(1)根据混沌动力系统图案所需对称性,构造相应迭代函数。
(2)设置基本参数,包括生成图案大小、迭代空间大小、最大迭代次数、收敛阈值、着色映射数组。
(3)选取图案上的一个像素点。
(7)若小于收敛阈值,迭代终止;否则,重复步骤(5)、步骤(6),直到达到最大迭代次数。
(8)根据迭代次数,计算其在着色映射数组对应的索引位置,得到颜色值,对该像素点进行着色。
(9)重复步骤(3)—步骤(8),直到图案像素点全部遍历。
4 系统设计(System design)
本系统基于Qt开发框架进行开发,使用Qt Designer设计GUI界面,在实现混沌动力系统图案生成算法的基础上,将生成图案显示到系统画布上,并为用户提供调整参数的功能,从而实现用户自定义生成混沌动力系统图案的功能。系统板块分为图案生成板块、图像大小设置板块、样式板块、颜色板块、清空板块、保存板块,系统主要功能板块如图1所示,系统主界面如图2所示。
图1 系统主要功能板块Fig.1 Main function modules of the system
图2 系统主界面Fig.2 The main interface of the system
5 系统实现(System implementation)
本系统共分为六个板块,分别对应系统的不同功能,下面将分别介绍各个板块的具体实现思路。
(1)图案生成板块
本板块根据混沌动力系统图案生成的具体步骤编写相关算法,实现混沌动力系统图案生成的功能。本板块一共可以生成四类混沌动力系统图案,分别为p4、pm、p2mm、p6mm。根据混沌动力系统图案生成原理,不同种类的混沌动力系统图案需要不同的迭代函数,但是其余生成步骤均一致。因此本系统利用C++语言中的继承和多态机制,对关键代码进行复用,减少了大量冗余,同时用户可以调整迭代函数中的相关参数,在不改变迭代函数性质的基础上对图案进行调整。下面以p2mm型混沌动力系统图案生成为例进行介绍。
首先,根据p2mm晶体对称群的性质构造迭代函数。p2mm型混沌动力系统图案拥有关于轴的反射对称性和关于轴的反射对称性,同时由于其属于平面晶体群,因此拥有方向和方向的平移对称性。动力系统迭代的过程可以看作平面上一点运动的过程,也就是说,下一个点的位置取决于当前点的位置,而在二维空间中,只需要考虑方向和方向的运动,此时迭代函数的返回值就可以看作点运动的增量。
为简化迭代函数的构造,尤其是平移对称性的构造,选择使用具有周期性的三角函数作为迭代函数,对其进行线性组合,使其满足上述公式,最终选择下列函数作为p2mm型混沌动力系统图案的迭代函数:
第三,根据混沌动力系统图案生成步骤(3)—步骤(8)进行编程,核心代码如下:
每个像素点的最终迭代次数经二次计算存入Colors数组,表示在着色映射数组中的索引位置,程序根据索引位置获取颜色信息,进行着色,得到最终图案。核心代码如下:
生成的四种混沌动力系统图案如图3所示。
图3 四种混沌动力系统图案Fig.3 Four chaotic dynamic system patterns
(2)图像大小设置板块
为方便用户自定义生成图案的大小,系统提供图像大小设置板块。图像大小即生成图案的分辨率,在程序中用x_pixel和y_pixel变量表示。系统在GUI界面提供变量修改功能,用户利用GUI界面的文本框控件修改变量后,点击“生成”按钮,响应函数读取文本框控件信息,调整生成图案的大小,如图4所示。
图4 图像大小调整Fig.4 The change of pattern size
(3)样式板块
为方便用户对生成图案的样式进行修改,系统提供样式板块。调整样式板块中的和变量(在程序中用x_location和y_location变量表示),改变迭代空间的中心位置,从而实现对图案内容进行移动的效果,如图5所示。调整样式板块中的缩放比例(在程序中用zoom变量表示),改变迭代空间的大小,从而实现对图案内容进行缩放的效果,如图6所示。
图5 图案中心移动Fig.5 The movement of pattern center
图6 图案缩放Fig.6 The scaling of pattern
(4)颜色板块
颜色是影响图案美感的关键性因素,为方便用户对生成图案进行色彩搭配,系统提供颜色板块。用户在文本框中输入颜色数量,点击颜色板块下的“设置”按钮,响应函数读取文本框信息,打开颜色对话框Color_Dialog,在颜色对话框中添加Table Widget组件,分别显示每一个颜色的色块、RGB值。其中,每一个色块实际上是一个按钮控件,为其添加实现打开颜色对话框功能的响应函数,点击颜色对话框中对应颜色的色块,打开Qt调色板,利用调色板选择所要添加的颜色,如图7所示。
图7 图案颜色调整Fig.7 The adjustment of pattern color
(5)清空板块
由于图案在画布上显示,因此需要为用户提供清空画布的功能。用户点击“清空画布”按钮,judge变量设为1,此时在绘制方法Draw中调用fillRect方法,通过在原图案的基础上绘制相同大小的白色长方形,实现画布清空的功能,如图8所示。
图8 图案清空Fig.8 The clearing of pattern
关键代码如下:
(6)保存板块
为方便用户将生成图案下载到本地,系统提供保存板块。用户点击“保存图片”按钮,响应函数Save打开文件保存对话框QFileDialog,获取用户选择的保存路径。之后调用QImage类的save方法,将画布上生成的混沌动力系统图案保存到本地,如图9所示。
图9 图案保存Fig.9 The save of pattern
核心代码如下:
6 结论(Conclusion)
利用计算机生成数字艺术图形的方法能够有效解决现今传统设计领域中存在的图案制作效率低下等问题,提高设计效率,为设计师提供更多设计灵感。混沌动力系统图案作为一种经典的数字艺术图形,具有丰富的对称性,能够体现自然美感,符合人类审美。本文基于Qt开发框架设计并实现了一款混沌动力系统图案生成系统,通过实现混沌动力系统图案生成算法,生成用户自定义的混沌动力系统图案。用户可以根据GUI界面对图案的色彩搭配、图案大小、缩放比例、中心位置、生成参数进行调整,并最终显示在画布上,再通过保存板块将画布图案保存到本地。同时,本文对混沌动力系统图案生成步骤进行了归纳和总结,并根据迭代函数的构造方法构造出一种p4型混沌动力系统图案的迭代函数,丰富了图案样式。