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

        ?

        二維鏈表在重要天氣預(yù)告圖填圖原理中的應(yīng)用

        2008-12-31 00:00:00孫勝耀王飛飛
        電腦知識與技術(shù) 2008年28期

        摘要:在重要天氣預(yù)告圖制作過程中,如何利用計算機(jī)圖形學(xué)制作出一個應(yīng)用軟件供天氣預(yù)告員使用,是我們要解決的問題。該文闡述了利用二維鏈表作為基礎(chǔ)結(jié)構(gòu)實現(xiàn)重要天預(yù)告圖填圖的基本原理以及采用二維鏈表實現(xiàn)該原理的過程,現(xiàn)在利用該原理開發(fā)出來的軟件已經(jīng)在全國安裝使用,具有很好的推廣價值和業(yè)務(wù)使用價值。

        關(guān)鍵詞:填圖;繪圖對象;圖層;二維鏈表

        中圖分類號:TP311文獻(xiàn)標(biāo)識碼:A文章編號:1009-3044(2008)28-0193-03

        Two-dimensional Chain in the Principle of Important Weather Forecast Map Mapping

        SUN Sheng-yao,DONG Yang,WANG Fei-fei

        ( College of Computer Information Engineering, Henan University, Kaifeng Henan 475001,China)

        Abstract: In an important weather forecast map production process, how to use computer graphics to produce weather forecast application software for the use of, is that we must solve the problem. This paper describes the use of two-dimensional chain infrastructure as an important day notice of plans to achieve mapping the basic principles and the adoption of two-dimensional realization of the principle of the chain process, using the principles of the software has been developed in the installation are very good Promote the value and business value.

        Key words: mapping;object mapping;mapping layer;two-dimensional graphics objects Listless

        1 引言

        重要天氣預(yù)告圖是在民航系統(tǒng)中,飛機(jī)在低空飛行過程中飛行安全的重要依據(jù)材料;例如在西南地區(qū)廣漢航站;飛機(jī)飛行于低空的過程中,需要飛行機(jī)組人員知道飛行的航線上哪里有影響安全飛行的天氣情況,以便于機(jī)組人員在起飛前或者飛行過程做出調(diào)整,以確保飛機(jī)飛行的安全?,F(xiàn)階段我國重要天氣預(yù)告圖制作采用得主要是手工手段,處理起來極其的不方便,如何利用電腦圖形學(xué)快速的制作出天氣預(yù)告圖,采取怎么樣的原理制作,是要解決的重點。

        根據(jù)各方面的需求和民航總局提出的具體要求,經(jīng)過認(rèn)真的分析,考慮各種情況,最終采用二維鏈表的作為底層各種天氣符號的存取的數(shù)據(jù)結(jié)構(gòu),本文依據(jù)重要天氣預(yù)告圖填圖軟件的設(shè)計思想和底層的實現(xiàn),闡述為什么會最終采用二維鏈表作為底層的數(shù)據(jù)存取結(jié)構(gòu)和采用二維鏈表的優(yōu)點。

        本文組織如下,第二節(jié)介紹了從最簡單的一個天氣符號的情況到復(fù)雜的多個符號處理分別采用的數(shù)據(jù)結(jié)構(gòu),并比較其中的優(yōu)缺點,最終統(tǒng)一到二維鏈表結(jié)構(gòu)中,第三節(jié)具體模擬一下整個的工作過程,第四節(jié)介紹和很多出圖軟件比較采用二維鏈表的優(yōu)點,最后總結(jié)。

        2 二維鏈表在重要天氣預(yù)告圖中的應(yīng)用

        2.1 概念的引入

        現(xiàn)在利用各種高級語言都可以在屏幕上通過語言控制,在電腦屏幕上繪制圖形,做出一張?zhí)鞖庑Ч麍D并不困難,作圖的難點在于,當(dāng)圖中有顯示的天氣符號發(fā)現(xiàn)有錯誤時(比如天氣符號的位置在圖上標(biāo)示錯誤了),應(yīng)該如何處理;假如按照標(biāo)示錯了,把原來的圖摒除不要,然后再重新畫一張,這個處理方式肯定不行的,這樣作圖的效率非常低,并且不允許在作圖過程中出現(xiàn)任何差錯;處理的思路應(yīng)該是發(fā)現(xiàn)標(biāo)示錯了要么進(jìn)行調(diào)整,要么把錯誤的符號刪除掉,然后重新畫在屏幕上;也就是說現(xiàn)在應(yīng)該有這樣的思路:設(shè)計一種數(shù)據(jù)類型,在這個數(shù)據(jù)類型里,可以通過某種方式,發(fā)現(xiàn)某個錯誤的天氣符號,還可以動態(tài)的添加、刪掉某個符號;這是設(shè)計填圖軟件時考慮的首要解決的問題。

        這個數(shù)據(jù)結(jié)構(gòu)會自然的聯(lián)想到鏈表;鏈表可以動態(tài)的添加、刪除和找到某一個接點,符合剛才設(shè)想的數(shù)據(jù)類型,并且算法也很成熟,根據(jù)上面的敘述,涉及到鏈表的算法有:

        插入操作:(算法1)

        Proc ins_linklist(la:linkisttp;i:integer;b:elemtp)

        {la為指向帶頭節(jié)點的單鏈表頭指針,本算法在鏈表中第i個元素之前插入元素b}

        P:=la;j:=0{指針初始化;j為計數(shù)器}

        While(p<>nul)And (j

        If(p=nul)or(j>i-1)

        Then error(‘No this position’){插入位置不合理}

        Else[new(s);s↑.data=b;{生成新接點}

        s↑.next=p↑.next;p↑.next=s;{插入完成}

        ]

        Endp

        刪除操作:(算法2)

        Proc del_linklist(la:linkisttp;i:interger)

        {la為指向頭結(jié)點的單鏈表的頭指針,當(dāng)1<=i<=表長時,本算法刪除表中的第i個元素結(jié)點}

        P:=la;j:=0;{指針初始化,j為計數(shù)器}

        While(p↑.next<>nil) and(j

        {尋找第i個接點,并令p指向它的前驅(qū)接點}

        If(p↑.next=nil) or (j>i-1)

        Then error(‘No this Position’){i<1或i>表長}

        Else[q:=p↑.next;p↑.next:=p↑.next↑.next;

        Dispose(q){釋放被刪接點}

        ]

        Endp;

        得到某一接點算法:(算法3)

        Func get_linklist(la:linkisttp;i:interger):elemtp;

        { la為指向頭結(jié)點的單鏈表的頭指針,當(dāng)1<=i<=表長時,返回第i個數(shù)據(jù)元素,否則返回空元素1}

        P:=la;j:=1;{指針初始化,j為計數(shù)器}

        While(p<>nil) and (j

        {順指針查找指向第i個元素結(jié)點或指針為空}

        If(p<>nil) and (j=i)

        Then return (p↑.data)

        Else return(1)

        Endp;

        定位函數(shù):(算法4)

        Func loc_sqlist(va:sqlisttp;x:elemtp):integer

        {在鏈表va中查找第一個值和小相同的元素,若存在則返回該元素在鏈表中的位序,否則返回0}

        i:=1;{i指示鏈表中元素的位序}

        while (i<=va.last) cand (va.elem[i]<>x)do i:=i+1;

        if(i<=va.last)then return(i) else return(0)

        endp;

        2.2 只有一個天氣符號的調(diào)整

        找到實現(xiàn)的數(shù)據(jù)結(jié)構(gòu)后,接下來考慮鏈表接點中應(yīng)該存儲什么樣的數(shù)據(jù)對象,先考慮天氣預(yù)告圖上只有一個天氣符號的情況。如果需要在屏幕上(起名為畫布)繪制天氣符號,因該需要這些確切的信息:什么天氣符號,在畫布上的準(zhǔn)確位置,顯示的寬與高;根據(jù)這些信息抽象成一個類:命名為:DrawObject,其中屬性包括:

        Drawobject對象類:

        屬性:位置和大?。ㄎ恢茫簒、y;高:Height;寬:Width);天氣圖像(Bitmap)

        其中的“位置和大小”屬性可以用當(dāng)前天氣符號的外接矩形來代替;這時候DrawObject的屬性成為:外接矩形;天氣符號(bitmap);那么鏈表中的每個節(jié)點就放一個DrawObject類對象。

        當(dāng)在畫布上畫一個天氣符號時,發(fā)現(xiàn)天氣符號在天氣圖上標(biāo)示錯誤,應(yīng)該這樣調(diào)整:首先把新的調(diào)整后的DrawObject對象對現(xiàn)有的DrawObject對象賦值,然后直接在畫布上畫即可,具體實現(xiàn)步驟為:

        Step 1 重新聲明一個新的DrawObject對象

        Step 2 給調(diào)整后的值賦給聲明的對象(外接矩形,天氣圖像)

        Step 3 用新對象代替原來的對象

        Step 4 在畫布上畫調(diào)整后的DrawObject對象;

        Step 5 完成調(diào)整。

        對于錯誤的調(diào)整方式和以上步驟一致,只是在第二步中把天氣的圖形屬性調(diào)整過程中換成需要的天氣符號圖形即可。

        2.3 多個天氣符號在單鏈表中調(diào)整

        單個符號調(diào)整非常容易,當(dāng)畫布上有多個天氣符號時,調(diào)整其中的某一時,應(yīng)該如何處理;不妨設(shè)現(xiàn)在已經(jīng)把在畫布上的多個天氣符號存放到了鏈表(List)中;如果調(diào)整齊中的一個首先需要找到要調(diào)整的,然后進(jìn)行相應(yīng)的調(diào)整,具體步驟:

        Step1找到要調(diào)整的天氣符號,調(diào)用算法4;

        Step2記錄下來調(diào)整的天氣符號在鏈表中的位置,在該結(jié)點上調(diào)用2.1處理單個天氣符號的方式

        Step3在畫布上重新繪制List< DrawObject >調(diào)整后所有天氣符號對象。

        Step4完成體調(diào)整;

        在step3中,在畫布上重新繪制調(diào)整后的鏈表時,是把鏈表中記錄的所有天氣符號都重新繪制了一遍,為什么不是調(diào)整哪個天氣符號就重新繪制哪個呢,主要是考慮到調(diào)整的過程中每次調(diào)整可能不止是一個符號,有可能每次要調(diào)整多個,比如一次性把多個天氣符號的位置改變,這個時候如果每次都要調(diào)用鏈表找到某一個節(jié)點的方法,按照計算機(jī)中處理問題的最壞算法,算法復(fù)雜度將是(N2),如果采用以上的方式算法復(fù)雜度為(N)

        2.4 圖層概念在填圖中的應(yīng)用

        在填圖的過程中,一張?zhí)鞖忸A(yù)告圖上是一個天氣符號的可能性很小,如果每次都是按照2.3的方式處理,每次調(diào)整都是把鏈表中每個天氣符號都要重新繪制,這時算法效率是非常低的;在填圖過程中,總是會有一部分天氣符號不需要調(diào)整,即在調(diào)整中不需要每次都要重新繪制所有的符號,而是只需要繪制其中經(jīng)常調(diào)整的符號;基于這種考慮,在填圖過程軟件設(shè)計中引入了二維鏈表的概念。具體示意圖為:

        圖1

        在圖1中,橫向鏈表記錄的是填圖過程中天氣符號信息,從整體上觀察,鏈表好像一層一層的,把縱向鏈表命名為圖層,縱向鏈表的每個節(jié)點都記錄了當(dāng)前層中一系列天氣符號的公共信息,比如某層中一系列符號是否在調(diào)整時需要重新繪制,在畫布上有很多天氣符號時,當(dāng)前層的天氣符號是否需要顯示等一系列屬性,把圖層也抽象化一個類對象,命名為layer其中屬性有:

        當(dāng)前層是否可見:IsVissal

        當(dāng)前層是否活動:IsActive

        當(dāng)前層是否選中:IsSelected

        在縱向圖層鏈表中涉及到算法有圖層的添加、圖層的移除、設(shè)置圖層是否可見、設(shè)置圖層是否活動、設(shè)置圖層是否被選中;

        具體算法設(shè)置為:

        添加圖層操作:調(diào)用算法1;

        圖層移去算法:調(diào)用算法2;

        設(shè)置圖層是否可見、設(shè)置圖層是否活動、設(shè)置圖層是否被選中調(diào)用算法3,操作的步驟是首先找到要設(shè)置的圖層,然后設(shè)置相應(yīng)的屬性。

        這個時候二維鏈表數(shù)據(jù)結(jié)構(gòu)為:

        List,其中l(wèi)ayer=list

        天氣符號在二維鏈表里存儲,然后再畫布上重新繪制,基于設(shè)置二維鏈表的考慮和重新繪制過程中效率的考慮,當(dāng)前處于活動的圖層只能有一個,也就是說把經(jīng)常做調(diào)整天氣符號都放到某一個圖層中,即當(dāng)前活動層,當(dāng)作某一符號調(diào)整時,只需要重新繪制當(dāng)前活動層里面記錄的天氣符號即可;這并不代表那些不在“經(jīng)常調(diào)整鏈表”的天氣符號就不能做調(diào)整了,可以通過設(shè)置活動層的方式把原來不活動的圖層,設(shè)置成新的活動圖層,然后再對新活動圖層調(diào)整,以完成調(diào)整過程,具體操作步驟為:

        Step 1 找到當(dāng)前活動的圖層(或者是設(shè)置某一層為活動層);調(diào)用算法4;

        Step 2 找到要調(diào)整的天氣符號,調(diào)用算法4;

        Step 3 把相應(yīng)調(diào)整的值重新賦值給當(dāng)前調(diào)整地符號;

        Step 4 開始重新繪制;

        Step 5 完成調(diào)整。

        3 二維鏈表在填圖軟件中的工作過程

        在2.2和2.3討論的情況都可以統(tǒng)一到二維鏈表的中,2.1單個天氣符號的情況相當(dāng)于圖層鏈表只有一層,天氣符號鏈表結(jié)點也只有一個情況;對于2.3中多個天氣符號在單鏈表調(diào)整的情況相當(dāng)于圖層鏈表有一層,天氣符號鏈表結(jié)點有多個;現(xiàn)在整體模擬一下二維鏈表在填圖軟件中是具體的工作步驟。

        3.1 二維鏈表添加天氣符號過程

        Step 1初始化鏈表;

        Step 2聲明一個天氣符號對象,把要在畫布上顯示的屬性賦值給該天氣符號;

        Step 3在二維鏈中調(diào)用算法1加入一個圖層接點;

        Step 4在當(dāng)前圖層中調(diào)用算法1,加入一個繪圖對象接點;

        Step 5把剛才聲明的天氣符號對象,賦值給新申請的對象接點

        Step 6如果繼續(xù)添加新的天氣符號,轉(zhuǎn)回Step 2;

        Step 7如果當(dāng)前的活動層符號不再做調(diào)整,回到Step 1;

        Step 8得到活動層,遍歷活動層鏈表在畫布上重新繪制;

        Step 9完成。

        3.2 符號調(diào)整的過程

        Step1得到當(dāng)前整個二維鏈表

        Step2得到當(dāng)前活動的圖層編號,調(diào)用算法4

        Step3得到調(diào)整的符號在當(dāng)前活動層中序號,調(diào)用算法4;

        Step4得到在鏈表中的位置i,如果刪除調(diào)用算法2;如果調(diào)整,把要調(diào)整的屬性賦給位置i的符號。

        Step5得到活動層,遍歷活動層鏈表在畫布上重新繪制;

        Step6完成調(diào)整。

        3.3 調(diào)整某一圖層的過程

        Step1調(diào)用算法4,獲得要調(diào)整的圖層編號;

        Step2如果移出圖層,調(diào)用算法2

        Step3把設(shè)置新的圖層的屬性賦值給當(dāng)前的圖層,設(shè)置的屬性包括當(dāng)前的圖層是否為可見,把當(dāng)前圖層設(shè)置為不活動的等;

        Step4得到活動層,遍歷活動層鏈表在畫布上重新繪制;

        Step5完成調(diào)整。

        4 二維鏈表在填圖軟件中的使用的優(yōu)點

        采用二維鏈表作為天氣預(yù)告圖填圖軟件的存儲數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),具有很多的優(yōu)點:

        1) 可以很好的滿足初始設(shè)計的理念;現(xiàn)在我國很多地區(qū)作天氣預(yù)告圖,仍然采用手工方式,采用二維鏈表作為設(shè)計數(shù)據(jù)存儲對象制作出的填圖軟件,把天氣預(yù)告圖的制作利用計算機(jī)處理,能很好提高工作效率;大大提高了天氣預(yù)告圖制作的準(zhǔn)確性和及時性。

        2) 二維鏈表可以提高在重新繪制過程中效率問題,把經(jīng)常調(diào)整的天氣符號對象放到二維鏈表活動圖層中,可以在每次調(diào)整中不用把二維鏈表中的每個天氣符號對象都重新繪制;只需要繪制一部天氣符號就可以完成調(diào)整過程。

        3) 和其他的很多的作圖軟件比較,采用二維鏈表作為底層的數(shù)據(jù)結(jié)構(gòu)不但能實現(xiàn)其他作圖軟件的所有功能,而且還能提供其他作圖軟件不具備的作圖功能,比如現(xiàn)在比較流行的Snigit抓圖軟件,沒有圖層的概念和某些圖形不可見得概念,利用二維鏈表作存儲結(jié)構(gòu)制作出來的填圖軟件不但具有圖層概念,而且也可以設(shè)置某一圖層里面的天氣符號不顯示等一系列功能,最重要的是采用二維鏈表作為存儲結(jié)構(gòu),比采用單鏈表效率要高。

        5 總結(jié)

        本文集中討論了怎樣在設(shè)計填圖軟件時,如何考慮選擇二維鏈表作為底層實現(xiàn)的數(shù)據(jù)結(jié)構(gòu)和采用二維鏈表好處的;通過采用二維鏈表,使得在重要天氣預(yù)告圖填圖軟件設(shè)計實現(xiàn)的過程中能夠快速的設(shè)計出用戶需求的軟件,利用這個原理制作的軟件現(xiàn)在已經(jīng)在全國的很多地區(qū)安裝使用,用戶普遍反映這個軟件簡單易用,具有很好的推廣價值。

        二維鏈表的在填圖軟件中使用的設(shè)計理念不單是針對于重要天氣預(yù)告圖填圖軟件具有很好指導(dǎo)作用,其他很多的填圖軟件制作時也可以采用這套理論,為他人制作填圖軟件提供了很好的借鑒價值,有助于其他人快速的設(shè)計出功能更加強大的填圖軟件。

        參考文獻(xiàn):

        [1] 孫正興,馮桂煥,周若鴻.基于手繪草圖的人機(jī)交互技術(shù)研究進(jìn)展[J].計算機(jī)輔助設(shè)計與圖形學(xué)學(xué)報,2005,17(9):1889-1899.

        [2] Landay J A, MyersB A1 Sketchinginterfaces: toward more hu2man interface design [J].1 IEEE Computer,2001,34(3):56-64.

        [3] Lin J,Newman M W DENIM:finding a tighter fit between tools and practice for1web site design[C].Proceedings of SIGCHI Conference on Human Factors in ComΠputinΠ g Systems,New York,2000:510-517.

        [4] 嚴(yán)蔚敏.數(shù)據(jù)結(jié)構(gòu)[M].2版,北京:清華大學(xué)出版社,1992.

        [5] 姚家弈.計算機(jī)圖像技術(shù)及其應(yīng)用[M].北京:國防工業(yè)出版社,1998.

        [6] 李朝暉.用雙向鏈表實現(xiàn)繪圖軟件中的幾個常用功能[J].河北理工學(xué)院學(xué)報,2000,22(2):63-68.

        [7] 馮桂煥,孫正興,謝強,鄭文濤.基于手繪草圖的方案設(shè)計CAD系統(tǒng)[J].計算機(jī)輔助設(shè)計與圖形學(xué)學(xué)報,2007(6):58-63.

        [8] 王琦,魯東明.中國書畫的計算機(jī)虛擬繪制概述[J].計算機(jī)輔助設(shè)計與圖形學(xué)學(xué)報,2007(2):3-10.

        亚洲一区二区三区播放| 久精品国产欧美亚洲色aⅴ大片| 亚洲图区欧美| 久久久久欧洲AV成人无码国产 | 性夜夜春夜夜爽aa片a| 一区二区日韩国产精品| 美女超薄透明丝袜美腿| 亚洲欧美日韩一区在线观看| 精品国精品自拍自在线| 国产av一级黄一区二区三区| 97色伦图片97综合影院| 无码人妻精品一区二区三区不卡| 国产a v无码专区亚洲av| 99色网站| 久久国产亚洲av高清色| 不卡av一区二区在线| 亚洲精选自偷拍一区二| 欧美乱人伦人妻中文字幕| 亚洲乱亚洲乱少妇无码99p| 午夜AV地址发布| 国产成人自拍小视频在线| 亚洲一区二区日韩精品| 国产精品对白一区二区三区| 少妇仑乱a毛片| 被黑人做的白浆直流在线播放| 欧美zozo另类人禽交| 天涯成人国产亚洲精品一区av| 操风骚人妻沉沦中文字幕| 午夜成人鲁丝片午夜精品| 亚洲中文字幕无码二区在线| 视频一区中文字幕日韩| 欧美大胆性生话| 躁躁躁日日躁| 人妻少妇av中文字幕乱码免费| 国产av麻豆精品第一页| 丝袜美腿在线观看一区| 亚洲爆乳精品无码一区二区| 国产日韩精品一区二区在线观看播放 | 国产香蕉尹人在线观看视频| 国产高清在线91福利| 精品一区二区av在线|