本發(fā)明計(jì)算機(jī)輔助設(shè)計(jì)技術(shù)領(lǐng)域,特別是涉及一種基于復(fù)函數(shù)二叉樹(shù)的三維圖像生成方法。
背景技術(shù):
隨著信息技術(shù)發(fā)展和社會(huì)消費(fèi)觀念的變化,除產(chǎn)品的功能外,產(chǎn)品的外觀造型是決定其市場(chǎng)價(jià)值的關(guān)鍵。在產(chǎn)品外觀造型的設(shè)計(jì)過(guò)程中,通常從現(xiàn)有的三維模型數(shù)據(jù)庫(kù)中選擇一個(gè)或多個(gè)三維模型組件作為設(shè)計(jì)基礎(chǔ),通過(guò)對(duì)三維模型組件的參數(shù)修改,以及多個(gè)三維模型組件的組裝調(diào)整,生成產(chǎn)品的三維模型。
為了方便產(chǎn)品外觀造型設(shè)計(jì),通常需要擴(kuò)展三維模型數(shù)據(jù)庫(kù),在三維模型數(shù)據(jù)庫(kù)中增加新的三維模型組件,提高三維模型數(shù)據(jù)庫(kù)的多樣性和豐富性;這樣,通過(guò)調(diào)用三維模型數(shù)據(jù)庫(kù)中的三維模型組件,能夠生成創(chuàng)造性的三維模型。目前,三維模型數(shù)據(jù)庫(kù)的擴(kuò)展通常采用參數(shù)設(shè)計(jì)方法,根據(jù)要構(gòu)建的三維模型的大概形狀,使用參數(shù)工具控制相應(yīng)的參數(shù),通過(guò)原三維模型組件的形變來(lái)產(chǎn)生新三維模型組件,并將新三維模型組件增加到三維模型數(shù)據(jù)庫(kù)中以供調(diào)用。
然而發(fā)明人通過(guò)研究發(fā)現(xiàn),使用參數(shù)設(shè)計(jì)方法擴(kuò)展三維模型數(shù)據(jù)庫(kù),其中的三維模型組件主要是通過(guò)形變來(lái)產(chǎn)生原三維模型組件的變種,無(wú)法生成具有更新穎結(jié)構(gòu)的三維模型組件,這樣難以擴(kuò)展出更豐富多樣的三維模型數(shù)據(jù)庫(kù)以適應(yīng)產(chǎn)品設(shè)計(jì)需求。因此,如何擴(kuò)展出更豐富的三維模型數(shù)據(jù)庫(kù),以滿足產(chǎn)品設(shè)計(jì)需求是本領(lǐng)域技術(shù)人員亟需解決的技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例中提供了一種基于復(fù)函數(shù)二叉樹(shù)的三維圖像生成方法,以解決現(xiàn)有技術(shù)中的三維模型數(shù)據(jù)庫(kù)難以豐富擴(kuò)展的問(wèn)題。
為了解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例公開(kāi)了如下技術(shù)方案:
本發(fā)明實(shí)施例提供了一種基于復(fù)函數(shù)二叉樹(shù)的三維圖像生成方法,該方法包括:
建立初始種群,所述初始種群由至少一個(gè)初始復(fù)函數(shù)表達(dá)式表示;
將每個(gè)初始復(fù)函數(shù)表達(dá)式解析成復(fù)函數(shù)二叉樹(shù);
對(duì)每個(gè)復(fù)函數(shù)二叉樹(shù)進(jìn)行轉(zhuǎn)換操作,得到目標(biāo)復(fù)函數(shù)表達(dá)式;其中,所述轉(zhuǎn)換操作包括交叉操作、變異操作和算術(shù)操作中的一種或多種;
將所述目標(biāo)復(fù)函數(shù)表達(dá)式轉(zhuǎn)換為三維圖像;其中,所述三維圖像包括所述目標(biāo)復(fù)函數(shù)表達(dá)式的實(shí)部對(duì)應(yīng)的三維圖像、所述目標(biāo)復(fù)函數(shù)表達(dá)式的虛部對(duì)應(yīng)的三維圖像和所述目標(biāo)復(fù)函數(shù)表達(dá)式的模對(duì)應(yīng)的三維圖像的一種或多種組合。
可選地,所述建立初始種群包括:
從操作數(shù)集和操作符集中,分別隨機(jī)選擇出相應(yīng)的操作數(shù)和操作符;其中,所述操作數(shù)集包括變量操作數(shù)和常量操作數(shù);所述操作符集包括運(yùn)算操作符和數(shù)學(xué)函數(shù)操作符;
將選擇出的操作數(shù)和操作符排列組合得到初始復(fù)函數(shù)集,所述初始種群由所述初始復(fù)函數(shù)集中的一個(gè)或多個(gè)復(fù)函數(shù)表達(dá)式表示。
可選地,在所述初始復(fù)函數(shù)集中,當(dāng)運(yùn)算操作符相鄰或者統(tǒng)計(jì)得到的括號(hào)個(gè)數(shù)為奇數(shù)時(shí),將相應(yīng)的復(fù)函數(shù)表達(dá)式從所述初始復(fù)函數(shù)集中刪除,并得到新的初始復(fù)函數(shù)集。
可選地,所述建立初始種群包括:
獲取各個(gè)初始復(fù)函數(shù)表達(dá)式的適應(yīng)度值;
優(yōu)先選擇適應(yīng)度值高的初始復(fù)函數(shù)表達(dá)式建立所述初始種群。
可選地,獲取當(dāng)前復(fù)函數(shù)二叉樹(shù)的完成度值;
當(dāng)所述完成度值小于或等于第一閾值時(shí),對(duì)當(dāng)前復(fù)函數(shù)二叉樹(shù)進(jìn)行遺傳操作,得到新的復(fù)函數(shù)二叉樹(shù);
或者,
當(dāng)所述完成度值大于第一閾值時(shí),確定當(dāng)前復(fù)函數(shù)二叉樹(shù)對(duì)應(yīng)的復(fù)函數(shù)表達(dá)式為目標(biāo)復(fù)函數(shù)表達(dá)式。
可選地,所述對(duì)當(dāng)前復(fù)函數(shù)二叉樹(shù)進(jìn)行轉(zhuǎn)換操作,得到新的復(fù)函數(shù)二叉樹(shù),包括:
當(dāng)所述完成度值與所述第一閾值的差大于或等于第二閾值時(shí),對(duì)當(dāng)前復(fù)函數(shù)二叉樹(shù)中節(jié)點(diǎn)個(gè)數(shù)大的分支進(jìn)行轉(zhuǎn)換操作;
或者,
當(dāng)所述完成度與所述第一閾值的差小于第二閾值時(shí),對(duì)當(dāng)前復(fù)函數(shù)二叉樹(shù)中節(jié)點(diǎn)個(gè)數(shù)小的分支進(jìn)行轉(zhuǎn)換操作。
可選地,對(duì)每個(gè)復(fù)函數(shù)二叉樹(shù)進(jìn)行交叉操作,包括:
建立由第一復(fù)函數(shù)二叉樹(shù)和第二復(fù)函數(shù)二叉樹(shù)組成的復(fù)函數(shù)二叉樹(shù)對(duì);
確定第一復(fù)函數(shù)二叉樹(shù)的交叉點(diǎn),以及第二復(fù)函數(shù)二叉樹(shù)的交叉點(diǎn);
交換以交叉點(diǎn)為根的子樹(shù),得到新的第一復(fù)函數(shù)二叉樹(shù)和第二復(fù)函數(shù)二叉樹(shù)。
可選地,建立由第一復(fù)函數(shù)二叉樹(shù)和第二復(fù)函數(shù)二叉樹(shù)組成的復(fù)函數(shù)二叉樹(shù)對(duì);
確定第一復(fù)函數(shù)二叉樹(shù)的交叉點(diǎn),以及第二復(fù)函數(shù)二叉樹(shù)的交叉點(diǎn);
交換以交叉點(diǎn)為根的子樹(shù),得到新的第一復(fù)函數(shù)二叉樹(shù)和第二復(fù)函數(shù)二叉樹(shù)。
可選地,對(duì)所述復(fù)函數(shù)二叉樹(shù)進(jìn)行算術(shù)操作,包括:
在復(fù)函數(shù)二叉樹(shù)上隨機(jī)選擇操作點(diǎn);
在所述操作點(diǎn)上增加算術(shù)運(yùn)算符節(jié)點(diǎn),以及隨機(jī)產(chǎn)生的算術(shù)操作子樹(shù),得到新的復(fù)函數(shù)二叉樹(shù)。
可選地,所述運(yùn)算操作符包括加、減、乘和除中的一種或多種,所述數(shù)學(xué)函數(shù)操作符包括平方、開(kāi)方、指數(shù)函數(shù)、對(duì)數(shù)函數(shù)、三角函數(shù)和雙曲函數(shù)中的一種或多種。
由以上技術(shù)方案可見(jiàn),本發(fā)明實(shí)施例提供的一種基于復(fù)函數(shù)二叉樹(shù)的三維圖像生成方法,通過(guò)建立初始種群,所述初始種群由至少一個(gè)初始復(fù)函數(shù)表達(dá)式表示;將每個(gè)初始復(fù)函數(shù)表達(dá)式解析成復(fù)函數(shù)二叉樹(shù);對(duì)每個(gè)復(fù)函數(shù)二叉樹(shù)進(jìn)行遺傳操作,得到目標(biāo)復(fù)函數(shù)表達(dá)式;其中,所述遺傳操作包括交叉操作、變異操作和算術(shù)操作中的一種或多種;將所述目標(biāo)復(fù)函數(shù)表達(dá)式轉(zhuǎn)換為三維圖像;其中,所述三維圖像包括所述目標(biāo)復(fù)函數(shù)表達(dá)式的實(shí)部對(duì)應(yīng)的三維圖像、所述目標(biāo)復(fù)函數(shù)表達(dá)式的虛部對(duì)應(yīng)的三維圖像和所述目標(biāo)復(fù)函數(shù)表達(dá)式的模對(duì)應(yīng)的三維圖像的一種或多種組合。利用復(fù)函數(shù)的實(shí)部、虛部及模產(chǎn)生的三維圖像作為種子,通過(guò)基于樹(shù)結(jié)構(gòu)的遺傳算法和算術(shù)算法派生,能產(chǎn)生新穎、獨(dú)特的三維外觀造型,有效豐富擴(kuò)展三維模型數(shù)據(jù)庫(kù);而且,該方法為產(chǎn)品設(shè)計(jì)提供輔助,進(jìn)一步方便產(chǎn)品設(shè)計(jì)的實(shí)施。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,對(duì)于本領(lǐng)域普通技術(shù)人員而言,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例提供的一種基于復(fù)函數(shù)二叉樹(shù)的三維圖像生成方法的流程示意圖;
圖2是本發(fā)明實(shí)施例提供的一種初始種群建立方法的流程示意圖;
圖3是本發(fā)明實(shí)施例提供的另一種初始種群的生成方法的流程示意圖;
圖4是本發(fā)明實(shí)施例提供的一種復(fù)函數(shù)二叉樹(shù)的結(jié)構(gòu)示意圖;
圖5是本發(fā)明實(shí)施例提供的一種復(fù)函數(shù)二叉樹(shù)轉(zhuǎn)換操作方法的流程示意圖;
圖6是本發(fā)明實(shí)施例提供的一種復(fù)函數(shù)交叉操作的流程示意圖;
圖7是本發(fā)明實(shí)施例提供的一種交叉后復(fù)函數(shù)二叉樹(shù)的結(jié)構(gòu)示意圖;
圖8是本發(fā)明實(shí)施例提供的一種復(fù)函數(shù)二叉樹(shù)變異操作的流程示意圖;
圖9是本發(fā)明實(shí)施例提供的一種復(fù)函數(shù)二叉樹(shù)變異過(guò)程示意圖;
圖10是本發(fā)明實(shí)施例提供的一種復(fù)函數(shù)二叉樹(shù)算術(shù)操作的流程示意圖;
圖11是本發(fā)明實(shí)施例提供的一種復(fù)函數(shù)表達(dá)式生成的三維圖像的示意圖。
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明中的技術(shù)方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
為了更清楚地描述基于復(fù)函數(shù)二叉樹(shù)的三維圖像生成方法,在本發(fā)明實(shí)施例以藝術(shù)花卉的生成為例進(jìn)行詳細(xì)描述。其中,藝術(shù)花卉可以理解為花卉形狀的三維圖像,該藝術(shù)花卉可以作為三維圖像設(shè)計(jì)的基礎(chǔ)方便用戶設(shè)計(jì),同時(shí)也可以將所述藝術(shù)花卉加入到三維圖像模型數(shù)據(jù)庫(kù)中,方便以后調(diào)用使用。
參見(jiàn)圖1,是本發(fā)明實(shí)施例提供的一種基于復(fù)函數(shù)二叉樹(shù)的三維圖像生成方法的流程示意圖,該方法包括:
步驟S101:建立初始種群,所述初始種群由至少一個(gè)初始復(fù)函數(shù)表達(dá)式表示。
首先初始化種群,建立初始種群;其中,所述初始種群可以由一個(gè)或多個(gè)初始復(fù)函數(shù)表達(dá)式表示。在一個(gè)具體實(shí)施例中,所述初始復(fù)函數(shù)表達(dá)式為f(z)=x+iy,x為實(shí)部,y為虛部,則該初始種群可以由f(z)=x+iy表示。
參見(jiàn)圖2,是本發(fā)明實(shí)施例提供的一種初始種群建立方法的流程示意圖,如圖2所示,該方法包括:
步驟S1011:從操作數(shù)集和操作符集中,分別隨機(jī)選擇出相應(yīng)的操作數(shù)和操作符;其中,所述操作數(shù)集包括變量操作數(shù)和常量操作數(shù);所述操作符集包括運(yùn)算操作符和數(shù)學(xué)函數(shù)操作符。
所述操作數(shù)集包括變量操作數(shù)和常量操作數(shù),例如所述變量操作數(shù)可以為x、y、z等表示的變量,以及所述常量操作數(shù)可以為自然數(shù)或者小數(shù)等任意數(shù)值。所述操作符集包括運(yùn)算操作符和數(shù)學(xué)函數(shù)操作符,例如所述運(yùn)算操作符可以為+、-、*、/、^等操作符,所述數(shù)學(xué)函數(shù)操作符包括數(shù)學(xué)函數(shù)sqrt()、exp()、log(),三角函數(shù)sin()、cos()、tan()、asin()、acos()、atan(),以及雙曲函數(shù)sinh()、consh()、tanh()、asinh()、acosh()、atanh()等。
為了生成初始復(fù)函數(shù)表達(dá)式,從上述操作數(shù)集和操作符集中,分別隨機(jī)選擇出相應(yīng)的操作數(shù)和操作符。在具體實(shí)施時(shí),例如選擇了變量操作數(shù)z和常量操作數(shù)2,以及運(yùn)算操作符-和*,以及數(shù)學(xué)函數(shù)操作符log()、cos()和angle()。
步驟S1012:將選擇出的操作數(shù)和操作符排列組合得到初始復(fù)函數(shù)集,所述初始種群由所述初始復(fù)函數(shù)集中的一個(gè)或多個(gè)復(fù)函數(shù)表達(dá)式表示。
根據(jù)步驟S1011選擇出的操作數(shù)和操作符,對(duì)所述操作數(shù)和操作符進(jìn)行排列組合得到初始復(fù)函數(shù)集。同樣在具體實(shí)施例中,通過(guò)排列組合變量操作數(shù)z和常量操作數(shù)2,運(yùn)算操作符-、*和^,以及數(shù)學(xué)函數(shù)操作符log()、cos()和angle(),可以得到多個(gè)復(fù)函數(shù)表達(dá)式,例如f(z)=log(-z^2)*cos(z)*angle(z^2)、f(z)=log(z^2)*cos(z^2)*angle(z^2),以及f(z)=cos(log(z^2))*angle(z^2)等,并將得到多個(gè)復(fù)函數(shù)表達(dá)式組織成初始復(fù)函數(shù)集。
由于通過(guò)隨機(jī)組合的方式所生成的復(fù)函數(shù)表達(dá)式具有很強(qiáng)的隨機(jī)性,為了保證初始種群的復(fù)函數(shù)表達(dá)式正確性,本發(fā)明實(shí)施例還對(duì)初始種群進(jìn)行驗(yàn)證,該方法還包括:
步驟S1013:在所述初始復(fù)函數(shù)集中,當(dāng)運(yùn)算操作符相鄰或者統(tǒng)計(jì)得到的括號(hào)個(gè)數(shù)為奇數(shù)時(shí),將相應(yīng)的復(fù)函數(shù)表達(dá)式從所述初始復(fù)函數(shù)集中刪除,并得到新的初始復(fù)函數(shù)集。
遍歷初始復(fù)函數(shù)集中的每個(gè)復(fù)函數(shù)表達(dá)式,并對(duì)每個(gè)復(fù)函數(shù)表達(dá)式進(jìn)行校驗(yàn)。
在一個(gè)具體的復(fù)函數(shù)表達(dá)式中,如果運(yùn)算操作符相鄰,例如對(duì)于隨機(jī)生成的復(fù)函數(shù)表達(dá)式f(z)=log(-z^2)-*cos(z)*angle(z^2),由于運(yùn)算操作符-和運(yùn)算操作符*相鄰,不是有效的復(fù)函數(shù)表達(dá)式,因此將該復(fù)函數(shù)表達(dá)式從初始復(fù)函數(shù)集中刪除。
在另一個(gè)具體的復(fù)函數(shù)表達(dá)式中,統(tǒng)計(jì)該復(fù)函數(shù)表達(dá)式中的括號(hào)個(gè)數(shù),通過(guò)判斷括號(hào)個(gè)數(shù)是否平衡對(duì)復(fù)函數(shù)表達(dá)式進(jìn)行校驗(yàn),例如對(duì)于隨機(jī)生成的復(fù)函數(shù)表達(dá)式f(z)=log(-z^2)*cos(z)*angle(z^2)),統(tǒng)計(jì)得到該復(fù)函數(shù)表達(dá)式中括號(hào)個(gè)數(shù)為9即奇數(shù),則確定該復(fù)函數(shù)表達(dá)式的括號(hào)不平衡,進(jìn)一步,該復(fù)函數(shù)表達(dá)式不是有效的復(fù)函數(shù)表達(dá)式,同樣將該復(fù)函數(shù)表達(dá)式從初始復(fù)函數(shù)集中刪除。
按照上述過(guò)程,對(duì)初始復(fù)函數(shù)集中的每個(gè)復(fù)函數(shù)表達(dá)式進(jìn)行校驗(yàn),將無(wú)效的復(fù)函數(shù)表達(dá)式刪除,得到新的初始復(fù)函數(shù)集。進(jìn)而,從上述初始復(fù)函數(shù)集中選擇任意多個(gè)復(fù)函數(shù)表達(dá)式作為初始種群。
為了提高三維圖像的生成效率,參見(jiàn)圖3,是本發(fā)明實(shí)施例提供的另一種初始種群的生成方法的流程示意圖,該方法包括:
步驟S1014:獲取各個(gè)初始復(fù)函數(shù)表達(dá)式的適應(yīng)度值。
在具體實(shí)施時(shí),可以使用MATLAB或者其他軟件生成各個(gè)初始復(fù)函數(shù)表達(dá)式的三維圖像,其中,對(duì)于每個(gè)初始復(fù)函數(shù)表達(dá)式,該初始復(fù)函數(shù)表達(dá)式的模、實(shí)部和虛部分別對(duì)應(yīng)生成各自的三維圖像,即一個(gè)初始復(fù)函數(shù)表達(dá)式對(duì)應(yīng)三個(gè)三維圖像。在第一種實(shí)施情況下,用戶可以對(duì)每個(gè)三維圖像設(shè)定相應(yīng)的適應(yīng)度值。在第二種實(shí)施情況下,用戶可以輸入目標(biāo)三維圖像的邊框線條,比對(duì)初始復(fù)函數(shù)表達(dá)式的三維圖像的邊緣與所述邊框線條的距離,并將該距離的平均值作為所述適應(yīng)度值。
步驟S1015:優(yōu)先選擇適應(yīng)度值高的初始復(fù)函數(shù)表達(dá)式建立所述初始種群。
當(dāng)初始種群包括多個(gè)初始復(fù)函數(shù)表達(dá)式時(shí),從多個(gè)初始復(fù)函數(shù)表達(dá)式中選擇適應(yīng)度值高的一個(gè)或多個(gè)復(fù)函數(shù)表達(dá)式建立所述初始種群。
步驟S102:將每個(gè)初始復(fù)函數(shù)表達(dá)式解析成復(fù)函數(shù)二叉樹(shù)。
將初始種群中的每個(gè)初始復(fù)函數(shù)表達(dá)式解析成復(fù)函數(shù)二叉樹(shù)。具體地,將初始種群中的每個(gè)復(fù)函數(shù)表達(dá)式作為字符串,根據(jù)運(yùn)算順序,用解析算法構(gòu)造復(fù)函數(shù)表達(dá)式二叉樹(shù)。一棵復(fù)函數(shù)表示二叉樹(shù)是一個(gè)復(fù)函數(shù)(f(z)z=x+iy,x為實(shí)數(shù)部分,y為虛數(shù)部分)操作數(shù)及數(shù)學(xué)操作符組成的有限節(jié)點(diǎn)集,該集是空集或者是由根及兩棵互不相交的稱為左、右子樹(shù)的二叉樹(shù)組成。二叉樹(shù)的中序遍歷序列是一個(gè)合法的復(fù)函數(shù)數(shù)學(xué)表達(dá)式。
在一個(gè)具體實(shí)施例中,參見(jiàn)圖4,是本發(fā)明實(shí)施例提供的一種復(fù)函數(shù)二叉樹(shù)的結(jié)構(gòu)示意圖,復(fù)函數(shù)Parent1的表達(dá)式為f(z)=log(-z^2)*cos(z)*angle(z^2)和復(fù)函數(shù)Parent2的表達(dá)式f(z)=sqrt(z)*cos(-z^2)*cot(-z*0.5),可以表示成如圖4所示的二叉樹(shù)結(jié)構(gòu)。
步驟S103:對(duì)每個(gè)復(fù)函數(shù)二叉樹(shù)進(jìn)行轉(zhuǎn)換操作,得到目標(biāo)復(fù)函數(shù)表達(dá)式;其中,所述轉(zhuǎn)換操作包括交叉操作、變異操作和算術(shù)操作中的一種或多種。
在本發(fā)明實(shí)施例中,可以通過(guò)迭代的對(duì)每個(gè)復(fù)函數(shù)二叉樹(shù)進(jìn)行多次轉(zhuǎn)換操作,得到目標(biāo)復(fù)函數(shù)表達(dá)式。參見(jiàn)圖5,是本發(fā)明實(shí)施例提供的一種復(fù)函數(shù)二叉樹(shù)轉(zhuǎn)換操作方法的流程示意圖,如圖5所示,本發(fā)明實(shí)施例示出了通過(guò)迭代方式得到目標(biāo)復(fù)函數(shù)表達(dá)式的過(guò)程:
步驟S1031:獲取當(dāng)前復(fù)函數(shù)二叉樹(shù)的完成度值。
在第一種實(shí)施情況下,所述完成度值可以理解為迭代次數(shù)值;對(duì)于初始復(fù)函數(shù)表達(dá)式的復(fù)函數(shù)二叉樹(shù),則所述完成度值可以設(shè)置為1。
在第二種實(shí)施情況下,所述完成度值可以理解為復(fù)雜度值,所述復(fù)雜度值可以用當(dāng)前復(fù)函數(shù)表達(dá)式中節(jié)點(diǎn)數(shù)目表征;例如對(duì)于初始復(fù)函數(shù)表達(dá)式f(z)=log(-z^2)*cos(z)*angle(z^2)的復(fù)函數(shù)二叉樹(shù),總共具有13個(gè)節(jié)點(diǎn),所述完成度值可以為13。
步驟S1032:當(dāng)所述完成度值小于或等于第一閾值時(shí),對(duì)當(dāng)前復(fù)函數(shù)二叉樹(shù)進(jìn)行轉(zhuǎn)換操作,得到新的復(fù)函數(shù)二叉樹(shù)。
根據(jù)步驟S1031中兩種實(shí)施情況,同樣對(duì)于第一種實(shí)施情況,當(dāng)完成度值為迭代次數(shù)值時(shí),所述第一閾值可以理解為用戶預(yù)設(shè)的迭代操作次數(shù)。在具體實(shí)施時(shí),如果所述第一閾值為2,則從初始復(fù)函數(shù)表達(dá)式開(kāi)始進(jìn)行迭代計(jì)算,初始復(fù)函數(shù)表達(dá)式的復(fù)函數(shù)二叉樹(shù)完成度為1,由于初始復(fù)函數(shù)二叉樹(shù)的完成度小于第一閾值,則對(duì)初始復(fù)函數(shù)表達(dá)式的復(fù)函數(shù)二叉樹(shù)進(jìn)行轉(zhuǎn)換操作,得到新的復(fù)函數(shù)二叉樹(shù);累加所述完成度值,新的復(fù)函數(shù)二叉樹(shù)作為當(dāng)前復(fù)函數(shù)二叉樹(shù),且對(duì)應(yīng)的完成度為2;由于此時(shí)當(dāng)前復(fù)函數(shù)二叉樹(shù)的完成度2等于第一閾值,則繼續(xù)對(duì)當(dāng)前復(fù)函數(shù)二叉樹(shù)進(jìn)行轉(zhuǎn)換操作,得到新的復(fù)函數(shù)二叉樹(shù),通過(guò)累加完成度,新的復(fù)函數(shù)二叉樹(shù)作為當(dāng)前復(fù)函數(shù)二叉樹(shù),對(duì)應(yīng)完成度為3。
對(duì)于第二種實(shí)施情況,當(dāng)完成度值為復(fù)雜度值時(shí),所述第一閾值可以理解為用戶預(yù)設(shè)的復(fù)雜度值。在具體實(shí)施時(shí),如果所述第一閾值為18,則從初始復(fù)函數(shù)表達(dá)式開(kāi)始進(jìn)行迭代計(jì)算,初始復(fù)函數(shù)表達(dá)式的復(fù)函數(shù)二叉樹(shù)完成度為13,由于初始復(fù)函數(shù)二叉樹(shù)的完成度小于第一閾值,則對(duì)初始復(fù)函數(shù)表達(dá)式的復(fù)函數(shù)二叉樹(shù)進(jìn)行轉(zhuǎn)換操作,得到新的復(fù)函數(shù)二叉樹(shù);統(tǒng)計(jì)新的復(fù)函數(shù)二叉樹(shù)的節(jié)點(diǎn)數(shù)目更新完成度值為17,新的復(fù)函數(shù)二叉樹(shù)作為當(dāng)前復(fù)函數(shù)二叉樹(shù),且對(duì)應(yīng)的完成度為17;由于此時(shí)當(dāng)前復(fù)函數(shù)二叉樹(shù)的完成度17小于第一閾值,則繼續(xù)對(duì)當(dāng)前復(fù)函數(shù)二叉樹(shù)進(jìn)行轉(zhuǎn)換操作,得到新的復(fù)函數(shù)二叉樹(shù),通過(guò)統(tǒng)計(jì)新的復(fù)函數(shù)二叉樹(shù)的節(jié)點(diǎn)數(shù)更新完成度為22,新的復(fù)函數(shù)二叉樹(shù)作為當(dāng)前復(fù)函數(shù)二叉樹(shù),對(duì)應(yīng)完成度為22。
另外,為了提高轉(zhuǎn)換操作的效率,在本發(fā)明實(shí)施例還提供一種轉(zhuǎn)換操作控制方法,該方法包括:
當(dāng)所述完成度值與所述第一閾值的差大于或等于第二閾值時(shí),對(duì)當(dāng)前復(fù)函數(shù)二叉樹(shù)中節(jié)點(diǎn)個(gè)數(shù)大的分支進(jìn)行轉(zhuǎn)換操作。在初始迭代時(shí),當(dāng)前復(fù)函數(shù)二叉樹(shù)的完成度與第一閾值的差距較大,且大于或等于第二閾值時(shí),需要對(duì)當(dāng)前復(fù)函數(shù)二叉樹(shù)進(jìn)行較大差異度的轉(zhuǎn)換操作,因此此時(shí)對(duì)當(dāng)前復(fù)函數(shù)二叉樹(shù)中節(jié)點(diǎn)個(gè)數(shù)大的分支進(jìn)行相應(yīng)的轉(zhuǎn)換操作。
當(dāng)所述完成度與所述第一閾值的差小于第二閾值時(shí),對(duì)當(dāng)前復(fù)函數(shù)二叉樹(shù)中節(jié)點(diǎn)個(gè)數(shù)小的分支進(jìn)行轉(zhuǎn)換操作。在迭代尾聲時(shí),當(dāng)前復(fù)函數(shù)二叉樹(shù)的完成度與第一閾值的差距較小,且小于第二閾值時(shí),需要對(duì)當(dāng)前復(fù)函數(shù)二叉樹(shù)進(jìn)行較小差異度的微調(diào),因此此時(shí)對(duì)當(dāng)前復(fù)函數(shù)二叉樹(shù)中節(jié)點(diǎn)個(gè)數(shù)小的分支進(jìn)行轉(zhuǎn)換操作。
通過(guò)這種動(dòng)態(tài)調(diào)整的方式,能夠有效提高轉(zhuǎn)換操作的效率。當(dāng)然需要說(shuō)明的是,所述第二閾值可以設(shè)置為任意數(shù)值,在本發(fā)明實(shí)施例中不做限定。
在本發(fā)明實(shí)施例中,對(duì)復(fù)函數(shù)二叉樹(shù)進(jìn)行轉(zhuǎn)換操作,可以包括交叉操作、變異操作和算術(shù)操作的一種或多種組合操作。
參見(jiàn)圖6,是本發(fā)明實(shí)施例提供的一種復(fù)函數(shù)交叉操作的流程示意圖,對(duì)復(fù)函數(shù)二叉樹(shù)執(zhí)行交叉操作包括:
步驟S201:建立由第一復(fù)函數(shù)二叉樹(shù)和第二復(fù)函數(shù)二叉樹(shù)組成的復(fù)函數(shù)二叉樹(shù)對(duì)。
在具體實(shí)施時(shí),可以從初始種群中選擇任意兩個(gè)復(fù)函數(shù)表達(dá)式對(duì)應(yīng)的復(fù)函數(shù)二叉樹(shù),例如選擇第一復(fù)函數(shù)二叉樹(shù)和第二復(fù)函數(shù)二叉樹(shù)組成復(fù)函數(shù)二叉樹(shù)對(duì);或者,從初始種群中選擇第一復(fù)函數(shù)表達(dá)式,并將第一復(fù)函數(shù)表達(dá)式的復(fù)函數(shù)二叉樹(shù)作為第一復(fù)函數(shù)二叉樹(shù),隨機(jī)生成第二復(fù)函數(shù)表達(dá)式,并將第二復(fù)函數(shù)表達(dá)式的復(fù)函數(shù)二叉樹(shù)作為第二復(fù)函數(shù)二叉樹(shù),將第一復(fù)函數(shù)二叉樹(shù)和第二復(fù)函數(shù)二叉樹(shù)組成復(fù)函數(shù)二叉樹(shù)對(duì)。
步驟S202:確定第一復(fù)函數(shù)二叉樹(shù)的交叉點(diǎn),以及第二復(fù)函數(shù)二叉樹(shù)的交叉點(diǎn)。
同樣參見(jiàn)圖4,在由復(fù)函數(shù)Parent1的表達(dá)式f(z)=log(-z^2)*cos(z)*angle(z^2)及復(fù)函數(shù)Parent2的表達(dá)式f(z)=sqrt(z)*cos(-z^2)*cot(-z*0.5)所對(duì)應(yīng)的復(fù)函數(shù)二叉樹(shù)對(duì)中,選擇復(fù)函數(shù)Parent1的angle節(jié)點(diǎn)作為交叉點(diǎn)A,選擇復(fù)函數(shù)Parent2的cot節(jié)點(diǎn)作為交叉點(diǎn)B。需要說(shuō)明的是,在具體實(shí)施時(shí),可以隨機(jī)選擇確定第一復(fù)函數(shù)二叉樹(shù)的交叉點(diǎn)和第二復(fù)函數(shù)二叉樹(shù)的交叉點(diǎn)。
步驟S203:交換以交叉點(diǎn)為根的子樹(shù),得到新的第一復(fù)函數(shù)二叉樹(shù)和第二復(fù)函數(shù)二叉樹(shù)。
參見(jiàn)圖7,是本發(fā)明實(shí)施例提供的一種交叉后復(fù)函數(shù)二叉樹(shù)的結(jié)構(gòu)示意圖,將第一復(fù)函數(shù)二叉樹(shù)中相應(yīng)的交叉點(diǎn)為根的子樹(shù)替換為第二復(fù)函數(shù)交叉樹(shù)中相應(yīng)的交叉點(diǎn)為根的子樹(shù),第二復(fù)函數(shù)中相應(yīng)的交叉點(diǎn)為根的子樹(shù)替換為第一復(fù)函數(shù)交叉樹(shù)相應(yīng)的交叉點(diǎn)為根的子樹(shù),得到原第一復(fù)函數(shù)二叉樹(shù)的子樹(shù)Children1,作為新的第一復(fù)函數(shù)二叉樹(shù),以及第二復(fù)函數(shù)二叉樹(shù)的子樹(shù)Children2,作為新的第二復(fù)函數(shù)二叉樹(shù)。
而且,在生成新的復(fù)函數(shù)二叉樹(shù)之后,通過(guò)步驟S1013的判斷如果新產(chǎn)生的復(fù)函數(shù)二叉樹(shù)不能映射為合法的復(fù)函數(shù)表達(dá)式,或者其模、實(shí)部、虛部均無(wú)法用計(jì)算機(jī)展現(xiàn)生成的三維圖像,則淘汰該復(fù)函數(shù)二叉樹(shù)。進(jìn)一步執(zhí)行交叉操作,直到得到合法的且能夠生成三維圖像的復(fù)函數(shù)二叉樹(shù)為止。
參見(jiàn)圖8,是本發(fā)明實(shí)施例提供的一種復(fù)函數(shù)二叉樹(shù)變異操作的流程示意圖,如圖8所示,對(duì)方復(fù)函數(shù)二叉樹(shù)執(zhí)行變異操作包括:
步驟S301:在復(fù)函數(shù)二叉樹(shù)上隨機(jī)選擇變異點(diǎn)。
同時(shí)參見(jiàn)圖9,是本發(fā)明實(shí)施例提供的一種復(fù)函數(shù)二叉樹(shù)變異過(guò)程示意圖。在圖9中,以復(fù)函數(shù)表達(dá)式以f(z)=log(-z^2)*angle(z^2)對(duì)應(yīng)的二叉樹(shù)作為父輩樹(shù)Parent,在復(fù)函數(shù)二叉樹(shù)中隨機(jī)選擇*節(jié)點(diǎn)即圖9中A點(diǎn)所示的節(jié)點(diǎn)作為變異點(diǎn)。
步驟S302:將隨機(jī)產(chǎn)生的子樹(shù)替換以變異點(diǎn)為根的子樹(shù),得到新的復(fù)函數(shù)二叉樹(shù)。
隨機(jī)產(chǎn)生子樹(shù)Subtree,將父輩樹(shù)Parent的變異點(diǎn)之下的節(jié)點(diǎn)替換為子樹(shù)Subtree,從而得到該父輩樹(shù)Parent的后代樹(shù)Child,該后代樹(shù)Child是新的復(fù)函數(shù)二叉樹(shù)。
而且,在生成新的復(fù)函數(shù)二叉樹(shù)之后,通過(guò)步驟S1013的判斷如果新產(chǎn)生的復(fù)函數(shù)二叉樹(shù)不能映射為合法的復(fù)函數(shù)表達(dá)式,或者其模、實(shí)部、虛部均無(wú)法用計(jì)算機(jī)展現(xiàn)生成的三維圖像,則淘汰該復(fù)函數(shù)二叉樹(shù)。進(jìn)一步執(zhí)行變異操作,直到得到合法的且能夠生成三維圖像的復(fù)函數(shù)二叉樹(shù)為止。
參見(jiàn)圖10,是本發(fā)明實(shí)施例提供的一種復(fù)函數(shù)二叉樹(shù)算術(shù)操作的流程示意圖,如圖10所示,對(duì)復(fù)函數(shù)二叉樹(shù)執(zhí)行算術(shù)操作:
步驟S401:在復(fù)函數(shù)二叉樹(shù)上隨機(jī)選擇操作點(diǎn)。
在復(fù)函數(shù)二叉樹(shù)上隨機(jī)選擇節(jié)點(diǎn)作為操作點(diǎn)。
步驟S402:在所述操作點(diǎn)上增加算術(shù)運(yùn)算符節(jié)點(diǎn),以及隨機(jī)產(chǎn)生的算術(shù)操作子樹(shù),得到新的復(fù)函數(shù)二叉樹(shù)。
隨機(jī)選擇算術(shù)運(yùn)算符,并在操作點(diǎn)的上層增加與所述算術(shù)運(yùn)算符對(duì)應(yīng)的算術(shù)運(yùn)算符節(jié)點(diǎn);隨機(jī)產(chǎn)生子操作樹(shù)作為算術(shù)操作子樹(shù),并將所述算術(shù)操作子樹(shù)增加到所述算術(shù)運(yùn)算符節(jié)點(diǎn)上,得到新的復(fù)函數(shù)二叉樹(shù)。
而且,在生成新的復(fù)函數(shù)二叉樹(shù)之后,通過(guò)步驟S1013的判斷如果新產(chǎn)生的復(fù)函數(shù)二叉樹(shù)不能映射為合法的復(fù)函數(shù)表達(dá)式,或者其模、實(shí)部、虛部均無(wú)法用計(jì)算機(jī)展現(xiàn)生成的三維圖像,則淘汰該復(fù)函數(shù)二叉樹(shù)。進(jìn)一步執(zhí)行算術(shù)操作,直到得到合法的且能夠生成三維圖像的復(fù)函數(shù)二叉樹(shù)為止。
需要說(shuō)明的是,在本發(fā)明實(shí)施例中,對(duì)復(fù)函數(shù)二叉樹(shù)進(jìn)行轉(zhuǎn)換操作可以只執(zhí)行一種轉(zhuǎn)換操作,例如只進(jìn)行交叉操作;或者,對(duì)復(fù)函數(shù)二叉樹(shù)進(jìn)行轉(zhuǎn)換操作可以進(jìn)行由多種操作組合的組合轉(zhuǎn)換操作,例如交叉操作與變異操作兩種組合的轉(zhuǎn)換操作,或者交叉操作、變異操作和算術(shù)操作三種組合的轉(zhuǎn)換操作;而且,在進(jìn)行由多種轉(zhuǎn)換操作的組合形式的操作時(shí),在本發(fā)明實(shí)施例中,對(duì)多種轉(zhuǎn)換操作的順序也不做限定,例如可以先進(jìn)行交叉操作再進(jìn)行變異操作,或者先進(jìn)行變異操作后進(jìn)行交叉操作;另外,在進(jìn)行轉(zhuǎn)換操作時(shí),可以根據(jù)具體設(shè)計(jì)需要,設(shè)定不同變異操作的次數(shù),例如設(shè)定變異操作的次數(shù)為3次,交叉操作的次數(shù)為5次等。
步驟S1033:當(dāng)所述完成度值大于第一閾值時(shí),確定當(dāng)前復(fù)函數(shù)二叉樹(shù)對(duì)應(yīng)的復(fù)函數(shù)表達(dá)式為目標(biāo)復(fù)函數(shù)表達(dá)式。
根據(jù)步驟S1032的描述,在第一種實(shí)施情況下,在經(jīng)過(guò)兩次迭代之后,由于當(dāng)前復(fù)函數(shù)二叉樹(shù)的完成度為3大于第一閾值2,則停止迭代計(jì)算,并將當(dāng)前復(fù)函數(shù)二叉樹(shù)對(duì)應(yīng)的復(fù)函數(shù)表達(dá)式作為目標(biāo)復(fù)函數(shù)表達(dá)式。
同樣在第二種實(shí)施情況下,在經(jīng)過(guò)兩次迭代之后,由于當(dāng)前復(fù)函數(shù)二叉樹(shù)的完成度22大于第一閾值18,則停止迭代計(jì)算,并將當(dāng)前復(fù)函數(shù)二叉樹(shù)對(duì)應(yīng)的復(fù)函數(shù)表達(dá)式作為目標(biāo)復(fù)函數(shù)表達(dá)式。
步驟S104:將所述目標(biāo)復(fù)函數(shù)表達(dá)式轉(zhuǎn)換為三維圖像;其中,所述三維圖像包括所述目標(biāo)復(fù)函數(shù)表達(dá)式的實(shí)部對(duì)應(yīng)的三維圖像、所述目標(biāo)復(fù)函數(shù)表達(dá)式的虛部對(duì)應(yīng)的三維圖像和所述目標(biāo)復(fù)函數(shù)表達(dá)式的模對(duì)應(yīng)的三維圖像的一種或多種組合。
通多MATLAB或者3DMAX等工具,將目標(biāo)復(fù)函數(shù)進(jìn)行生成和渲染得到相應(yīng)三維圖像。其中,所述三維圖像包括目標(biāo)復(fù)函數(shù)表達(dá)式的實(shí)部對(duì)應(yīng)的三維圖像、所述目標(biāo)復(fù)函數(shù)表達(dá)式的虛部對(duì)應(yīng)的三維圖像和所述目標(biāo)復(fù)函數(shù)表達(dá)式的模對(duì)應(yīng)的三維圖像的一種或多種組合。參見(jiàn)圖11,是本發(fā)明實(shí)施例提供的一種復(fù)函數(shù)表達(dá)式生成的三維圖像的示意圖。在圖中示出了復(fù)函數(shù)表達(dá)式f(z)=cos(z)*log(-z^2)*angle(z^2)對(duì)應(yīng)的三維圖像,復(fù)函數(shù)表達(dá)式的模Module、實(shí)部Real part和虛部Imaginary part分別對(duì)應(yīng)生成相應(yīng)的三維圖像。在具體實(shí)施時(shí),可以選擇復(fù)函數(shù)表達(dá)式的模Module、實(shí)部Real part和虛部Imaginary part所對(duì)應(yīng)的三維圖像中的一個(gè)或多個(gè)的組合作為最后的三維圖像。
由上述實(shí)施例可見(jiàn),本發(fā)明實(shí)施例提供的一種基于復(fù)函數(shù)二叉樹(shù)的三維圖像生成方法,通過(guò)建立初始種群,所述初始種群由至少一個(gè)初始復(fù)函數(shù)表達(dá)式表示;將每個(gè)初始復(fù)函數(shù)表達(dá)式解析成復(fù)函數(shù)二叉樹(shù);對(duì)每個(gè)復(fù)函數(shù)二叉樹(shù)進(jìn)行轉(zhuǎn)換操作,得到目標(biāo)復(fù)函數(shù)表達(dá)式;其中,所述轉(zhuǎn)換操作包括交叉操作、變異操作和算術(shù)操作中的一種或多種;將所述目標(biāo)復(fù)函數(shù)表達(dá)式轉(zhuǎn)換為三維圖像;其中,所述三維圖像包括所述目標(biāo)復(fù)函數(shù)表達(dá)式的實(shí)部對(duì)應(yīng)的三維圖像、所述目標(biāo)復(fù)函數(shù)表達(dá)式的虛部對(duì)應(yīng)的三維圖像和所述目標(biāo)復(fù)函數(shù)表達(dá)式的模對(duì)應(yīng)的三維圖像的一種或多種組合。利用復(fù)函數(shù)的實(shí)部、虛部及模產(chǎn)生的三維圖像作為種子,通過(guò)基于樹(shù)結(jié)構(gòu)的遺傳算法和算術(shù)算法派生,能產(chǎn)生新穎、獨(dú)特的三維外觀造型,有效豐富擴(kuò)展三維模型數(shù)據(jù)庫(kù);而且,該方法為產(chǎn)品設(shè)計(jì)提供輔助,進(jìn)一步方便產(chǎn)品設(shè)計(jì)的實(shí)施。
需要說(shuō)明的是,在本文中,諸如“第一”和“第二”等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
以上所述僅是本發(fā)明的具體實(shí)施方式,使本領(lǐng)域技術(shù)人員能夠理解或?qū)崿F(xiàn)本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特點(diǎn)相一致的最寬的范圍。