李文軒
(浙江理工大學(xué)信息學(xué)院,浙江 杭州 310018)
xuchange2022@163.com
浙江省是紡織大省,多種紡織面料的產(chǎn)量均居全國首位,在全球也是最重要的紡織品出口加工地區(qū)之一。基于“小批量、多品種、快設(shè)計(jì)、快出樣、快交貨”敏捷制造的個(gè)性化定制服務(wù)已成為各大龍頭企業(yè)的首選,其中的“快設(shè)計(jì)”尤其是面料花型的快設(shè)計(jì)成為個(gè)性化定制服務(wù)的核心。隨著人們生活節(jié)奏的加快,傳統(tǒng)的圖案創(chuàng)作手法由于效率較低已遠(yuǎn)遠(yuǎn)不能滿足個(gè)性化定制裝飾圖案的需要。而利用計(jì)算機(jī)生成數(shù)字藝術(shù)圖形的方法能有效地解決傳統(tǒng)設(shè)計(jì)存在的問題,實(shí)現(xiàn)裝飾圖案的快速生成。其中,通過混沌動(dòng)力學(xué)中的混沌動(dòng)力系統(tǒng)創(chuàng)造富有美感的裝飾圖案的方法已經(jīng)被證實(shí)是成功有效的。因此,本文基于Qt開發(fā)框架設(shè)計(jì)并實(shí)現(xiàn)了一款混沌動(dòng)力系統(tǒng)圖案生成系統(tǒng),用于生成豐富多彩的具有多種對稱性質(zhì)的圖案,以解決手工設(shè)計(jì)中存在的圖案制作效率低下等問題。
Qt是一個(gè)開源和商業(yè)授權(quán)并進(jìn)的,以跨平臺(tái)框架著稱的,以C++語言為基礎(chǔ)并帶有多種主流語言擴(kuò)展支持的,以圖形用戶界面為主要功能并附有其他系統(tǒng)資源控制類的,提供統(tǒng)一、直觀、強(qiáng)大API的庫函數(shù)集合。
Qt Designer是Qt開發(fā)框架中的GUI界面設(shè)計(jì)工具,其為開發(fā)人員提供了Vertical Layout、Horizontal Layout、Grid Layout、Form Layout等四種布局方式,并且包含Push Button、Group Box、Line Edit、Text Edit、Label、Text Browser、Progress Bar等數(shù)十種組件,通過為不同組件編寫不同的響應(yīng)函數(shù),實(shí)現(xiàn)用戶與系統(tǒng)之間的交互需求。
混沌動(dòng)力系統(tǒng)是一種具有一定規(guī)則的數(shù)學(xué)模型,不同規(guī)則對應(yīng)不同量隨時(shí)間變化的規(guī)律。為進(jìn)一步深入探究其變化過程,研究人員嘗試通過計(jì)算機(jī)對混沌動(dòng)力系統(tǒng)進(jìn)行更為直觀的可視化,發(fā)現(xiàn)可視化產(chǎn)生的圖案具有一定的自然美感和較強(qiáng)的藝術(shù)吸引力,由此產(chǎn)生了混沌動(dòng)力系統(tǒng)圖案。且不同的動(dòng)力系統(tǒng)迭代函數(shù)會(huì)產(chǎn)生不同的圖案,并且函數(shù)本身的性質(zhì)會(huì)決定圖案本身所具有的對稱性。作為自然界中常見的基本性質(zhì),一個(gè)系統(tǒng)具有某種對稱性在數(shù)學(xué)上反映為該系統(tǒng)具有群作用下不變的性質(zhì),在集合上對稱性反映了集合圖形各部分之間的對應(yīng)關(guān)系,即在某種變換下點(diǎn)之間的關(guān)系。由于可視化的結(jié)果最終是以數(shù)字藝術(shù)圖形的形式呈現(xiàn)的,因此本文主要闡述的是離散混沌動(dòng)力系統(tǒng),其數(shù)學(xué)模型如下:
混沌動(dòng)力系統(tǒng)可視化得到的圖案本質(zhì)上是二維平面下的數(shù)字藝術(shù)圖形,因此可以從平面晶體對稱群的角度研究其對稱性。在二維空間的約束下,一共有四類對稱性,分別是平移對稱性、反射對稱性、平移反射對稱性、旋轉(zhuǎn)對稱性,其組合得到的17 個(gè)對稱性集合分別對應(yīng)17 種平面晶體對稱群,使用特定記號(hào)表示,分別為p1、p2、pm、pg、p2mm、p2mg、p2gg、cm、c2mm、p3、p3m1、p31m、p4、p4mm、p4gm、p6、p6mm。CHUNG等人首次全面系統(tǒng)研究了17種平面晶體對稱群所對應(yīng)圖案的可視化,并從理論上提供了對應(yīng)的迭代函數(shù)構(gòu)造方法。GDAWIEC提出基于不動(dòng)點(diǎn)定理的離散混沌動(dòng)力系統(tǒng)可視化方法,并且能夠?qū)Σ煌幕煦鐒?dòng)力系統(tǒng)模型進(jìn)行組合,生成更加豐富的圖案。盡管通過構(gòu)造迭代函數(shù)能夠決定混沌動(dòng)力系統(tǒng)圖案的對稱性,但是其生成的圖案仍具有空間布局單調(diào)和難以人為控制的問題。CHUNG等人首次提出通過構(gòu)造不變映射將鋪砌理論與混沌動(dòng)力系統(tǒng)進(jìn)行結(jié)合的方法,并使用彭羅斯鋪砌結(jié)構(gòu)對混沌動(dòng)力系統(tǒng)圖案進(jìn)行約束,從而生成具有彭羅斯鋪砌結(jié)構(gòu)的混沌動(dòng)力系統(tǒng)圖案,并且提出了一種改進(jìn)的混沌收斂方法。鄒玉茹等人在不變映射的理論基礎(chǔ)上,基于p4平面晶體群對應(yīng)的迭代函數(shù)構(gòu)造新的函數(shù)約束,提出生成具有椅子鋪砌結(jié)構(gòu)的混沌動(dòng)力系統(tǒng)圖案的方法。OUYANG等人在阿基米德鋪砌基本塊上構(gòu)造不變映射,并利用阿基米德鋪砌結(jié)構(gòu)的平移對稱性生成具有阿基米德鋪砌結(jié)構(gòu)的混沌動(dòng)力系統(tǒng)圖案。此類鋪砌結(jié)構(gòu)與動(dòng)力系統(tǒng)結(jié)合的問題,難點(diǎn)在于如何構(gòu)造合適的不變映射,避免鋪砌塊之間的邊縫問題,從而生成點(diǎn)、線、面色彩變化豐富、邊界過渡自然、結(jié)構(gòu)清晰、具有漸變和動(dòng)態(tài)效果的混沌動(dòng)力系統(tǒng)圖案。
混沌動(dòng)力系統(tǒng)圖案生成的具體步驟如下:
(1)根據(jù)混沌動(dòng)力系統(tǒng)圖案所需對稱性,構(gòu)造相應(yīng)迭代函數(shù)。
(2)設(shè)置基本參數(shù),包括生成圖案大小、迭代空間大小、最大迭代次數(shù)、收斂閾值、著色映射數(shù)組。
(3)選取圖案上的一個(gè)像素點(diǎn)。
(7)若小于收斂閾值,迭代終止;否則,重復(fù)步驟(5)、步驟(6),直到達(dá)到最大迭代次數(shù)。
(8)根據(jù)迭代次數(shù),計(jì)算其在著色映射數(shù)組對應(yīng)的索引位置,得到顏色值,對該像素點(diǎn)進(jìn)行著色。
(9)重復(fù)步驟(3)—步驟(8),直到圖案像素點(diǎn)全部遍歷。
本系統(tǒng)基于Qt開發(fā)框架進(jìn)行開發(fā),使用Qt Designer設(shè)計(jì)GUI界面,在實(shí)現(xiàn)混沌動(dòng)力系統(tǒng)圖案生成算法的基礎(chǔ)上,將生成圖案顯示到系統(tǒng)畫布上,并為用戶提供調(diào)整參數(shù)的功能,從而實(shí)現(xiàn)用戶自定義生成混沌動(dòng)力系統(tǒng)圖案的功能。系統(tǒng)板塊分為圖案生成板塊、圖像大小設(shè)置板塊、樣式板塊、顏色板塊、清空板塊、保存板塊,系統(tǒng)主要功能板塊如圖1所示,系統(tǒng)主界面如圖2所示。
圖1 系統(tǒng)主要功能板塊Fig.1 Main function modules of the system
圖2 系統(tǒng)主界面Fig.2 The main interface of the system
本系統(tǒng)共分為六個(gè)板塊,分別對應(yīng)系統(tǒng)的不同功能,下面將分別介紹各個(gè)板塊的具體實(shí)現(xiàn)思路。
(1)圖案生成板塊
本板塊根據(jù)混沌動(dòng)力系統(tǒng)圖案生成的具體步驟編寫相關(guān)算法,實(shí)現(xiàn)混沌動(dòng)力系統(tǒng)圖案生成的功能。本板塊一共可以生成四類混沌動(dòng)力系統(tǒng)圖案,分別為p4、pm、p2mm、p6mm。根據(jù)混沌動(dòng)力系統(tǒng)圖案生成原理,不同種類的混沌動(dòng)力系統(tǒng)圖案需要不同的迭代函數(shù),但是其余生成步驟均一致。因此本系統(tǒng)利用C++語言中的繼承和多態(tài)機(jī)制,對關(guān)鍵代碼進(jìn)行復(fù)用,減少了大量冗余,同時(shí)用戶可以調(diào)整迭代函數(shù)中的相關(guān)參數(shù),在不改變迭代函數(shù)性質(zhì)的基礎(chǔ)上對圖案進(jìn)行調(diào)整。下面以p2mm型混沌動(dòng)力系統(tǒng)圖案生成為例進(jìn)行介紹。
首先,根據(jù)p2mm晶體對稱群的性質(zhì)構(gòu)造迭代函數(shù)。p2mm型混沌動(dòng)力系統(tǒng)圖案擁有關(guān)于軸的反射對稱性和關(guān)于軸的反射對稱性,同時(shí)由于其屬于平面晶體群,因此擁有方向和方向的平移對稱性。動(dòng)力系統(tǒng)迭代的過程可以看作平面上一點(diǎn)運(yùn)動(dòng)的過程,也就是說,下一個(gè)點(diǎn)的位置取決于當(dāng)前點(diǎn)的位置,而在二維空間中,只需要考慮方向和方向的運(yùn)動(dòng),此時(shí)迭代函數(shù)的返回值就可以看作點(diǎn)運(yùn)動(dòng)的增量。
為簡化迭代函數(shù)的構(gòu)造,尤其是平移對稱性的構(gòu)造,選擇使用具有周期性的三角函數(shù)作為迭代函數(shù),對其進(jìn)行線性組合,使其滿足上述公式,最終選擇下列函數(shù)作為p2mm型混沌動(dòng)力系統(tǒng)圖案的迭代函數(shù):
第三,根據(jù)混沌動(dòng)力系統(tǒng)圖案生成步驟(3)—步驟(8)進(jìn)行編程,核心代碼如下:
每個(gè)像素點(diǎn)的最終迭代次數(shù)經(jīng)二次計(jì)算存入Colors數(shù)組,表示在著色映射數(shù)組中的索引位置,程序根據(jù)索引位置獲取顏色信息,進(jìn)行著色,得到最終圖案。核心代碼如下:
生成的四種混沌動(dòng)力系統(tǒng)圖案如圖3所示。
圖3 四種混沌動(dòng)力系統(tǒng)圖案Fig.3 Four chaotic dynamic system patterns
(2)圖像大小設(shè)置板塊
為方便用戶自定義生成圖案的大小,系統(tǒng)提供圖像大小設(shè)置板塊。圖像大小即生成圖案的分辨率,在程序中用x_pixel和y_pixel變量表示。系統(tǒng)在GUI界面提供變量修改功能,用戶利用GUI界面的文本框控件修改變量后,點(diǎn)擊“生成”按鈕,響應(yīng)函數(shù)讀取文本框控件信息,調(diào)整生成圖案的大小,如圖4所示。
圖4 圖像大小調(diào)整Fig.4 The change of pattern size
(3)樣式板塊
為方便用戶對生成圖案的樣式進(jìn)行修改,系統(tǒng)提供樣式板塊。調(diào)整樣式板塊中的和變量(在程序中用x_location和y_location變量表示),改變迭代空間的中心位置,從而實(shí)現(xiàn)對圖案內(nèi)容進(jìn)行移動(dòng)的效果,如圖5所示。調(diào)整樣式板塊中的縮放比例(在程序中用zoom變量表示),改變迭代空間的大小,從而實(shí)現(xiàn)對圖案內(nèi)容進(jìn)行縮放的效果,如圖6所示。
圖5 圖案中心移動(dòng)Fig.5 The movement of pattern center
圖6 圖案縮放Fig.6 The scaling of pattern
(4)顏色板塊
顏色是影響圖案美感的關(guān)鍵性因素,為方便用戶對生成圖案進(jìn)行色彩搭配,系統(tǒng)提供顏色板塊。用戶在文本框中輸入顏色數(shù)量,點(diǎn)擊顏色板塊下的“設(shè)置”按鈕,響應(yīng)函數(shù)讀取文本框信息,打開顏色對話框Color_Dialog,在顏色對話框中添加Table Widget組件,分別顯示每一個(gè)顏色的色塊、RGB值。其中,每一個(gè)色塊實(shí)際上是一個(gè)按鈕控件,為其添加實(shí)現(xiàn)打開顏色對話框功能的響應(yīng)函數(shù),點(diǎn)擊顏色對話框中對應(yīng)顏色的色塊,打開Qt調(diào)色板,利用調(diào)色板選擇所要添加的顏色,如圖7所示。
圖7 圖案顏色調(diào)整Fig.7 The adjustment of pattern color
(5)清空板塊
由于圖案在畫布上顯示,因此需要為用戶提供清空畫布的功能。用戶點(diǎn)擊“清空畫布”按鈕,judge變量設(shè)為1,此時(shí)在繪制方法Draw中調(diào)用fillRect方法,通過在原圖案的基礎(chǔ)上繪制相同大小的白色長方形,實(shí)現(xiàn)畫布清空的功能,如圖8所示。
圖8 圖案清空Fig.8 The clearing of pattern
關(guān)鍵代碼如下:
(6)保存板塊
為方便用戶將生成圖案下載到本地,系統(tǒng)提供保存板塊。用戶點(diǎn)擊“保存圖片”按鈕,響應(yīng)函數(shù)Save打開文件保存對話框QFileDialog,獲取用戶選擇的保存路徑。之后調(diào)用QImage類的save方法,將畫布上生成的混沌動(dòng)力系統(tǒng)圖案保存到本地,如圖9所示。
圖9 圖案保存Fig.9 The save of pattern
核心代碼如下:
利用計(jì)算機(jī)生成數(shù)字藝術(shù)圖形的方法能夠有效解決現(xiàn)今傳統(tǒng)設(shè)計(jì)領(lǐng)域中存在的圖案制作效率低下等問題,提高設(shè)計(jì)效率,為設(shè)計(jì)師提供更多設(shè)計(jì)靈感?;煦鐒?dòng)力系統(tǒng)圖案作為一種經(jīng)典的數(shù)字藝術(shù)圖形,具有豐富的對稱性,能夠體現(xiàn)自然美感,符合人類審美。本文基于Qt開發(fā)框架設(shè)計(jì)并實(shí)現(xiàn)了一款混沌動(dòng)力系統(tǒng)圖案生成系統(tǒng),通過實(shí)現(xiàn)混沌動(dòng)力系統(tǒng)圖案生成算法,生成用戶自定義的混沌動(dòng)力系統(tǒng)圖案。用戶可以根據(jù)GUI界面對圖案的色彩搭配、圖案大小、縮放比例、中心位置、生成參數(shù)進(jìn)行調(diào)整,并最終顯示在畫布上,再通過保存板塊將畫布圖案保存到本地。同時(shí),本文對混沌動(dòng)力系統(tǒng)圖案生成步驟進(jìn)行了歸納和總結(jié),并根據(jù)迭代函數(shù)的構(gòu)造方法構(gòu)造出一種p4型混沌動(dòng)力系統(tǒng)圖案的迭代函數(shù),豐富了圖案樣式。