亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        油田工程應(yīng)用軟件圖形編輯關(guān)鍵技術(shù)

        2014-10-26 09:17:48侯進(jìn)才劉潔
        油氣與新能源 2014年4期
        關(guān)鍵詞:圖元集輸繪圖

        侯進(jìn)才* 劉潔

        (1.中國石油天然氣管道局國際事業(yè)部;2.中國石油集團(tuán)石油職業(yè)衛(wèi)生技術(shù)服務(wù)中心)

        侯進(jìn)才等. 油田工程應(yīng)用軟件圖形編輯關(guān)鍵技術(shù). 石油規(guī)劃設(shè)計,2013,24(4):46~49

        一款優(yōu)秀的軟件,不僅要能出色地完成系統(tǒng)功能,而且還要有美觀、方便的操作界面才能獲得用戶的青睞。圖形用戶界面簡單的操作,能給用戶留下深刻的印象,用戶易于接受并積極使用。油氣集輸系統(tǒng)設(shè)備和參數(shù)眾多、工藝流程復(fù)雜,應(yīng)用最優(yōu)化理論和計算機技術(shù)對其進(jìn)行模擬優(yōu)化已經(jīng)取得了良好的效果。但是,由于模擬優(yōu)化過程比較復(fù)雜繁瑣,如果對整個工藝流程不是非常熟悉,就會增大軟件的操作難度,進(jìn)而影響軟件的使用率。如果將油氣集輸系統(tǒng)的優(yōu)化設(shè)計與工藝流程的圖形顯示相結(jié)合,開發(fā)出能夠滿足用戶工藝流程圖形編輯處理的優(yōu)化設(shè)計軟件,則能夠顯著地提高油田工程應(yīng)用軟件的使用率。以油氣集輸管網(wǎng)圖形建模程序為例,從實用角度出發(fā)詳細(xì)地給出了用 C++ Builder實現(xiàn)建模過程中圖形繪制、編輯和存儲等關(guān)鍵技術(shù),這些技術(shù)對于編制可視化的圖形建模程序是通用的。

        1 圖形程序關(guān)鍵技術(shù)

        1.1 繪圖區(qū)及坐標(biāo)系

        繪圖區(qū)是圖形建模程序主界面的主體部分,主要用于進(jìn)行管網(wǎng)圖形的繪制、編輯、修改、顯示等操作。C++ Builder提供的 TImage元件可以裝載圖形,并能將其看做是一塊畫布,在上面繪圖并顯示。因此,本程序應(yīng)用該組件提供的矩形區(qū)域作為繪圖區(qū)。

        Windows應(yīng)用程序在其客戶區(qū)繪制圖形時,首先要給出客戶區(qū)的坐標(biāo)系統(tǒng)。繪圖區(qū)域上的每一個點用x和y兩個坐標(biāo)表示,而在所有的GDI(Graphics Device Interface,圖形設(shè)備接口)繪制函數(shù)中,這些坐標(biāo)使用的是一種“邏輯單位”。當(dāng) GDI函數(shù)將結(jié)果輸出到某個物理設(shè)備(如屏幕或打印機)上時,Windows將邏輯坐標(biāo)轉(zhuǎn)換成設(shè)備坐標(biāo)。邏輯坐標(biāo)所在的坐標(biāo)系稱為“窗口”,將設(shè)備坐標(biāo)所在的坐標(biāo)系稱為“視口”;邏輯坐標(biāo)和設(shè)備坐標(biāo)的轉(zhuǎn)換是由映射模式?jīng)Q定的,Windows提供了多種類映射方式,其中MM_TEXT(“文本”映射模式)是最簡單的一種方式,在這種映像方式下窗口和視口中的坐標(biāo)單位都是像素點,坐標(biāo)方向相同:x向的正方向向右,y向的正方向向下,本程序就采用這種映射方式實現(xiàn)邏輯坐標(biāo)和設(shè)備坐標(biāo)的轉(zhuǎn)換。

        在開發(fā)圖形建模程序圖形編輯器時,如果選擇一個固定的坐標(biāo)映像方式,就不能實現(xiàn)圖形無極放縮的要求,因而大多數(shù)映像方式的設(shè)備無關(guān)性就沒有實際的意義。在本圖形建模程序中圖形元素的坐標(biāo)是采用雙精度型來表示,而MM_TEXT映像方式下坐標(biāo)的單位是像素(整數(shù))。因此,對于Windows消息(如 WM_MOUSE_MOVE)所獲得的鼠標(biāo)光標(biāo)的坐標(biāo)值即屏幕坐標(biāo),為了實現(xiàn)其與圖形元素的實際坐標(biāo)之間的映射[1],程序定義了兩個函數(shù)Field_Win和Win_Field來完成坐標(biāo)轉(zhuǎn)換,然后進(jìn)行圖形元素的處理和存儲。在這兩個函數(shù)中,給出一個確定實際坐標(biāo)和屏幕坐標(biāo)比例關(guān)系的變量pd_MapScale,調(diào)整其大小即可以實現(xiàn)圖形的無極縮放。同時,還有圖幅寬度常量(Bx、By)和滾動條位置變量(Xs、Ys)。坐標(biāo)映射函數(shù) Field_Win和W in_Field如下:

        為了與用戶日常繪圖習(xí)慣相適應(yīng),在本程序開發(fā)的實際坐標(biāo)系中,取繪圖區(qū)的左下角點為原點,設(shè)其坐標(biāo)為(Min X_,Min Y_)。在視口中繪制圖形元素時,只采用MM_TEXT映像方式,通過實際坐標(biāo)與邏輯坐標(biāo)的轉(zhuǎn)換來繪制圖形。圖形系統(tǒng)的坐標(biāo)系建立后,調(diào)整視圖屏幕的實際起點 Min X_,Min Y_就可以實現(xiàn)圖形的滾動,調(diào)整邏輯坐標(biāo)和實際坐標(biāo)的比例關(guān)系 pd_MapScale就可以實現(xiàn)圖形的無極縮放。

        1.2 圖元的繪制

        圖元的繪制可以使用位圖和繪圖函數(shù)兩種方式,采用位圖繪圖時,由各元件的位圖在繪圖區(qū)域拼裝組成網(wǎng)絡(luò)拓?fù)鋱D。繪圖函數(shù)主要是指GDI中的各種圖形繪制和控制函數(shù)。C++ Builder中的TCanvas類封裝了Windows GDI以及相關(guān)的圖像繪制和控制函數(shù),并且為繪圖對象提供了抽象的畫布,可以指定使用的畫筆、畫刷和字體,實現(xiàn)繪制、填充各種圖案和直線以及寫入文本[2]。程序中圖元的繪制主要是通過調(diào)用TCanvas類的各種方法實現(xiàn)的,具體為,節(jié)點類用Stretch Draw函數(shù)調(diào)用已經(jīng)存在的位圖繪制,管線類用 MoveTo(int X,int Y)、LineTo(int X,int Y)等繪圖函數(shù)繪制。

        要繪制一個圖元,基本思路就是對鼠標(biāo)左鍵的3個事件分別進(jìn)行編程:一是,當(dāng)按下鼠標(biāo)左鍵時,首先要判斷繪制的是哪一類圖元,然后記錄下鼠標(biāo)在繪圖區(qū)中的邏輯坐標(biāo),并創(chuàng)建一個圖元的對象指針,用這個對象指針調(diào)用該對象類的繪圖函數(shù),通過TCanvas類中的方法進(jìn)行圖元的繪制;二是,當(dāng)按下左鍵并移動鼠標(biāo)時,應(yīng)用畫布Canvas屬性畫筆Pen模式PenMode中的pmXor模式(異或模式,或者也可以用 pmNotXor模式),讓 Pen的Color屬性和繪圖區(qū)的Color屬性做XOR運算,并在同一位置畫兩次線,刪除掉原先繪制的圖元,然后更新參考點坐標(biāo),恢復(fù)Pen的模式為pmCopy(復(fù)制模式);三是,當(dāng)放開左鍵時,調(diào)用繪圖函數(shù)繪制圖元,并給出圖元基礎(chǔ)信息交互界面,確認(rèn)圖元繪制操作和完成信息存儲。一方面,各個圖元獨立地?fù)碛兄约旱膱D元信息,因而,用戶依然可以對其進(jìn)行單獨的編輯操作;另一方面,這些信息都保存在數(shù)據(jù)庫中,當(dāng)圖形重新加載時,就可以利用這些圖元信息做到準(zhǔn)確無誤地恢復(fù)整個圖紙。

        在管線的繪制過程中,使用了計算機圖形學(xué)中的橡皮筋技術(shù)[3],它主要針對變形類的要求,動態(tài)地、連續(xù)地將變形過程表現(xiàn)出來,常常用來構(gòu)造直線段。在繪圖過程中,動態(tài)地顯示中間圖形,供設(shè)計者通過定位器(鼠標(biāo)、鍵盤等)進(jìn)行調(diào)節(jié)與控制,直到滿意后才確定下來。

        圖元拾取是指在圖形空間通過某些策略搜尋到所需的幾何元素[4]。它是任何交互式繪圖程序都必須具備的基本功能,是對圖元進(jìn)行移動、刪除、修改等編輯操作的前提和基礎(chǔ),只有首先完成了拾取操作才能對圖元進(jìn)行其他各種編輯操作。拾取效率直接關(guān)系到交互操作的快慢,尤其是生成一個復(fù)雜圖形時,拾取效率顯得尤為重要;另外,拾取的準(zhǔn)確度及可靠性同樣影響系統(tǒng)操作的可靠性及效率。拾取圖元的基本方法是:在屏幕上拾取一點,判斷該點在哪一圖元上[3]。程序充分考慮各種圖元的外形特征,將圖元的拾取分為點的拾取和線段的拾取兩大類[5]。

        第一類點的拾取:為了方便用戶進(jìn)行拾取操作,系統(tǒng)設(shè)定一個拾取精度r(r>0),在當(dāng)前光標(biāo)位置為 Pl()時,如果某個圖元節(jié)點的屏幕坐標(biāo)P (x, y )滿足:

        即鼠標(biāo)點擊點和待拾取點的距離小于給定的拾取精度,則表明點P(x,y)被選中。

        圖1 線段的拾取方法

        具體判別方法是:線段P0P1所在直線的方程為:

        垂直于線段P0P1的直線族可以表示為:

        則光標(biāo)點位于矩形區(qū)域的判別條件為:

        式(5)中,第一個條件表示光標(biāo)點 Pl()位于過線段兩端點處的兩條直線之間,第二個條件表示光標(biāo)點 Pl()到線段P0P1的垂直距離應(yīng)不超過r0。

        在設(shè)計拾取算法時,為了保證在各種情況下能準(zhǔn)確地拾取到所需的圖元,將拾取精度同窗口變化、圖形縮放等因素結(jié)合起來,并用系數(shù)β表示。此外,為了提高圖元拾取效率,判斷某個圖元是否被選中時,首先進(jìn)行初選,方法是判斷圖元的屬性是否當(dāng)前操作圖元,對通過初選的圖元進(jìn)行進(jìn)一步的比較。一旦圖元選取成功則終止比較以避免無謂的計算,同時,根據(jù)選中圖元的 ID號從數(shù)據(jù)資源中找到圖元類的其他信息,從而為圖元的編輯做好準(zhǔn)備。拾取完成以后,給出相應(yīng)的交互式操作界面。

        1.3 圖元的移動

        圖元在繪圖區(qū)繪制好后,為適合網(wǎng)絡(luò)拓?fù)涞暮侠聿季?,有時需要進(jìn)行位置的調(diào)整,即圖元的移動操作。利用程序來實現(xiàn)圖元移動的操作,無論是向上、向下、向左、向右等,其原理是一樣的。先通過左鍵鼠標(biāo)準(zhǔn)確地拾取待移動的圖元,拖動到合適的位置以后,放開鼠標(biāo)左鍵,更新該圖元的坐標(biāo)信息,并將屏幕坐標(biāo)轉(zhuǎn)換為實際坐標(biāo)存入到數(shù)據(jù)庫中,然后重新繪制集輸管網(wǎng)圖形,實現(xiàn)了圖元的移動。

        1.4 圖元的刪除

        當(dāng)一個圖元創(chuàng)建完畢后,如果不符合條件,可點擊工具欄上相應(yīng)圖元類的刪除按鈕;然后,拾取不符合條件的圖元,可以將其刪除。在程序中,當(dāng)刪除事件被觸發(fā)后,調(diào)用該圖元的 Delete接口方法,將圖元的刪除屬性賦值為 true,并通過節(jié)點編號找到對應(yīng)的ID,然后在數(shù)據(jù)庫中找到相應(yīng)的數(shù)據(jù)記錄,利用數(shù)據(jù)庫的ADO命令將其刪除;最后,重新繪制集輸管網(wǎng)圖形,實現(xiàn)了圖元的刪除操作。

        1.5 圖元的存儲

        關(guān)于圖元的保存,考慮到實現(xiàn)圖形建模程序關(guān)閉后可重新調(diào)出已經(jīng)畫好的集輸管網(wǎng)圖再次進(jìn)行操作,即,要求程序具有重畫的功能,存為位圖或圖標(biāo)等格式顯然是不可取的,因此,將其幾何結(jié)構(gòu)以數(shù)據(jù)結(jié)構(gòu)的形式存儲在數(shù)據(jù)庫中。幾何圖形數(shù)據(jù)有多種存儲方式和存儲方法,良好的存儲方法將為整個系統(tǒng)的設(shè)計及功能的實現(xiàn)奠定基礎(chǔ)。對于節(jié)點類,定義了結(jié)構(gòu)體數(shù)組來存儲節(jié)點的名稱、x標(biāo)和y坐標(biāo)等幾何信息,并將其作為一條記錄,存儲在相應(yīng)的節(jié)點類數(shù)據(jù)表中。對于管線類,定義了單相鏈表來記錄管線的起終點坐標(biāo),并將相關(guān)信息也存入到數(shù)據(jù)庫中。當(dāng)需要打開已經(jīng)繪好的集輸管網(wǎng)圖時,只需從數(shù)據(jù)庫中把相關(guān)的數(shù)據(jù)信息讀出來放到結(jié)構(gòu)體數(shù)組和鏈表中,再利用繪圖函數(shù)就可以畫出各圖元,從而實現(xiàn)了圖形的二次使用,也體現(xiàn)了數(shù)據(jù)圖形一體化。另外,為了與其他圖形編輯器的圖形格式兼容,軟件也設(shè)置了位圖存儲格式。

        1.6 屏幕的縮放

        屏幕縮放主要實現(xiàn)3個功能:屏幕放大、屏幕縮小和全屏顯示。在屏幕的縮放過程中,各圖元的實際坐標(biāo)并沒有發(fā)生變化,變化的是實際坐標(biāo)與屏幕坐標(biāo)比例關(guān)系變量pd_MapScale。當(dāng)[pd_MapScale]變化后/[pd_MapScale]變化前>1時,屏幕放大;當(dāng)[pd_MapScale]變化后/[pd_MapScale]變化前<1時,屏幕縮小。當(dāng)用戶點擊工具欄上的屏幕放大工具按鈕或點擊“比例”菜單下“放大”選項時,pd_MapScale會以 10%的比例增大,變成原來的 1.1倍,即[pd_MapScale]變化后/[pd_MapScale]變化前=1.1,這時系統(tǒng)會自動調(diào)用繪圖函數(shù)實現(xiàn)比例關(guān)系變量pd_MapScale變化后的圖形繪制;同理,反之亦然。當(dāng)用戶需要在繪圖區(qū)內(nèi)顯示已經(jīng)繪制好的整個集輸管網(wǎng)圖時,系統(tǒng)會根據(jù)實際坐標(biāo)的最值(包括x最大、最小和y最大、最小)與繪圖區(qū)的寬度和高度之間的大小關(guān)系,來確定一個最優(yōu)的實際坐標(biāo)與屏幕坐標(biāo)比例關(guān)系變量pd_MapScale,從而將整個集輸管網(wǎng)圖以最適合的大小顯示給用戶。

        1.7 屏幕閃爍的消除

        圖形建模程序采用Canvas繪圖技術(shù),通過調(diào)用不同的繪圖函數(shù),實現(xiàn)節(jié)點、管線等圖元的繪制與添加;然而,當(dāng)用戶對圖形進(jìn)行編輯操作時,需要重新繪制圖形。重新繪制的過程總是先用背景色將顯示區(qū)清除,然后再調(diào)用繪圖函數(shù)進(jìn)行繪制,而背景色往往與繪圖內(nèi)容反差很大,這樣在短時間內(nèi)背景色與顯示圖形的交替出現(xiàn),使得顯示窗口看起來在閃爍,即,屏幕閃爍是由于屏幕上顯示內(nèi)容更新不同步造成的。采用雙緩沖繪圖機理可以有效地消除屏幕閃爍。雙緩沖機理是先在內(nèi)存中創(chuàng)建一個與屏幕繪圖區(qū)域一致的對象;然后,將圖形繪制在內(nèi)存對象上;最后,一次性將這個對象上的圖形拷貝到屏幕上,這樣顯示內(nèi)存中的數(shù)據(jù)達(dá)到了同時更新的目標(biāo),消除了屏幕閃爍現(xiàn)象。

        2 結(jié)語

        所給出的繪圖區(qū)和坐標(biāo)系統(tǒng)建立、圖元繪制、拾取、移動、刪除和存儲以及屏幕縮放等程序設(shè)計思想可以用于類似的其他工程應(yīng)用軟件。在具體的軟件開發(fā)過程中,線段類圖元的移動可以考慮整體平移和固定一段移動另一端兩種方式,以及選擇多個圖元同時移動等方式。此外,除了上述幾種基本的圖形繪制與編輯操作外,程序設(shè)計人員還可以根據(jù)實際需要增加其他功能,如,圖元的復(fù)制、粘貼、撤銷與重做等功能。針對具體工藝流程中涉及的閥、泵等有進(jìn)出口的圖元,以及油井、油罐等僅有一個入口或出口的圖元,程序員還可以根據(jù)需要進(jìn)行細(xì)化處理。

        [1]張義寬.計算機圖形學(xué)[M].西安: 西安電子科技大學(xué)出版社,2004.

        [2]陳戰(zhàn)林,張萬里,耿宏運,等.C++ Bui l der組件大全[M].北京: 電子工業(yè)出版社,2002.

        [3]何援軍.計算機圖形學(xué)[M].北京: 機械工業(yè)出版社,2006.

        [4]李春雨.計算機圖形學(xué)理論與實踐[M].北京: 北京航空航天大學(xué)出版社,2004.

        [5]柳朝陽,周小平.計算機圖形學(xué)——圖形的計算與顯示原理[M].西安: 西安電子科技大學(xué)出版社,2005.

        猜你喜歡
        圖元集輸繪圖
        來自河流的你
        中國三峽(2022年7期)2022-12-02 05:28:02
        “禾下乘涼圖”繪圖人
        一種組態(tài)控件技術(shù)在電力監(jiān)控系統(tǒng)中的運用
        簡述油氣集輸系統(tǒng)安全管理問題及對策
        基于FLUENT天然氣集輸管道直角彎管磨損分析
        煤氣與熱力(2021年4期)2021-06-09 06:17:06
        學(xué)術(shù)出版物插圖的編排要求(一):圖注
        聯(lián)鎖表自動生成軟件的設(shè)計與實現(xiàn)
        HYSYS軟件在復(fù)雜山區(qū)頁巖氣集輸管線中的應(yīng)用
        基于HTML5 Canvas繪圖技術(shù)應(yīng)用
        電子測試(2018年4期)2018-05-09 07:28:32
        基于Qt繪圖系統(tǒng)的圖形應(yīng)用優(yōu)化研究與實現(xiàn)
        軟件(2016年12期)2016-02-13 05:58:14
        国产不卡一区二区三区视频| 国产片精品av在线观看夜色| 无码国产福利av私拍| 国产内射合集颜射| 国产精品亚洲ΑV天堂无码| 最好的99精品色视频大全在线| 精品久久亚洲中文字幕| 99久久免费国产精品| 国产主播福利一区二区| 国产日韩一区二区精品| 亚洲自拍偷拍一区二区三区 | 无码av免费精品一区二区三区 | 精品久久久久久久久午夜福利| 精品国产18久久久久久| 狠狠亚洲婷婷综合色香五月| 精品国产a毛片久久久av| 人妻少妇看a偷人无码| 99香蕉国产精品偷在线观看| 亚洲—本道中文字幕久久66| 国产91成人自拍视频| 亚洲av无码国产精品久久| 欧美午夜精品一区二区三区电影| 亚洲最大无码AV网站观看| 香蕉蜜桃av一区二区三区| аⅴ天堂中文在线网| 无码熟妇人妻av在线影片| 不卡a v无码在线| 极品少妇人妻一区二区三区 | 亚洲日韩中文字幕在线播放| 日本午夜免费福利视频| 亚洲乱码一区AV春药高潮| 99久久精品人妻少妇一| 内射欧美老妇wbb| 福利一区视频| 亚洲国内精品一区二区在线| www夜插内射视频网站| 精品无码国产自产野外拍在线| 无码丰满熟妇浪潮一区二区av| 中文字幕亚洲精品在线| 日韩精品久久久肉伦网站| 无码人妻系列不卡免费视频|