沈?qū)?/p>
【摘要】本文通過對FORTRAN、C語言和OpenGL圖形庫進(jìn)行分析,在此基礎(chǔ)上,將三種技術(shù)通過動態(tài)的鏈接庫結(jié)合在一起,實現(xiàn)了對土木工程計算程序的設(shè)計,完善其界面。
【關(guān)鍵詞】FORTRAN;C語言;OpenGL;混合編程;土木工程計算
通常情況下,土木工程的計算程序都是借助FORTRAN實現(xiàn)的,在運用FORTRAN進(jìn)行數(shù)值的計算過程中,其能夠呈現(xiàn)出不同的優(yōu)勢,但是,同時也存在效率不高的問題,而且不能在windows的開發(fā)環(huán)境中使用,不能建立人機界面,在圖形顯示中操作流程過于復(fù)雜。C語言是在NET平臺上開發(fā)的,這種程序使用了比較簡單的語法,而且便于調(diào)試,在程序開發(fā)中效率更高。OpenGL是一種圖形庫,里面都是三維的圖形,實現(xiàn)了硬件和軟件的結(jié)合使用,使用的效果好,在動畫繪制中常見,而且能夠?qū)D形的繪制與計算機技術(shù)以及虛擬現(xiàn)實技術(shù)結(jié)合,其是一個模型庫,運用三維的圖像呈現(xiàn),在不同的平臺上都可以使用。其可以實現(xiàn)幾何模型的建立,通過渲染的方式實現(xiàn)動畫的制作。
一、C語言與FORTRAN的混編
運用C語言能夠?qū)崿F(xiàn)交互性的界面,建立土木工程計算的框架,將之前的FORTRAN的源代碼進(jìn)行編譯,形成一個動態(tài)的鏈接庫,在此基礎(chǔ)上,能夠?qū)⒋a轉(zhuǎn)送到C語言程序上,完成兩種不同語言的婚變。可以運用編譯器實現(xiàn)文件混合的編程,程序之間應(yīng)該建立一致的調(diào)用程序,建立完善的調(diào)用機制。這些機制主要分為堆棧管理機制、命名機制、參數(shù)傳遞機制。在C語言和FORTRAN混編中,應(yīng)該使兩種不同語言的字符參數(shù)一直,而且DLL文件能夠顯示出信息的輸出。
(一)字符串參數(shù)的一致
在C語言中,字符的結(jié)束是運用null數(shù)值來表示的,F(xiàn)ORTRAN中字符串是在右端設(shè)計空格的方式來表示的,運用一個隱藏的參數(shù)能夠表示字符串的實際長度。而且,F(xiàn)ORTRAN的默認(rèn)的字符是用ASCII編碼來表示的,所以,F(xiàn)ORTRAN要運用編譯器實現(xiàn)中文字符的支持。但是,在C語言中,其字符的編碼是通過unicode實現(xiàn)的,所以,在語言層上就能夠?qū)崿F(xiàn)支持中文的字符。通過對不同語言的表示方法的分析,分析了影響因素,如果字符串是通過FORTRAN到C語言,那么,可以在NET網(wǎng)絡(luò)環(huán)境中實現(xiàn),這時C語言就會自動提供函數(shù)字符,將ASCII編碼轉(zhuǎn)化成unicode編碼。如果字符串是由C語言轉(zhuǎn)化成FORTRAN,就需要運用字符串的長度來實現(xiàn)。
(二)DLL文件內(nèi)部的提示信息的輸出
在大型土木工程計算程序的編程中,運用FORTRAN,會出現(xiàn)PRINT等語句,這類的語句表示程序是運行的,在這些程序改造的過程中,是運用DLL文件和C語言一起應(yīng)用,結(jié)合了windows程序后實現(xiàn)的,所以,輸出設(shè)備此時不發(fā)揮作用。為了能夠分析FORTRAN的內(nèi)部調(diào)制問題,就需要在DLL文件中進(jìn)行信息輸出,設(shè)計信息的函數(shù),建立一個控制臺的窗口,運用PRINT語句建立輸出設(shè)備。
二、C語言與OpenGL的混編
C語言是運用NET平臺進(jìn)行編程的一類高級的語言,但是,在NET環(huán)境中,不能夠?qū)penGL的接口進(jìn)行設(shè)計,所以,OpenGL中混合C語言,其不能與其他的高級語言一樣實現(xiàn)語句的引用和部署,不能夠直接的使用OpenGL固有的圖形數(shù)據(jù)庫。所以,在C語言中,這類技術(shù)要借助第三方的軟件才能夠?qū)崿F(xiàn)。
(一)GSGL的動態(tài)鏈接庫的分析
GSGL是在windows系統(tǒng)下建立的一類接口,其在C語言中常用。GSGL的動態(tài)鏈接庫在使用時是用gldll實現(xiàn)的,形成了不同的類型,在不同的類型中都可以建立OpenGL的標(biāo)準(zhǔn)函數(shù),借助數(shù)據(jù)庫的函數(shù)、輔助型的函數(shù)等,設(shè)計使用函數(shù)庫和常量。在OpenGL能夠生成自動化的定義,通過繪制函數(shù)的形式實現(xiàn)了OpenGL場景的定義,在進(jìn)行場景的初始化和繪制函數(shù)中完成兩種高級語言的混編。GSGL在進(jìn)行程序設(shè)計中不一定要用到,但是在程序運行階段其是必不可少的。在對每個空間名稱進(jìn)行函數(shù)定義的過程中是經(jīng)常使用的,而且能夠借助GSGL在NET環(huán)境中實現(xiàn)對查閱庫文件的閱讀。
(二)在C語言中對GSGL的OpenGL的引用
在NET環(huán)境中形成C語言的應(yīng)用程序并不復(fù)雜,在IDE換種中選擇C語言的創(chuàng)建項目,然后打開windows程序,將項目的名稱輸入,建設(shè)保存的位置,點擊確定,項目就完成了創(chuàng)建。在項目創(chuàng)建的過程中,建立了空間的名稱,而且是以窗口的類型實現(xiàn)的,在應(yīng)用程序中實現(xiàn)了主入口函數(shù)的設(shè)計。所以,在建立應(yīng)用程序框架的過程中,運用程序,要實現(xiàn)對OpenGL的引用,在C語言中借助using關(guān)鍵詞實現(xiàn)對不同程序的引用。將OpenGL的繪圖功能在C語言的程序得以更好地應(yīng)用。
(三)建立OpenGL設(shè)備的應(yīng)用環(huán)境
在運用OpenGL進(jìn)行圖形的繪制中,應(yīng)該建立設(shè)備環(huán)境的繪制,建立一個繪制表面,在所建立的空間名稱中加入一個應(yīng)用,然后再應(yīng)用中加入很多素材,將這些素材都放在窗口上,實現(xiàn)OpenGL可視化的場景。這樣所以的圖形都可以在窗口上繪制和修改。
(四)創(chuàng)建OpenGL繪制環(huán)境和功能的初始化
在繪制表面建立窗口,能夠為OpenGL的運行創(chuàng)作繪制的環(huán)境,在OpenGL運行的過程中,其使用的是繪制的環(huán)境,而不是設(shè)備的環(huán)境,所以,要建立完善的繪制環(huán)境,不然OpenGL在C語言中是不能執(zhí)行的。在OpenGL建立一個繪制環(huán)境的函數(shù),通過對函數(shù)的重寫完成繪制環(huán)境的創(chuàng)建,建立繪制環(huán)境的初始化。
(五)運用OpenGL進(jìn)行圖形和場景的繪制
在以上的操作都完成后,就可以借助OpenGL實現(xiàn)場景的繪制,運用繪制函數(shù),設(shè)計源代碼,設(shè)計單位的矩陣的方式,建立繪制圖形的代碼。
三、混合編程的實現(xiàn)與應(yīng)用
本文將三種高級語言進(jìn)行混合編程,在網(wǎng)絡(luò)環(huán)境下建立語言編譯的環(huán)境,以windows作為系統(tǒng)操作的平臺,在此基礎(chǔ)上,借助DOS實現(xiàn)GSAP程序的運行,在windows平臺上實現(xiàn)人機界面的交互,建立交互式的軟件。這類軟件是在原有的程序改造上實現(xiàn)的,運用DLL文件的形式呈現(xiàn)出來,其界面是通過C語言程序編制的,通過建立函數(shù)的形式使圖形顯示出來。在程序的混編中,通過運用DOS平臺,實現(xiàn)不同命令的輸入和執(zhí)行,對結(jié)果進(jìn)行查看,在對windows程序進(jìn)行計算完成后,其計算和模型的圖像就會直接顯示出來,使用非常得便捷,界面的改造也不復(fù)雜。借助三種高級語言的混編能夠?qū)崿F(xiàn)空白動態(tài)鏈接的設(shè)計,將源代碼進(jìn)行統(tǒng)一,運用C語言實現(xiàn)windows應(yīng)用程序的改進(jìn),通過窗口的形式展現(xiàn)出來。
結(jié)語:
在土木工程計算程序的改造中,將不同的語言結(jié)合在一起,采用混編的形式,能夠提高土木工程相關(guān)參數(shù)計算的精確度,完善其計算的效率,在C語言中,字符的結(jié)束是運用null數(shù)值來表示的,F(xiàn)ORTRAN中字符串是在右端設(shè)計空格的方式來表示的。
參考文獻(xiàn):
[1]周濤,郭占元,郭向榮. FORTRAN與C#混合編程在土木工程計算中的應(yīng)用[J]. 山東交通學(xué)院學(xué)報,2011,01:80-86.
[2]周濤,汪金輝,郭向榮. 利用混編技術(shù)對土木工程計算程序的改造[J]. 河北理工大學(xué)學(xué)報(自然科學(xué)版),2011,03:124-129.
[3]覃輝. 測量學(xué)教材的便攜編程計算解決方案[J]. 高等建筑教育,2011,03:137-142.
[4]楊敏,肖珂. 試論土木工程信息技術(shù)的發(fā)展趨勢[J]. 同濟大學(xué)學(xué)報(自然科學(xué)版),2011,11:1346-1351.
[5]黃吉鋒,楊志勇,馬恩成,張志遠(yuǎn),沈文都. 中國建筑科學(xué)研究院結(jié)構(gòu)設(shè)計軟件的發(fā)展與展望[J]. 建筑科學(xué),2013,11:22-29.