專利名稱:基于矢量圖和位圖的大規(guī)模網(wǎng)絡(luò)拓撲平面可視化方法
技術(shù)領(lǐng)域:
本文涉及支持位圖平移的大規(guī)模網(wǎng)絡(luò)拓撲平面的可視化技術(shù)。
背景技術(shù):
目前,國際上對網(wǎng)絡(luò)拓撲可視化已有深入的研究,如Netlayout、 Otter等,它們都 是在平面上顯示網(wǎng)絡(luò)拓撲。Netlayout是采用物理模型,基于引力和斥力的布局,但是收斂 速度慢。Otter采用層次布局,先放置根結(jié)點,然后放置非根結(jié)點。這兩種算法在網(wǎng)絡(luò)規(guī)模 較小的情況下可視化效果較好,但對于上萬節(jié)點的大規(guī)模網(wǎng)絡(luò)而言,更多的需要人工干預(yù), 而且可視化效果不佳。 現(xiàn)有的網(wǎng)絡(luò)拓撲圖采用矢量圖來顯示,對于小規(guī)模網(wǎng)絡(luò),如校園網(wǎng)等,只有幾十個 或幾百個路由器,還比較實用,但對于大規(guī)模網(wǎng)絡(luò)拓撲圖的顯示,采用矢量圖來顯示存在諸 多問題,比如在屏幕切換時的空白區(qū)域和抖動現(xiàn)象,隨著拓撲圖規(guī)模的增大,空白區(qū)域及抖 動現(xiàn)象會加劇,甚至?xí)L時間在屏幕上顯示白屏,視覺效果很差。但是,另一方面,在顯示清 晰度方面有他的明顯優(yōu)勢。現(xiàn)有可視化技術(shù)中常用的矢量圖像,也稱為面向?qū)ο蟮膱D像或 繪像,在數(shù)學(xué)上定義為一系列由線連接的點。矢量文件中的圖形元素稱為對象。每個 對象都是一個自成一體的實體,它具有顏色、形狀、輪廓、大小和屏幕位置等屬性。既然每個 對象都是一個自成一體的實體,就可以在維持它原有清晰度和彎曲度的同時,多次移動和 改變它的屬性,而不會影響圖例中的其它對象。這些特征使基于矢量的程序特別適用于圖 例和三維建模,因為它們通常要求能創(chuàng)建和操作單個對象?;谑噶康睦L圖同分辨率無關(guān)。 這意味著它們可以按最高分辨率顯示到輸出設(shè)備上。 矢量圖的最大優(yōu)點是它可以進行隨意的放大和縮小,它的圖像質(zhì)量不會有損失。 同時,矢量圖不用大量的單個像素點建立圖像,而是用數(shù)學(xué)方程、數(shù)字形式對畫面進行描 述。由于矢量圖的這種特性,所以矢量圖占用空間很小,即使復(fù)雜的矢量圖也不會占多大的 空間,而且進行編輯修改也方便。這是矢量圖優(yōu)于位圖的地方。但由于矢量圖采用的是一 種計算的方法,它記錄的是生成圖形的算法。圖形的重要部分是節(jié)點,相鄰的節(jié)點之間用特 性曲線連接;曲線由節(jié)點本身具有的角度特性都經(jīng)過計算得出。電腦每次顯示矢量圖時都 要通過重新計算生成,所以矢量圖的顯示速度沒有位圖快。對于大規(guī)模網(wǎng)絡(luò)拓撲圖,速度較 慢將會引入很大延遲。 矢量圖的計算是基于圖形幾何變換原理的,圖形變換一般是指對圖形的幾何信息
經(jīng)過幾何變換后產(chǎn)生新的圖形,它提供了構(gòu)造或修改圖形的方法。除圖形的位置變動外,還
可以將圖形放大或縮小,甚至對圖形作不同方向的拉伸來使其扭曲變形。在二維平面中,任
何一個圖形都可以認為是點之間的連線構(gòu)成的,而連線又是由點構(gòu)成,所以,圖形可以看做
是點的集合。對于一個圖形作幾何變換,實際上就是對一系列點進行變換。 在二維平面內(nèi),一個點通常用它的兩個坐標(biāo)(x, y)來表示,寫成矩陣形式則為
3<formula>formula see original document page 4</formula> 若[A] 、 [B] 、 [M]都是矩陣,且[A] [M]
為點的變換提供了工具。
設(shè)變換矩陣,則[M]被稱為變換矩陣。變換矩陣
<formula>formula see original document page 4</formula>
<formula>formula see original document page 4</formula>將點的坐標(biāo)[x y]與變換矩陣[M]相乘,變換后點的坐標(biāo)記作[x' y'
],則
<formula>formula see original document page 4</formula>
可見,新點的位置取決于變j 可見,新點的位置取決于變量A、B、C、D的值。
在對矢量圖的運算中,對于平面上的點,有如下齊次變換矩陣
[x* y*] = [x y] T 其中(x, y)為變換之前的點坐標(biāo),(x*, y*)為變換以后的點坐標(biāo),T為變換矩陣,在二維空間中,圖形變換矩陣可表示為<formula>formula see original document page 4</formula> 其中a、b、c、d是對圖形進行縮放、對稱、旋轉(zhuǎn)、錯切等變換;e、f是對圖形進行平移變換;P、q對圖形進行透視變換;s是對圖形進行整體伸縮變換。當(dāng)s < 1時,圖形被放大;當(dāng)s > 1時,圖形縮??;當(dāng)s = 1時,圖形大小不變。即變換后的坐標(biāo)均為原坐標(biāo)x,y的1/s倍。 圖形平移的過程為將一個點(x, y)沿水平方向移動c單位,平移到一A^(X*, y",數(shù)學(xué)表達式為:
<formula>formula see original document page 4</formula> 如果c是正值,則點向右移動,如果是負值,則向左移動;同理,如果f是正值,則點向上移動,如果f是負值,則向下移動。 對于矢量圖顯示速度慢的特點,目前解決這個問題主要的辦法是在顯示一個圖形元素前,對這個圖形元素進行判斷,判斷這個圖形元素是否出現(xiàn)在屏幕中,如果這個圖形元素不在當(dāng)前的視圖屏幕中,就不用對這個圖形元素進行繪制,以便節(jié)省繪制時間。這種方法雖然可以節(jié)省繪制時間,但引入了判斷時間,也不能減少重繪次數(shù),因此仍然有一定的局限性,受圖形元素個數(shù)限制,對于大規(guī)模的圖形顯示,提高的速度是有限的,仍然不能有效解決由于顯示速度帶來的閃爍問題。由于矢量圖采用的是一種計算的方法,電腦每次顯示矢量圖時都要通過重新計算生成,對于大規(guī)模無向圖,圖形元素多,重新計算將引入很大的延遲,例如,對圖形的一次簡單拖動,可能需要數(shù)十秒甚至更長時間的延遲,出現(xiàn)閃爍現(xiàn)象,給操作帶來極大的不便。而位圖不需要計算,顯示速度要比矢量圖快,但位圖非常占用資源,在資源有限的情況下,位圖能顯示圖的規(guī)模是有限的,而且放縮會失真。
發(fā)明內(nèi)容
為了解決現(xiàn)有采用矢量圖顯示大規(guī)模網(wǎng)絡(luò)拓撲圖存在的算法復(fù)雜、刷新速度慢的
問題,本發(fā)明提供一種基于矢量圖和位圖的大規(guī)模網(wǎng)絡(luò)拓撲平面可視化方法。 基于矢量圖和位圖的大規(guī)模網(wǎng)絡(luò)拓撲平面可視化方法, 采用三個圖層的位圖來顯示網(wǎng)絡(luò)拓撲圖,第一圖層是采用空白位圖表示的圖形區(qū)域;在所述圖形區(qū)域上的第二圖層是帶有坐標(biāo)的位圖區(qū)域,用于記錄圖形的局部;在所述位圖區(qū)域上的第三圖層是客戶區(qū)域,即用戶所能夠看到的區(qū)域; 采用矢量圖形文件保存節(jié)點的位置和曲線、顏色;并將矢量圖映射到位圖區(qū)域上; 當(dāng)客戶區(qū)域在位圖區(qū)域內(nèi)發(fā)生移動時,可視化的過程為 Yl、計算客戶區(qū)域移動的橫、縱坐標(biāo)偏移量; Y2、計算客戶區(qū)域的大??; Y3、確定客戶區(qū)域移動的目標(biāo)位置; Y4、判斷客戶區(qū)域是否與位圖區(qū)域相交,如果相交,則執(zhí)行步驟Y5 ;否則執(zhí)行步驟Y6 ; Y5、移動位圖區(qū)域的中心到客戶區(qū)域的中心,然后執(zhí)行步驟Y6 ;
Y6、重繪位圖; Y7、將當(dāng)前位置作為下一次移動的前一個位置,此次移動結(jié)束;
當(dāng)客戶區(qū)域發(fā)生擴大或者縮小時,可視化的過程為
Dl、確定客戶區(qū)域放大或者縮小的倍數(shù);
D2、通過矢量運算對矢量圖進行放大或者縮小; D3、將放大或者縮小后的矢量圖重新映射到位圖區(qū)域上,放大或縮小過程完成。 本發(fā)明所述的方法將矢量顯示和分層顯示結(jié)合起來,充分發(fā)揮了基于矢量圖和位
圖進行可視化方法的各自優(yōu)點,實現(xiàn)了無向圖的矢量化顯示,使拓撲圖的顯示同時具有矢
量圖的放縮無失真、占用資源少和位圖的顯示速度快優(yōu)點。 本發(fā)明的方法尤其適用于大規(guī)模無向圖的可視化技術(shù)中。
圖1是本發(fā)明所述的三個圖層的位置關(guān)系示意圖。圖2-4是客戶區(qū)域移動過程的狀態(tài)示意圖,其中圖2是當(dāng)前位圖的狀態(tài)示意圖,圖3是移動前的狀態(tài)示意圖,其中客戶區(qū)域的下方有一個圓形的圖形,圖4是移動后的狀態(tài)示意圖,在移動后,圓形的圖形隨著客戶區(qū)域移動。圖5是客戶區(qū)域移動的實現(xiàn)流程示意圖。圖6是使用本發(fā)明的方法處理前,使用位圖的顯示效果示意圖,圖7是采用位圖放大的方法對圖6進行放大處理后的圖形,圖形中的線條已經(jīng)呈現(xiàn)出現(xiàn)鋸齒狀,圖形失真;圖8是采用本發(fā)明的方法對圖6進行放大處理后的圖形。
具體實施例方式
具體實施方式
一 本實施方式所述的基于矢量圖和位圖的大規(guī)模網(wǎng)絡(luò)拓撲平面可視化方法,采用三個圖層的位圖來顯示網(wǎng)絡(luò)拓撲圖,第一圖層是采用空白位圖表示的圖形區(qū)域;在所述圖形區(qū)域上的第二圖層是帶有坐標(biāo)的位圖區(qū)域,用于記錄圖形的局部;在所述位圖區(qū)域上的第三圖層是客戶區(qū)域,即用戶所能夠看到的區(qū)域; 采用矢量圖形文件保存的節(jié)點的位置和曲線、顏色;并將矢量圖映射到位圖區(qū)域上; 當(dāng)客戶區(qū)域在位圖區(qū)域內(nèi)發(fā)生移動時,可視化的過程為 Yl、計算客戶區(qū)域移動的橫、縱坐標(biāo)偏移量; Y2、計算客戶區(qū)域的大??; Y3、確定客戶區(qū)域移動的目標(biāo)位置; Y4、判斷客戶區(qū)域是否與位圖區(qū)域相交,如果相交,則執(zhí)行步驟Y5 ;否則執(zhí)行步驟Y6 ; Y5、移動位圖區(qū)域的中心到客戶區(qū)域的中心,然后執(zhí)行步驟Y6 ;
Y6、重繪位圖; Y7、將當(dāng)前位置作為下一次移動的前一個位置,此次移動結(jié)束;
當(dāng)客戶區(qū)域發(fā)生擴大或者縮小時,可視化的過程為
Dl、確定客戶區(qū)域放大或者縮小的倍數(shù);
D2、通過矢量運算對矢量圖進行放大或者縮??; D3、將放大或者縮小后的矢量圖重新映射到位圖區(qū)域上,放大或縮小過程完成。
所述步驟Y6中,重繪位圖的過程為將位圖區(qū)域上的圖形擦除,并根據(jù)移動距離將位圖區(qū)域上的擦除前的圖形平移后重畫在位圖上。 本實施方式中,在圖形移動的過程,既圖形漫游的過程中,用戶通過拖動客戶區(qū)域來觀察圖形的各個局部,當(dāng)客戶區(qū)域的移動范圍超過位圖區(qū)域時,將所述位圖區(qū)域的中心移到客戶區(qū)域的中心位置,然后將位圖區(qū)域上的圖形擦除,并根據(jù)移動距離將位圖區(qū)域上擦除前的圖形平移后重畫在客戶區(qū)域上。本實施方式中的圖形移動過程,采用位圖的顯示方法,在重新繪制時不需對每個元素進行判斷,同時還大大減少了重繪次數(shù),并且位圖信息的更新可以通過直接從內(nèi)存拷貝圖像信息來實現(xiàn),延遲非常小、移動速度快,有效地避免了現(xiàn)有技術(shù)中采用矢量圖顯示的方法存在的,要根據(jù)圖像移動的情況不斷地重新計算更新矢量圖而導(dǎo)致的圖像更新延遲、進而導(dǎo)致的圖像閃爍的問題。 本實施方式中,采用矢量圖形文件保存的節(jié)點的位置和曲線、顏色,可以用很小的文件記錄規(guī)模很大的網(wǎng)絡(luò)拓撲圖信息,節(jié)省了拓撲圖數(shù)據(jù)所占用的空間,節(jié)省了資源。在客戶區(qū)域發(fā)生擴大或者縮小時,首先通過矢量運算對矢量圖進行放大或者縮小,然后再把放大或者縮小后的客戶區(qū)域內(nèi)的矢量圖映射在客戶區(qū)域的位圖上。 本實施方式中,對用戶區(qū)域的擴大或縮小時,首先通過矢量運算對矢量圖進行放縮,然后再把用戶區(qū)域的那部分矢量圖映射在位圖上,而不是直接對位圖放縮,從而實現(xiàn)了矢量圖放縮不失真的特點。
本實施方式所述的基于矢量圖和位圖的大規(guī)模網(wǎng)絡(luò)拓撲平面可視化方法,采用的是基于位圖的矢量化顯示技術(shù),把位圖和矢量圖的優(yōu)點結(jié)合起來,即有較快的速度,又可以無級放縮,并占用較少的空間。
具體實施方式
二 本實施方式是具體實施方式
一所述的基于矢量圖和位圖的大規(guī)模網(wǎng)絡(luò)拓撲平面可視化方法的一個具體實施例 本實施例中的三個圖層的位圖來顯示拓撲圖,第一圖層的空白位圖大小為10000X10000像素圖形區(qū)域,第二圖層的位圖區(qū)域的坐標(biāo)區(qū)域為(-32767, -32767) (32767, 32767),參見圖1所示。 采用矢量圖形文件保存的節(jié)點的位置和曲線、顏色;將矢量圖映射到位圖區(qū)域上。 客戶區(qū)域即為在屏幕上能看到的圖形范圍,即所述客戶區(qū)域僅僅記錄了全部拓撲
形的一個局部,當(dāng)用戶通過拖動來觀察客戶區(qū)域,即所述的局部的圖形時,不需要重新
計算來生成矢量圖,這是因為雖然客戶區(qū)域的的矢量圖發(fā)生平移而使它的屏幕坐標(biāo)發(fā)生改
變,但是,此時用戶并不需要直接觀察位圖區(qū)域,而只需觀察記錄在客戶區(qū)域的位圖上的部
分,矢量圖的移動就轉(zhuǎn)化為位圖的移動,位圖隨用戶對客戶區(qū)域的拖動位置發(fā)生改變,而位
圖區(qū)域與位圖區(qū)域上的矢量圖的相對位置并沒有改變,所以矢量圖不需要重新計算,實現(xiàn)
位圖的移動只需把圖形數(shù)據(jù)塊從一個位置拷貝到另一個位置。在現(xiàn)有的VC或VB等常用編
程語言中都直接提供了圖形拷貝函數(shù)(BitBit, StrechBit),方便的實現(xiàn)了對位圖的移動,
并且時間非???,沒有延遲,不會導(dǎo)致圖形的閃爍。 當(dāng)客戶區(qū)域在位圖區(qū)域內(nèi)時,如圖l所示情況,采用圖形在內(nèi)存中的拷貝拖動位圖實現(xiàn)圖形的漫游。 當(dāng)客戶區(qū)域與位圖區(qū)域相交時,即客戶區(qū)域移動范圍超出位圖區(qū)域的范圍,如圖2
所示情況,客戶區(qū)域與在位圖區(qū)域外的圖形將無法拖動,此時,將位圖區(qū)域的中心移到客戶
區(qū)域的中心(假設(shè)此時用戶在四個方向移動的概率相等),如圖3、4所示,然后將位圖區(qū)域
上的圖形擦除,并根據(jù)移動距離將位圖區(qū)域上的擦除前的圖形平移后重畫在位圖上。 當(dāng)對客戶區(qū)域進行放縮操作時,首先通過矢量運算對位圖區(qū)域放縮,然后在把客
戶區(qū)域范圍內(nèi)的圖形映射在位圖上,而不是直接對位圖放縮,從而實現(xiàn)了矢量圖放縮不失
真的特點,如圖8所示。 本實施方式中,對矢量圖進行放大或者縮小采用組合變換的方法,具體為
首先,將任意點移向坐標(biāo)原點,或者將任意線移向與X或Y軸重合的位置;
然后,用矢量圖形計算方法中的齊次變換矩陣對移動后的矢量圖的坐標(biāo)進行變換; 最后,將矢量圖反向移回任意點或者任意線的回原位。 上述方法是經(jīng)過平移、某種變換、再平移的多次變換構(gòu)成,而不僅僅是一種獨立的變換,故而稱為組合變換。在上述組合變換中,多個變換矩陣之積稱為組合變換矩陣。
例如圖形相對于(e, f)點作比例變換,由以下三個矩陣相乘來實現(xiàn)
<formula>formula see original document page 7</formula>
算法的實現(xiàn)描述
函數(shù)名稱OnLButtonDown(UINT nFlags, CPoint point) 功能說明鼠標(biāo)左鍵按下消息響應(yīng)函數(shù) 鼠標(biāo)左鍵按下時,記錄鼠標(biāo)當(dāng)前坐標(biāo),設(shè)定移動標(biāo)志mvFlag 輸入?yún)?shù)可選標(biāo)志nFlags、鼠標(biāo)當(dāng)前坐標(biāo)位置 函數(shù)名稱OnMouseMove(UINT nFlags, CPoint point) 功能說明鼠標(biāo)移動消息響應(yīng)函數(shù) 鼠標(biāo)移動時,計算圖像左上角坐標(biāo),不斷調(diào)用0nDraw()刷新客戶區(qū)域
輸入?yún)?shù)可選標(biāo)志nFlags、鼠標(biāo)當(dāng)前坐標(biāo)位置 本實施方式所述的矢量圖的放大或縮小的方法,能夠保證圖中的點在放大或縮小后的位置保持不變。 使用本實施方式的方法處理前,使用位圖的顯示效果參見圖6所示,當(dāng)用位圖放大后,參見圖7所示,圖形中線條已經(jīng)呈現(xiàn)出現(xiàn)鋸齒狀,圖形失真。采用本發(fā)明的方法對圖7進行處理后的結(jié)果參見圖8所示,圖形的縮放不失真,實現(xiàn)了矢量化的顯示,同時,對圖形變換,如平移,放縮幾乎沒有延遲。
權(quán)利要求
基于矢量圖和位圖的大規(guī)模網(wǎng)絡(luò)拓撲平面可視化方法,其特征在于,它采用三個圖層的位圖來顯示網(wǎng)絡(luò)拓撲圖,第一圖層是采用空白位圖表示的圖形區(qū)域;在所述圖形區(qū)域上的第二圖層是帶有坐標(biāo)的位圖區(qū)域,用于記錄圖形的局部;在所述位圖區(qū)域上的第三圖層是客戶區(qū)域,即用戶所能夠看到的區(qū)域;采用矢量圖形文件保存的節(jié)點的位置和曲線、顏色;并將矢量圖映射到位圖區(qū)域上;當(dāng)客戶區(qū)域在位圖區(qū)域內(nèi)發(fā)生移動時,可視化的過程為Y1、計算客戶區(qū)域移動的橫、縱坐標(biāo)偏移量;Y2、計算客戶區(qū)域的大??;Y3、確定客戶區(qū)域移動的目標(biāo)位置;Y4、判斷客戶區(qū)域是否與位圖區(qū)域相交,如果相交,則執(zhí)行步驟Y5;否則執(zhí)行步驟Y6;Y5、移動位圖區(qū)域的中心到客戶區(qū)域的中心,然后執(zhí)行步驟Y6;Y6、重繪位圖;Y7、將當(dāng)前位置作為下一次移動的前一個位置,此次移動結(jié)束;當(dāng)客戶區(qū)域發(fā)生擴大或者縮小時,可視化的過程為D1、確定客戶區(qū)域放大或者縮小的倍數(shù);D2、通過矢量運算對矢量圖進行放大或者縮??;D3、將放大或者縮小后的矢量圖重新映射到位圖區(qū)域上,放大或縮小過程完成。
2. 根據(jù)權(quán)利要求1所述的基于矢量圖和位圖的大規(guī)模網(wǎng)絡(luò)拓撲平面可視化方法,其特征在于所述步驟Y6中,重繪位圖的過程為將位圖區(qū)域上的圖形擦除,并根據(jù)移動距離將位圖區(qū)域上的擦除前的圖形平移后重畫在位圖上。
全文摘要
基于矢量圖和位圖的大規(guī)模網(wǎng)絡(luò)拓撲平面可視化方法,涉及到網(wǎng)絡(luò)拓撲平面的可視化技術(shù)。它解決了現(xiàn)有采用矢量圖顯示大規(guī)模網(wǎng)絡(luò)拓撲圖存在的算法復(fù)雜、刷新速度慢的問題。本發(fā)明采用三個圖層的位圖來顯示網(wǎng)絡(luò)拓撲圖,第一圖層是采用空白位圖表示的圖形區(qū)域;在圖形區(qū)域上的第二圖層是帶有坐標(biāo)的位圖區(qū)域;在位圖區(qū)域上的第三圖層是客戶區(qū)域;采用矢量圖形文件保存的節(jié)點的位置和曲線、顏色;并將矢量圖映射到位圖區(qū)域上;在圖形移動的過程,采用位圖移動方法移動客戶區(qū)域,在圖形的縮放過程中,首先對矢量圖進行縮放,然后將縮放后的矢量圖再映射到位圖上。本發(fā)明具有放縮無失真、顯示速度快優(yōu)點,尤其適用于大規(guī)模無向圖的可視化技術(shù)中。
文檔編號H04L12/24GK101729297SQ20091031028
公開日2010年6月9日 申請日期2009年11月24日 優(yōu)先權(quán)日2009年11月24日
發(fā)明者何慧, 張偉哲, 張宏莉, 楊天龍, 楊志, 田志宏 申請人:哈爾濱工業(yè)大學(xué)