吳戰(zhàn)國,李宏旭
(同濟(jì)大學(xué),上海 200092)
識讀工程圖形是工科學(xué)生的一項重要技能,也是工程圖學(xué)的重點(diǎn)和難點(diǎn)。提高學(xué)生的空間分析和空間想象能力是工程圖學(xué)課程的基本目標(biāo)。提高空間分析能力的主要方法是勤學(xué)多練,將投影理論與畫圖及讀圖實(shí)踐結(jié)合起來,通過不斷重復(fù)由三維立體到二維視圖,再由二維視圖到三維形體的投影變換過程,幫助初學(xué)者在頭腦中逐步建立形體與視圖的對應(yīng)關(guān)系。
長期以來,投影訓(xùn)練主要是通過“二補(bǔ)三”,即根據(jù)形體的兩個正投影圖,補(bǔ)畫第三個正投影圖的方式進(jìn)行的。在這個過程中,投影圖所表達(dá)的形體不是直觀呈現(xiàn)的,它只存在于學(xué)生的腦海中,所以學(xué)生在構(gòu)畫形體的第三視圖時,往往會感覺比較吃力。如果形體結(jié)構(gòu)復(fù)雜,空間分析和想象將更加困難。如果能夠勾畫形體的立體草圖,將即興的思想火花記錄下來,顯然有助于分析思考,但對于初學(xué)者而言,勾畫立體草圖也不是一件易事,反倒可能更加困難。如果能夠提供一種計算機(jī)方法,將構(gòu)建形體的思考過程直觀地逐步呈現(xiàn)出來,幫助學(xué)生及時糾正錯誤,顯然能夠極大地促進(jìn)空間分析能力和空間想象能力的提高。基于這個思想,我們采用VBA語言,在AutoCAD平臺上開發(fā)了相應(yīng)的讀圖系統(tǒng),達(dá)到了良好的效果。
計算機(jī)輔助讀圖系統(tǒng)是使用AutoCAD VBA開發(fā)的,其工作區(qū)如圖1所示,用戶界面主要由3個區(qū)域構(gòu)成。左側(cè)A區(qū)為三維模型區(qū),用于觀察建立的三維模型。右側(cè)B區(qū)為視圖驗證區(qū),用于即時顯示基于模型的動態(tài)三視圖;C區(qū)為視圖輸入?yún)^(qū),用于顯示原始三視圖及交互操作。
圖1 工作區(qū)界面
計算機(jī)輔助讀圖系統(tǒng)的系統(tǒng)流程,如圖2所示,其造型過程主要分為3個階段,分別是:三視圖輸入階段、三視圖預(yù)處理階段和交互造型階段。首先,在C區(qū)繪制或調(diào)入三視圖,確認(rèn)無誤后對三視圖進(jìn)行轉(zhuǎn)存,即將三視圖以特定的數(shù)據(jù)結(jié)構(gòu)重新存儲。然后,對三視圖進(jìn)行預(yù)處理,包括分離三視圖、各視圖閉環(huán)搜索及存儲。最后進(jìn)行特征構(gòu)建,逐步生成最終形體。
圖2 系統(tǒng)流程圖
特征構(gòu)建的理想方法是讓系統(tǒng)根據(jù)三視圖自動創(chuàng)建三維形體,如圖3所示,在系統(tǒng)對三視圖閉環(huán)提取完成后,根據(jù)視圖間最大外環(huán)的匹配關(guān)系,系統(tǒng)能夠自動生成與三視圖匹配的三維形體。但是,由于三維形體的復(fù)雜性,若完全由系統(tǒng)在二維視圖空間自底而上地創(chuàng)建形體,需要反復(fù)的視圖匹配及校驗工作,其算法效率往往較低,而且對培養(yǎng)學(xué)生的讀圖能力幫助有限。假設(shè)以交互方法進(jìn)行,將人工判斷與計算機(jī)快速校驗結(jié)合起來,不但能夠使學(xué)生直觀地看到形體構(gòu)思的結(jié)果,而且有助于學(xué)生理解形體及其投影的產(chǎn)生過程,達(dá)到提高讀圖能力的目的。
人機(jī)交互的基本方法是人機(jī)交互,其過程是:學(xué)習(xí)者首先在某一個視圖上選擇一個閉環(huán),確認(rèn)后系統(tǒng)會自動加亮其他視圖上與之匹配閉環(huán)。當(dāng)學(xué)習(xí)者確認(rèn)匹配后,系統(tǒng)會根據(jù)三視圖上的進(jìn)行校核。若校核通過則在模型區(qū)生成對應(yīng)的子形體(或特征),并在視圖校驗區(qū)更新對應(yīng)的三視圖。學(xué)習(xí)者可通過與輸入三視圖比對來鑒別子形體的有效性。若子形體無效則返回上一步,重復(fù)識別過程;若符合要求則確認(rèn)子形體,并開始下一個子形體的識別,直至產(chǎn)生最終形體。隱含情況下,子形體之間做布爾和運(yùn)算,使用者也可根據(jù)需要改變布爾運(yùn)算方式。
圖3 全自動造型實(shí)例
計算機(jī)輔助讀圖系統(tǒng)是在AutoCAD平臺上開發(fā)的,其三維造型的基礎(chǔ)是AutoCAD的VBA模塊。在此基礎(chǔ)上,系統(tǒng)開發(fā)了視圖分析及處理算法,以便向造型接口提供幾何信息和拓?fù)湫畔?。下面給出該系統(tǒng)的關(guān)鍵算法。
原始三視圖可以在C區(qū)直接繪制,也可以從外部調(diào)入。對輸入到系統(tǒng)中的三視圖,要以特定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行存儲,不失一般性,我們以平面立體為例加以說明。平面立體的正投影圖上只包含點(diǎn)和線兩種圖元,幾何數(shù)據(jù)比較簡單,可以用數(shù)組存儲??紤]到后繼數(shù)據(jù)處理的需要,還需要對點(diǎn)與點(diǎn)、點(diǎn)與線之間的關(guān)聯(lián)關(guān)系加以存儲。
對于每個視圖,我們用5個表來存儲視圖信息,分別為點(diǎn)表、線表、點(diǎn)的關(guān)聯(lián)點(diǎn)表、點(diǎn)的關(guān)聯(lián)線表以及點(diǎn)的度數(shù)表。點(diǎn)表用于記錄該視圖上點(diǎn)的坐標(biāo);線表用于記錄該視圖上線的端點(diǎn);點(diǎn)的關(guān)聯(lián)點(diǎn)表用于記錄該視圖上點(diǎn)的鄰接點(diǎn);點(diǎn)的關(guān)聯(lián)線表用于記錄該視圖上點(diǎn)到鄰接點(diǎn)的關(guān)聯(lián)線;點(diǎn)的度數(shù)表用于記錄該視圖上點(diǎn)的鄰接點(diǎn)的個數(shù)。
由三視圖分離出主視圖、俯視圖和左視圖可以通過人工依次在3個視圖上指定對應(yīng)點(diǎn)來完成,如圖3所示。這種方法需要初學(xué)者具備基本的讀圖能力,為簡化操作,系統(tǒng)也提供了分離視圖的自動工具。其算法的主要依據(jù)是:每個視圖一定是一個封閉的區(qū)域,而且視圖間存在間隙。主要過程是:首先將三視圖看作一個整體,搜索出左下角點(diǎn)、左上角點(diǎn)和右上角點(diǎn);然后分別從3個角點(diǎn)出發(fā),依據(jù)點(diǎn)的關(guān)聯(lián)線表由左下角點(diǎn)向上搜索到俯視圖上具有最大Y坐標(biāo)的角點(diǎn),由左上角點(diǎn)向下搜索到主視圖上具有最小Y坐標(biāo)的角點(diǎn),取兩個Y坐標(biāo)的中線,即可將主視圖和左視圖與俯視圖分離。同理由左上角點(diǎn)向右、由右上角點(diǎn)向左搜索,可以得到主視圖上具有最大X坐標(biāo)的角點(diǎn)和左視圖上具有最小X坐標(biāo)的角點(diǎn),從而將主視圖和俯視圖與左視圖分離。
二維視圖上的閉環(huán)搜索是計算機(jī)圖形學(xué)的基本問題,有成熟的算法可以參考,其主要原理是通過計算下一條矢量邊與當(dāng)前矢量邊的轉(zhuǎn)角,并依據(jù)內(nèi)環(huán)和外環(huán)的不同,分別選擇最大轉(zhuǎn)角邊和最小轉(zhuǎn)角邊來實(shí)現(xiàn)的。在轉(zhuǎn)存三視圖數(shù)據(jù)時,我們紀(jì)錄了點(diǎn)的關(guān)聯(lián)點(diǎn)表,也是出于閉環(huán)搜索的需要。
為降低算法復(fù)雜性,除最大外包閉環(huán)外,我們僅提取并存儲了最大外包閉環(huán)內(nèi)部彼此獨(dú)立的內(nèi)部閉環(huán),沒有考慮內(nèi)部閉環(huán)之間的組合及包容關(guān)系。關(guān)于此部分的內(nèi)容,我們另文討論。
由于系統(tǒng)開發(fā)的目的是培養(yǎng)初學(xué)者對三視圖讀圖能力,其三維形體不是實(shí)際機(jī)件,而是幾何形狀比較簡單的組合形體,所以選擇了AutoCAD軟件平臺。AutoCAD的三維造型功能比較簡單,主要用斷面拉伸和斷面回轉(zhuǎn)兩個造型命令,但能夠滿足組合形體的建模需要。
構(gòu)建子形體的主要過程是:首先依據(jù)匹配的閉環(huán),自動提取適用于造型的斷面數(shù)據(jù);然后根據(jù)斷面所在的視圖以及相對位置,自動對斷面進(jìn)行旋轉(zhuǎn)、平移變換;接著依據(jù)另一個視圖上的匹配閉環(huán)或線段,構(gòu)造子形體并加亮;最后由操作者決定布爾運(yùn)算的類型,從而生成特定形體。
對于特定形體,系統(tǒng)可以全自動創(chuàng)建三維形體。如圖3所示,系統(tǒng)自動提取3個視圖的外包閉環(huán)后,依次將3個外包閉環(huán)拉伸生成3個子形體,然后將3個子形體作布爾和運(yùn)算,最終的形體就自動產(chǎn)生了。
本文介紹了一種計算機(jī)輔助讀圖系統(tǒng),能夠自動分割三視圖,并依據(jù)三維造型的需要將三視圖數(shù)據(jù)進(jìn)行轉(zhuǎn)存,記錄三視圖上相互關(guān)聯(lián)的線面信息,然后在視圖匹配規(guī)則的引導(dǎo)下,通過用戶交互,快速生成其三維模型,實(shí)現(xiàn)了輔助學(xué)習(xí)者培養(yǎng)空間想象和空間分析能力的效果。
讓程序根據(jù)三視圖自動重建三維形體,是計算機(jī)造型領(lǐng)域研究者的一個目標(biāo),如何進(jìn)一步提高重建程序的智能,也是作者努力的方向。
[1]吳戰(zhàn)國, 李啟炎.面向三維重建的三視圖數(shù)據(jù)結(jié)構(gòu)[J].工程圖學(xué)學(xué)報, 2001, 22(2): 129-132.
[2]董建甲, 王小椿, 陳丁躍.基于專家系統(tǒng)的二維投影視圖的三維實(shí)體重建[J].小型微型計算機(jī)系統(tǒng),2003, 24(7): 1394-1396.