張銳浩, 張 帆, 莊彥帥, 張玉輝, 王 鋒
(上海工程技術(shù)大學(xué) 機(jī)械與汽車工程學(xué)院, 上海 201620)
折紙是一種古老的藝術(shù)形式,折紙的命名源自日語詞根“ori”和“gami”組合,意思是折疊和紙張,其可以實(shí)現(xiàn)不經(jīng)裁剪和粘接,使二維平面的紙張折疊成三維立體模型[1]。它的運(yùn)動(dòng)是連續(xù)的且一一對(duì)應(yīng)的二維到三維的映射。折紙可分為剛性折紙和非剛性折紙,假設(shè)在折疊過程中,剛性折紙面始終為剛性平面(通常視為連桿),將折痕視為轉(zhuǎn)軸,則剛性折紙板折疊過程中不發(fā)生扭轉(zhuǎn)變形等情況。因此,僅由相鄰折疊面的夾角即可決定折紙構(gòu)型。非剛性折紙則不具有這一假設(shè),認(rèn)為可以在折紙面內(nèi)發(fā)生扭轉(zhuǎn)、彎曲等變形,可產(chǎn)生形變。由于剛性折紙具有結(jié)構(gòu)巧妙、易于折疊等優(yōu)點(diǎn),越來越受到工程師們的關(guān)注。例如航天工程中的太陽能陣列[2-3], 在日常生活領(lǐng)域有可折疊餐具[4], 直升機(jī)[5]等。為了探索折紙的原理,從而使折紙結(jié)構(gòu)發(fā)展出更多的結(jié)構(gòu),越來越多的學(xué)者用數(shù)學(xué)來揭示其中的原理。
在折紙運(yùn)動(dòng)學(xué)的研究中,Kawasaki’s提出了單頂點(diǎn)可以平折時(shí)夾角之間的基本理論,Maekawa’s提出了山谷折痕分布理論,這兩個(gè)基本理論成為折紙的基本定理。數(shù)值算法[6]、四元數(shù)法和矩陣法[7]等被用來分析剛性折紙的可折疊性。Hull[8]研究了單頂點(diǎn)折紙折痕圖案能夠剛性折疊的一個(gè)內(nèi)在充要條件,為剛性折紙圖案拓?fù)浜蛻?yīng)用分析奠定了基礎(chǔ)。BERRY M等[9]在非歐幾里德空間,提出運(yùn)動(dòng)高斯曲率的方法研究折紙運(yùn)動(dòng)空間。得出了有向頂點(diǎn)的構(gòu)形空間與高斯曲率的關(guān)系。吳和游[9]分別用四元素法和雙四元素法建立了折紙機(jī)構(gòu)的運(yùn)動(dòng)模型,分析了單頂點(diǎn)或多頂點(diǎn)的折紙圖案的平面折疊性,并判斷了折紙?jiān)谡郫B過程的自相交性。但是判斷折紙機(jī)構(gòu)自由度的方法還是比較少,蔡建國(guó)等[11]在剛性折紙機(jī)構(gòu)的自由度的研究中,建立了折紙機(jī)構(gòu)的系統(tǒng)約束方程,并從雅克比矩陣的零空間中計(jì)算出了剛性折紙機(jī)構(gòu)的自由度,但是其研究存在局限性,若是機(jī)構(gòu)中存在冗余自由度時(shí),方法不再適用。同時(shí)其方法的計(jì)算過程較為復(fù)雜。
然而,利用鄰接矩陣的方法計(jì)算剛性折紙機(jī)構(gòu)的自由度,可以簡(jiǎn)化多頂點(diǎn)剛性折紙機(jī)構(gòu)自由度的運(yùn)算。首先,介紹剛性折紙的基本條件和基本定理;然后,以計(jì)算單頂點(diǎn)剛性折紙機(jī)構(gòu)自由度為基礎(chǔ),拓?fù)涞蕉囗旤c(diǎn)三角形剛性折紙自由度的計(jì)算。通過折痕與折痕之間的關(guān)系,建立鄰接矩陣并通過矩陣變換計(jì)算剛性折紙機(jī)構(gòu)的自由度;最后,通過軟件建模和仿真驗(yàn)證鄰接矩陣方法計(jì)算的準(zhǔn)確性。
折紙藝術(shù)因其能直觀展示如何利用折紙來生成連續(xù)但有區(qū)別的圖形,而廣泛受到人們的關(guān)注。折紙的折疊過程是連續(xù)變化的,且能反應(yīng)折紙圖案從二維到三維的映射。折紙圖案由一系列的折痕圖案組成,包括向上凸起的山折痕(實(shí)線)和向下凹陷的谷折痕(虛線),折紙圖案的剛性可折疊性是由一系列的山折痕和谷折痕組合而成,其組合對(duì)平折折紙的折疊性起關(guān)鍵性作用。以下介紹折紙的一些基本理論,包括平折的必要條件,有效的山谷折痕分配條件[12-14]。
Kawasaki’s定理1 單個(gè)頂點(diǎn)周圍的交替角度之和是π,如圖1所示。
圖1 具有n條折痕的單頂點(diǎn)的折痕圖案
Kawasaki’s定理2 對(duì)于相鄰的折痕夾角α1、α2、α3…α2n,假設(shè)α2n為其中的最小角,則圍成最小角度的折痕必須由一條山折痕和一條谷折痕組成。
Maekawa’s定理山折痕(M)與谷折痕(V)之差為±2,即:
M-V=±2
單頂點(diǎn)折痕所圍成的角度之和為2π,如圖1所示的單頂點(diǎn)折痕為
α1+α2+α3+…+α2n=2π
在剛性折紙的研究過程中,剛性折紙的折痕視為旋轉(zhuǎn)關(guān)節(jié)或轉(zhuǎn)動(dòng)副,剛性紙板則視為連桿(如圖2所示)。在單頂點(diǎn)的自由度分析中,無論折痕數(shù)多少,單頂點(diǎn)剛性折紙?jiān)诳臻g上總是具有3個(gè)方向的共同約束力,因此等效機(jī)構(gòu)的秩d為3,根據(jù)修改的G-K自由公式[16-17]:
其中,M是機(jī)構(gòu)的自由度,d為機(jī)構(gòu)的秩,n為包括機(jī)架在內(nèi)的構(gòu)件數(shù),g為運(yùn)動(dòng)副數(shù),fi為運(yùn)動(dòng)副的自由度,v為多回路并聯(lián)機(jī)構(gòu)在去掉公共約束后的冗余約束數(shù),z是機(jī)構(gòu)的局部自由度數(shù)。
圖2 單一頂點(diǎn)4折痕機(jī)構(gòu)
然而,在分析單頂點(diǎn)剛性折紙的自由度時(shí),n為剛性面的面數(shù)(桿件數(shù)),g為折痕數(shù),fi為1(通常為轉(zhuǎn)動(dòng)副),v和z都為0(一般的單頂點(diǎn)剛性折紙沒有冗余自由度和局部自由度)。單頂點(diǎn)剛性折紙頂點(diǎn)可以分為邊界頂點(diǎn)和非邊界頂點(diǎn),對(duì)于非邊界頂點(diǎn)其自由度計(jì)算公式為
M=m-3
(1)
其中,M為自由度數(shù),m為折痕數(shù),例如圖2所示單頂點(diǎn)4折痕剛性折紙自由度為M=4-3=1。
對(duì)于邊界頂點(diǎn)其自由度計(jì)算公式如下:
M=m-2
(2)
其中,M為自由度數(shù),m為圍繞此頂點(diǎn)的折痕數(shù)。
對(duì)于多頂點(diǎn)剛性折紙機(jī)構(gòu)而言,為了實(shí)現(xiàn)折紙的剛性折疊性,每個(gè)頂點(diǎn)的運(yùn)動(dòng)必須與其相鄰的頂點(diǎn)的運(yùn)動(dòng)兼容不發(fā)生干涉。然而,相較于單頂點(diǎn)剛性折紙機(jī)構(gòu),多頂點(diǎn)剛性折紙機(jī)構(gòu)獲得這樣的運(yùn)動(dòng)特性是比較難得到的,多頂點(diǎn)剛性折紙機(jī)構(gòu)可以實(shí)現(xiàn)剛性折疊的圖案是比較少的。因此,分析多頂點(diǎn)剛性折疊機(jī)構(gòu)的自由度是非常有必要的。
利用鄰接矩陣方法,分析多頂點(diǎn)三角形剛性折紙圖案的自由度,其由單頂點(diǎn)4折痕折紙圖案拓?fù)涞玫?,其圖形如圖3所示,因其滿足平折折紙定理(3個(gè)頂點(diǎn)中的任意單一頂點(diǎn)都滿足上述平折的必要條件,有效的山谷折痕分配條件)和折紙乘數(shù)的積為1[6]等條件而可剛性折疊。對(duì)于多頂點(diǎn)三角形折紙圖案而言,并不是所有的折紙圖案都可以剛性折疊,如圖4所示,圖4(a)和圖4(b)為兩種不可剛性折疊情況,已被證明不可嚴(yán)格剛性折疊[18],雖然滿足山谷折痕分布和平折折紙定理,但是因存在 3對(duì)相互平行的邊而不滿足折紙乘數(shù)的積為1的條件而不可剛性折疊。
圖3 多頂點(diǎn)三角形剛性折紙圖案
(a)
(b)
在多頂點(diǎn)三角形折紙圖案可剛性折疊的情況下,利用鄰接矩陣分析其自由度。鄰接矩陣直觀展現(xiàn)了頂點(diǎn)之間的連接關(guān)系。首先,將多頂點(diǎn)三角形折紙圖案封閉,即添加邊界,添加邊界后的圖案如圖5 所示,并將頂點(diǎn)由1~9逆時(shí)針編號(hào),其中1、2、3為非邊界頂點(diǎn),4~9為邊界頂點(diǎn)。則建立的鄰接矩陣C0為
矩陣中“1”表示頂點(diǎn)與頂點(diǎn)之間相連,即存在折痕則記為“1”,不相連則為“0”,從矩陣中的每一行或列可以知道每一個(gè)頂點(diǎn)有幾條折痕圍成(例如頂點(diǎn)1有4條折痕)。由于矩陣為對(duì)稱陣,因此分析時(shí)只分析行或列即可。
圖5 多頂點(diǎn)三角形剛性折紙邊界添加圖
通過引入變量Di(i=0,1,2,3,…,9)確定每頂點(diǎn)實(shí)現(xiàn)確定運(yùn)動(dòng)所需要的驅(qū)動(dòng),驅(qū)動(dòng)的添加選擇從非邊界頂點(diǎn)1開始,依次添加驅(qū)動(dòng)(也可以選擇從2或3開始,但只能從非邊界頂點(diǎn)1、2、3開始)。當(dāng)鄰接矩陣為C0時(shí),變量D0=0(此時(shí)并未添加驅(qū)動(dòng)到折紙機(jī)構(gòu)中),由式(1)和鄰接矩陣C0可以計(jì)算得非邊界頂點(diǎn)1所需的驅(qū)動(dòng)為4-3=1,則鄰接矩陣由C0變?yōu)镃1:
此時(shí)矩陣C1中的“1”表示未有確定運(yùn)動(dòng)的折痕數(shù)(與矩陣C0中的“1”的含義不同),即此折痕未有確定的輸入驅(qū)動(dòng)(角度變量)。當(dāng)非邊界頂點(diǎn)1輸入了確定的驅(qū)動(dòng),鄰接矩陣C1中的第一列和第一行中的“1”變?yōu)椤?”。鄰接矩陣由C0變到C1引入消元矩陣Ej,n,消元矩陣[10]的表示如下:
消元矩陣是n×n的矩陣,在矩陣中的第j行和第j列中的元素都為0,對(duì)角線上的元素為1,左乘矩陣Ej,n使得Ci的第j行中的元素都為0,右乘矩陣Ej,n使得Ci的第j列中的元素都為0,其變換如下所示:
Ci+1=Ej,nCiEj,n
同時(shí)變量由D0變?yōu)镈1,D1=D0+1=1(1表示需要添加的驅(qū)動(dòng)或角度變量)。
然后,繼續(xù)對(duì)非邊界頂點(diǎn)2添加驅(qū)動(dòng),由式(1)和鄰接矩陣C1得非邊界頂點(diǎn)2需要添加的驅(qū)動(dòng)為 3-3=0,其中第一個(gè)“3”為C1中第2行的元素和。此時(shí)的鄰接矩陣C2為
同時(shí)變量由D1變?yōu)镈2,則D2=D1+0=1。
然后繼續(xù)對(duì)非邊界頂點(diǎn)3添加驅(qū)動(dòng),由式(1)和鄰接矩陣C2得非邊界頂點(diǎn)3需要添加的驅(qū)動(dòng)為 2-3<0,其中的“2”為C2中第3行的元素和(若存在非邊界頂點(diǎn)行元素和小于或等于3,則需要添加的驅(qū)動(dòng)為0)。此時(shí)的鄰接矩陣C3為
同時(shí)變量由D2變?yōu)镈3,則D3=D2+0=1。
由上述計(jì)算可得非邊界頂點(diǎn)1、2、3需要的總驅(qū)動(dòng)數(shù)量Me=D3=1。
下面計(jì)算邊界頂點(diǎn)所需要的驅(qū)動(dòng)數(shù),邊界頂點(diǎn)需要的總驅(qū)動(dòng)數(shù)Mb計(jì)算如下:
(3)
其中,b為非分邊界頂點(diǎn)數(shù),n為圖形的總頂點(diǎn)數(shù),rb(j)為最后一個(gè)非邊界頂點(diǎn)添加驅(qū)動(dòng)后的鄰接矩陣中的第j行的和。
由鄰接矩陣C3和式(3)可以得到多頂點(diǎn)三角形剛行折紙圖案邊界頂點(diǎn)需要添加的總驅(qū)動(dòng)數(shù)為
可以發(fā)現(xiàn)鄰接矩陣C3中第4行至第9行每一行的和都是2,則由式(7)可得邊界頂點(diǎn)需要的約束為Mb= 0。最后,計(jì)算得到多頂點(diǎn)三角形剛性折紙機(jī)構(gòu)的自由度:M=Me+Mb=1。
通過Adams軟件的建模仿真功能,建立多頂點(diǎn)三角形剛性折紙圖案,建模過程中,剛性折紙的折痕視為旋轉(zhuǎn)關(guān)節(jié)(細(xì)線表示),剛性紙板則視為連桿。連桿與連桿之間由旋轉(zhuǎn)副連接,通過約束的方式使連桿與連桿僅存在轉(zhuǎn)動(dòng)自由度。多頂點(diǎn)三角形剛性折紙圖案的三維建模圖形如圖6所示。
在完成建模的基礎(chǔ)上,為模型添加驅(qū)動(dòng),模型的驅(qū)動(dòng)添加數(shù)為上述計(jì)算結(jié)果,模型僅需添加一個(gè)驅(qū)動(dòng)。然后,執(zhí)行仿真運(yùn)行步驟,看能否完成剛性折疊過程。
多頂點(diǎn)三角形剛折紙運(yùn)動(dòng)模型完成了從初始平折到完全折疊的運(yùn)動(dòng)過程,結(jié)果如圖7所示,機(jī)構(gòu)僅添加一個(gè)驅(qū)動(dòng)即可完成所需的折疊運(yùn)動(dòng)(驅(qū)動(dòng)添加圖如圖8所示),運(yùn)動(dòng)過程并無奇異位形,若添加多個(gè)驅(qū)動(dòng)則可能會(huì)產(chǎn)生冗余驅(qū)動(dòng)。仿真結(jié)果驗(yàn)證了多頂點(diǎn)三角形剛性折紙的自由度為1的結(jié)論是正確的。
圖7 多頂點(diǎn)三角形剛性折紙圖案的運(yùn)動(dòng)完成折疊
圖8 多頂點(diǎn)三角形剛性折紙圖案的折疊驅(qū)動(dòng)添加
在剛性折紙的平折條件和峰谷分配的條件等條件下,以分析單頂點(diǎn)4折痕的剛性折紙自由度為基礎(chǔ),拓?fù)涞蕉囗旤c(diǎn)三角形剛性折紙自由度分析,通過鄰接矩陣的方法分析多頂點(diǎn)三角形剛性折紙的自由度,該方法具有運(yùn)算簡(jiǎn)單、表達(dá)直觀的優(yōu)點(diǎn)。頂點(diǎn)之間的關(guān)系用鄰接矩陣表示,便于計(jì)算機(jī)運(yùn)算和矩陣變換。通過引入消元矩陣,用矩陣乘法描述了確定運(yùn)動(dòng)狀態(tài)的過程,通過矩陣變換簡(jiǎn)化了折紙圖案中的復(fù)雜運(yùn)動(dòng)表示。最后通過軟件仿真驗(yàn)算其計(jì)算結(jié)果的準(zhǔn)確性。