基于矢量图和位图的大规模网络拓扑平面可视化方法转让专利

申请号 : CN200910310286.2

文献号 : CN101729297A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张宏莉何慧张伟哲田志宏杨志杨天龙

申请人 : 哈尔滨工业大学

摘要 :

基于矢量图和位图的大规模网络拓扑平面可视化方法,涉及到网络拓扑平面的可视化技术。它解决了现有采用矢量图显示大规模网络拓扑图存在的算法复杂、刷新速度慢的问题。本发明采用三个图层的位图来显示网络拓扑图,第一图层是采用空白位图表示的图形区域;在图形区域上的第二图层是带有坐标的位图区域;在位图区域上的第三图层是客户区域;采用矢量图形文件保存的节点的位置和曲线、颜色;并将矢量图映射到位图区域上;在图形移动的过程,采用位图移动方法移动客户区域,在图形的缩放过程中,首先对矢量图进行缩放,然后将缩放后的矢量图再映射到位图上。本发明具有放缩无失真、显示速度快优点,尤其适用于大规模无向图的可视化技术中。

权利要求 :

1.基于矢量图和位图的大规模网络拓扑平面可视化方法,其特征在于,它采用三个图层的位图来显示网络拓扑图,第一图层是采用空白位图表示的图形区域;在所述图形区域上的第二图层是带有坐标的位图区域,用于记录图形的局部;在所述位图区域上的第三图层是客户区域,即用户所能够看到的区域;

采用矢量图形文件保存的节点的位置和曲线、颜色;并将矢量图映射到位图区域上;

当客户区域在位图区域内发生移动时,可视化的过程为:Y1、计算客户区域移动的横、纵坐标偏移量;

Y2、计算客户区域的大小;

Y3、确定客户区域移动的目标位置;

Y4、判断客户区域是否与位图区域相交,如果相交,则执行步骤Y5;否则执行步骤Y6;

Y5、移动位图区域的中心到客户区域的中心,然后执行步骤Y6;

Y6、重绘位图;

Y7、将当前位置作为下一次移动的前一个位置,此次移动结束;

当客户区域发生扩大或者缩小时,可视化的过程为:D1、确定客户区域放大或者缩小的倍数;

D2、通过矢量运算对矢量图进行放大或者缩小;

D3、将放大或者缩小后的矢量图重新映射到位图区域上,放大或缩小过程完成。

2.根据权利要求1所述的基于矢量图和位图的大规模网络拓扑平面可视化方法,其特征在于所述步骤Y6中,重绘位图的过程为:将位图区域上的图形擦除,并根据移动距离将位图区域上的擦除前的图形平移后重画在位图上。

说明书 :

技术领域

本文涉及支持位图平移的大规模网络拓扑平面的可视化技术。

背景技术

目前,国际上对网络拓扑可视化已有深入的研究,如Netlayout、Otter等,它们都是在平面上显示网络拓扑。Netlayout是采用物理模型,基于引力和斥力的布局,但是收敛速度慢。Otter采用层次布局,先放置根结点,然后放置非根结点。这两种算法在网络规模较小的情况下可视化效果较好,但对于上万节点的大规模网络而言,更多的需要人工干预,而且可视化效果不佳。
现有的网络拓扑图采用矢量图来显示,对于小规模网络,如校园网等,只有几十个或几百个路由器,还比较实用,但对于大规模网络拓扑图的显示,采用矢量图来显示存在诸多问题,比如在屏幕切换时的空白区域和抖动现象,随着拓扑图规模的增大,空白区域及抖动现象会加剧,甚至会长时间在屏幕上显示白屏,视觉效果很差。但是,另一方面,在显示清晰度方面有他的明显优势。现有可视化技术中常用的矢量图像,也称为面向对象的图像或绘图图像,在数学上定义为一系列由线连接的点。矢量文件中的图形元素称为对象。每个对象都是一个自成一体的实体,它具有颜色、形状、轮廓、大小和屏幕位置等属性。既然每个对象都是一个自成一体的实体,就可以在维持它原有清晰度和弯曲度的同时,多次移动和改变它的属性,而不会影响图例中的其它对象。这些特征使基于矢量的程序特别适用于图例和三维建模,因为它们通常要求能创建和操作单个对象。基于矢量的绘图同分辨率无关。这意味着它们可以按最高分辨率显示到输出设备上。
矢量图的最大优点是它可以进行随意的放大和缩小,它的图像质量不会有损失。同时,矢量图不用大量的单个像素点建立图像,而是用数学方程、数字形式对画面进行描述。由于矢量图的这种特性,所以矢量图占用空间很小,即使复杂的矢量图也不会占多大的空间,而且进行编辑修改也方便。这是矢量图优于位图的地方。但由于矢量图采用的是一种计算的方法,它记录的是生成图形的算法。图形的重要部分是节点,相邻的节点之间用特性曲线连接;曲线由节点本身具有的角度特性都经过计算得出。电脑每次显示矢量图时都要通过重新计算生成,所以矢量图的显示速度没有位图快。对于大规模网络拓扑图,速度较慢将会引入很大延迟。
矢量图的计算是基于图形几何变换原理的,图形变换一般是指对图形的几何信息经过几何变换后产生新的图形,它提供了构造或修改图形的方法。除图形的位置变动外,还可以将图形放大或缩小,甚至对图形作不同方向的拉伸来使其扭曲变形。在二维平面中,任何一个图形都可以认为是点之间的连线构成的,而连线又是由点构成,所以,图形可以看做是点的集合。对于一个图形作几何变换,实际上就是对一系列点进行变换。
在二维平面内,一个点通常用它的两个坐标(x,y)来表示,写成矩阵形式则为:

若[A]、[B]、[M]都是矩阵,且[A][M]=[B],则[M]被称为变换矩阵。变换矩阵为点的变换提供了工具。
设变换矩阵
[M]=ABCD
将点的坐标[x y]与变换矩阵[M]相乘,变换后点的坐标记作[x′  y′],则:

 即:
x=Ax+Cyy=Bx+Dy
 可见,新点的位置取决于变量A、B、C、D的值。
 在对矢量图的运算中,对于平面上的点,有如下齐次变换矩阵:
 [x* y*]=[x y]·T
 其中(x,y)为变换之前的点坐标,(x*,y*)为变换以后的点坐标,T为变换矩阵。在二维空间中,图形变换矩阵可表示为:
T=abpcdqefs
其中a、b、c、d是对图形进行缩放、对称、旋转、错切等变换;e、f是对图形进行平移变换;p、q对图形进行透视变换;s是对图形进行整体伸缩变换。当s<1时,图形被放大;当s>1时,图形缩小;当s=1时,图形大小不变。即变换后的坐标均为原坐标x,y的1/s倍。
图形平移的过程为:将一个点(x,y)沿水平方向移动c单位,平移到一个新位置(x*,y*),数学表达式为:
x*=x+cy*=y+f
如果c是正值,则点向右移动,如果是负值,则向左移动;同理,如果f是正值,则点向上移动,如果f是负值,则向下移动。
对于矢量图显示速度慢的特点,目前解决这个问题主要的办法是在显示一个图形元素前,对这个图形元素进行判断,判断这个图形元素是否出现在屏幕中,如果这个图形元素不在当前的视图屏幕中,就不用对这个图形元素进行绘制,以便节省绘制时间。这种方法虽然可以节省绘制时间,但引入了判断时间,也不能减少重绘次数,因此仍然有一定的局限性,受图形元素个数限制,对于大规模的图形显示,提高的速度是有限的,仍然不能有效解决由于显示速度带来的闪烁问题。由于矢量图采用的是一种计算的方法,电脑每次显示矢量图时都要通过重新计算生成,对于大规模无向图,图形元素多,重新计算将引入很大的延迟,例如,对图形的一次简单拖动,可能需要数十秒甚至更长时间的延迟,出现闪烁现象,给操作带来极大的不便。而位图不需要计算,显示速度要比矢量图快,但位图非常占用资源,在资源有限的情况下,位图能显示图的规模是有限的,而且放缩会失真。

发明内容

为了解决现有采用矢量图显示大规模网络拓扑图存在的算法复杂、刷新速度慢的问题,本发明提供一种基于矢量图和位图的大规模网络拓扑平面可视化方法。
基于矢量图和位图的大规模网络拓扑平面可视化方法,
采用三个图层的位图来显示网络拓扑图,第一图层是采用空白位图表示的图形区域;在所述图形区域上的第二图层是带有坐标的位图区域,用于记录图形的局部;在所述位图区域上的第三图层是客户区域,即用户所能够看到的区域;
采用矢量图形文件保存节点的位置和曲线、颜色;并将矢量图映射到位图区域上;
当客户区域在位图区域内发生移动时,可视化的过程为:
Y1、计算客户区域移动的横、纵坐标偏移量;
Y2、计算客户区域的大小;
Y3、确定客户区域移动的目标位置;
Y4、判断客户区域是否与位图区域相交,如果相交,则执行步骤Y5;否则执行步骤Y6;
Y5、移动位图区域的中心到客户区域的中心,然后执行步骤Y6;
Y6、重绘位图;
Y7、将当前位置作为下一次移动的前一个位置,此次移动结束;
当客户区域发生扩大或者缩小时,可视化的过程为:
D1、确定客户区域放大或者缩小的倍数;
D2、通过矢量运算对矢量图进行放大或者缩小;
D3、将放大或者缩小后的矢量图重新映射到位图区域上,放大或缩小过程完成。
本发明所述的方法将矢量显示和分层显示结合起来,充分发挥了基于矢量图和位图进行可视化方法的各自优点,实现了无向图的矢量化显示,使拓扑图的显示同时具有矢量图的放缩无失真、占用资源少和位图的显示速度快优点。
本发明的方法尤其适用于大规模无向图的可视化技术中。

附图说明

图1是本发明所述的三个图层的位置关系示意图。图2-4是客户区域移动过程的状态示意图,其中图2是当前位图的状态示意图,图3是移动前的状态示意图,其中客户区域的下方有一个圆形的图形,图4是移动后的状态示意图,在移动后,圆形的图形随着客户区域移动。图5是客户区域移动的实现流程示意图。图6是使用本发明的方法处理前,使用位图的显示效果示意图,图7是采用位图放大的方法对图6进行放大处理后的图形,图形中的线条已经呈现出现锯齿状,图形失真;图8是采用本发明的方法对图6进行放大处理后的图形。

具体实施方式

具体实施方式一:本实施方式所述的基于矢量图和位图的大规模网络拓扑平面可视化方法,采用三个图层的位图来显示网络拓扑图,第一图层是采用空白位图表示的图形区域;在所述图形区域上的第二图层是带有坐标的位图区域,用于记录图形的局部;在所述位图区域上的第三图层是客户区域,即用户所能够看到的区域;
采用矢量图形文件保存的节点的位置和曲线、颜色;并将矢量图映射到位图区域上;
当客户区域在位图区域内发生移动时,可视化的过程为:
Y1、计算客户区域移动的横、纵坐标偏移量;
Y2、计算客户区域的大小;
Y3、确定客户区域移动的目标位置;
Y4、判断客户区域是否与位图区域相交,如果相交,则执行步骤Y5;否则执行步骤Y6;
Y5、移动位图区域的中心到客户区域的中心,然后执行步骤Y6;
Y6、重绘位图;
Y7、将当前位置作为下一次移动的前一个位置,此次移动结束;
当客户区域发生扩大或者缩小时,可视化的过程为:
D1、确定客户区域放大或者缩小的倍数;
D2、通过矢量运算对矢量图进行放大或者缩小;
D3、将放大或者缩小后的矢量图重新映射到位图区域上,放大或缩小过程完成。
所述步骤Y6中,重绘位图的过程为:将位图区域上的图形擦除,并根据移动距离将位图区域上的擦除前的图形平移后重画在位图上。
本实施方式中,在图形移动的过程,既图形漫游的过程中,用户通过拖动客户区域来观察图形的各个局部,当客户区域的移动范围超过位图区域时,将所述位图区域的中心移到客户区域的中心位置,然后将位图区域上的图形擦除,并根据移动距离将位图区域上擦除前的图形平移后重画在客户区域上。本实施方式中的图形移动过程,采用位图的显示方法,在重新绘制时不需对每个元素进行判断,同时还大大减少了重绘次数,并且位图信息的更新可以通过直接从内存拷贝图像信息来实现,延迟非常小、移动速度快,有效地避免了现有技术中采用矢量图显示的方法存在的,要根据图像移动的情况不断地重新计算更新矢量图而导致的图像更新延迟、进而导致的图像闪烁的问题。
本实施方式中,采用矢量图形文件保存的节点的位置和曲线、颜色,可以用很小的文件记录规模很大的网络拓扑图信息,节省了拓扑图数据所占用的空间,节省了资源。在客户区域发生扩大或者缩小时,首先通过矢量运算对矢量图进行放大或者缩小,然后再把放大或者缩小后的客户区域内的矢量图映射在客户区域的位图上。
本实施方式中,对用户区域的扩大或缩小时,首先通过矢量运算对矢量图进行放缩,然后再把用户区域的那部分矢量图映射在位图上,而不是直接对位图放缩,从而实现了矢量图放缩不失真的特点。
本实施方式所述的基于矢量图和位图的大规模网络拓扑平面可视化方法,采用的是基于位图的矢量化显示技术,把位图和矢量图的优点结合起来,即有较快的速度,又可以无级放缩,并占用较少的空间。
具体实施方式二:本实施方式是具体实施方式一所述的基于矢量图和位图的大规模网络拓扑平面可视化方法的一个具体实施例:
本实施例中的三个图层的位图来显示拓扑图,第一图层的空白位图大小为10000×10000像素图形区域,第二图层的位图区域的坐标区域为(-32767,-32767)~(32767,32767),参见图1所示。
采用矢量图形文件保存的节点的位置和曲线、颜色;将矢量图映射到位图区域上。
客户区域即为在屏幕上能看到的图形范围,即所述客户区域仅仅记录了全部拓扑图图形的一个局部,当用户通过拖动来观察客户区域,即所述的局部的图形时,不需要重新计算来生成矢量图,这是因为虽然客户区域的的矢量图发生平移而使它的屏幕坐标发生改变,但是,此时用户并不需要直接观察位图区域,而只需观察记录在客户区域的位图上的部分,矢量图的移动就转化为位图的移动,位图随用户对客户区域的拖动位置发生改变,而位图区域与位图区域上的矢量图的相对位置并没有改变,所以矢量图不需要重新计算,实现位图的移动只需把图形数据块从一个位置拷贝到另一个位置。在现有的VC或VB等常用编程语言中都直接提供了图形拷贝函数(BitBit,StrechBit),方便的实现了对位图的移动,并且时间非常快,没有延迟,不会导致图形的闪烁。
当客户区域在位图区域内时,如图1所示情况,采用图形在内存中的拷贝拖动位图实现图形的漫游。
当客户区域与位图区域相交时,即客户区域移动范围超出位图区域的范围,如图2所示情况,客户区域与在位图区域外的图形将无法拖动,此时,将位图区域的中心移到客户区域的中心(假设此时用户在四个方向移动的概率相等),如图3、4所示,然后将位图区域上的图形擦除,并根据移动距离将位图区域上的擦除前的图形平移后重画在位图上。
当对客户区域进行放缩操作时,首先通过矢量运算对位图区域放缩,然后在把客户区域范围内的图形映射在位图上,而不是直接对位图放缩,从而实现了矢量图放缩不失真的特点,如图8所示。
本实施方式中,对矢量图进行放大或者缩小采用组合变换的方法,具体为:
首先,将任意点移向坐标原点,或者将任意线移向与X或Y轴重合的位置;
然后,用矢量图形计算方法中的齐次变换矩阵对移动后的矢量图的坐标进行变换;
最后,将矢量图反向移回任意点或者任意线的回原位。
上述方法是经过平移、某种变换、再平移的多次变换构成,而不仅仅是一种独立的变换,故而称为组合变换。在上述组合变换中,多个变换矩阵之积称为组合变换矩阵。
例如:图形相对于(e,f)点作比例变换,由以下三个矩阵相乘来实现:
[T]=100010-e-f1α000d0001100010ef1
 算法的实现描述:
 函数名称:OnLButtonDown(UINT nFlags,CPoint point)
 功能说明:鼠标左键按下消息响应函数
鼠标左键按下时,记录鼠标当前坐标,设定移动标志mvFlag
输入参数:可选标志nFlags、鼠标当前坐标位置
函数名称:OnMouseMove(UINT nFlags,CPoint point)
功能说明:鼠标移动消息响应函数
鼠标移动时,计算图像左上角坐标,不断调用OnDraw()刷新客户区域
输入参数:可选标志nFlags、鼠标当前坐标位置
本实施方式所述的矢量图的放大或缩小的方法,能够保证图中的点在放大或缩小后的位置保持不变。
使用本实施方式的方法处理前,使用位图的显示效果参见图6所示,当用位图放大后,参见图7所示,图形中线条已经呈现出现锯齿状,图形失真。采用本发明的方法对图7进行处理后的结果参见图8所示,图形的缩放不失真,实现了矢量化的显示,同时,对图形变换,如平移,放缩几乎没有延迟。