一种二维场景海量矢量数据显示方法及设备与流程

文档序号:32111678发布日期:2022-11-09 05:27阅读:122来源:国知局
一种二维场景海量矢量数据显示方法及设备与流程

1.本发明涉及数据处理技术领域,尤其涉及一种二维场景海量矢量数据显示方法及设备。


背景技术:

2.矢量数据具备放大显示不失真的特性,建筑行业的图纸大都以矢量文件的形式保存矢量数据,常见的矢量格式文件有dwg、wmf、svg等。而在工业控制产品中如果要开发带背景显示,同时支持放大、缩小、平移的二维图形化功能时、首选都是以矢量数据作为背景显示。
3.但是很多矢量文件包含的矢量数据都是数万、数十万的量级,即使在当今性能较为领先的inter或amd处理器中完成一次包含这样海量矢量数据的矢量文件解析到绘制都会需要0.5秒甚至多久的运行时间。因此,市场上需要以矢量数据作为二维背景显示,同时还要支持放大、缩小、平移的二维图形化的产品,在导入并显示这种包含海量矢量数据的矢量文件时大都会产生系统无响应的现象,在系统使用过程中进行放大、缩小、平移操作时也会出现系统卡顿现象。例如在消防应急照明和疏散指示系统、火灾自动报警等系统中,主流厂家的图形化显示功能基本都以支持使用建筑物的工程矢量文件为背景为基本功能,但是在将包含海量矢量数据的矢量文件作为背景进行显示以及进行放大、缩小、平移操作时,大都会出现系统卡顿的现象。
4.因此,急需提供一种方法,能够使运行在嵌入式设备中的二维图形化系统流畅显示包含海量矢量数据的矢量文件,支持放大、缩小和平移操作。并且使用嵌入式系统运行具有显示海量矢量数据的二维图形化系统是一个能够有效降低产品成本、提升产品市场竞争力的选择。


技术实现要素:

5.本发明公开了一种二维场景海量矢量数据显示方法及设备,其目的在于能够使运行在嵌入式设备中的二维图形化系统流畅显示包含海量矢量数据的矢量文件,支持放大、缩小和平移操作。
6.为实现上述目的,本发明拟采用以下技术方案:
7.本发明所提供的一种二维场景海量矢量数据显示方法,其特征在于,包括以下步骤:
8.步骤s1:初始化图像绘制函数;
9.步骤s2:建立场景坐标系;
10.步骤s3:建立一个背景图像缓冲对象,并提供绘图函数;
11.步骤s4:获取矢量文件的像素尺寸;
12.步骤s5:设定场景坐标系的缩放系数和与显示设备中心始终对应的显示中心原点坐标;
13.步骤s6:启动一个线程执行有效背景裁剪算法,
14.其特征在于,所述步骤s6包括以下步骤:
15.步骤s61:计算背景图像在当前场景坐标系下的矩形范围;
16.步骤s62:计算显示设备的显示缓冲区场景矩形范围;
17.步骤s63:计算函数得到背景图像场景矩形范围与缓冲区场景矩形范围相交的场景矩形范围,得到的结果就是最终需要用于缓冲显示的有效背景图像场景矩形范围;
18.步骤s64:从完整背景图像中按照有效背景图像场景矩形范围裁剪出背景图像数据,用背景图像数据、有效背景图像场景矩形范围对背景图像缓冲对象进行设置。
19.进一步地,所述一种二维场景海量矢量数据显示方法还包括:
20.步骤s7:执行界面刷新功能;
21.步骤s8:判断用户选择的功能:当用户选择放大功能时,进入步骤s9;当用户选择缩小功能时,进入步骤s10;当用户选择平移功能时,进入步骤s11;
22.步骤s9:放大场景坐标系的缩放系数;
23.步骤s10:缩小场景坐标系的缩放系数;
24.步骤s11:设定新的场景坐标显示中心位置:根据用户平移操作得到的平移向量对场景坐标系的原点坐标进行变换,设定新的场景坐标显示中心位置。
25.进一步地,所述步骤s2建立场景坐标系还包括:计算场景坐标以及场景矩形范围;构造场景坐标系和显示设备显示坐标系进行相互转换的转换函数。
26.进一步地,所述场景坐标以及场景矩形范围具体为:所述场景坐标以及场景矩形范围具体为:具体场景坐标scenepoint坐标为:{float x—场景坐标x轴分量值;float y—场景坐标y轴分量值};具体场景矩形范围scenerect坐标为:{scenepoint left_bottom_pos—矩形左下角的坐标位置;float width—矩形的宽度;float height—矩形的高度}。
27.进一步地,所述场景坐标系和显示设备显示坐标系进行相互转换的转换函数包括:显示设备像素坐标转为场景坐标系坐标的转换函数map point from view port to scene(缩放系数,显示设备像素坐标):场景坐标系坐标x=(显示中心原点坐标.x+map distance from view port to scene(显示设备像素坐标x-显示设备像素坐标宽度/2));场景坐标系坐标y=(显示中心原点坐标.y+map distance from view port to scene(显示设备像素坐标y-显示设备像素坐标高度/2));场景坐标系坐标转为设备坐标系坐标的转换函数map point from scene to view port(缩放系数,场景坐标系坐标):显示设备像素坐标x=显示设备像素坐标宽度/2+map distance from scene to view port(场景坐标系坐标x-场景坐标系显示原点坐标x);显示设备像素坐标y=显示设备像素坐标高度/2+map distance from scene to view port(场景坐标系坐标y-场景坐标系显示原点坐标y)。
28.进一步地,所述步骤s9具体为:放大场景坐标系的缩放系数,其中,对场景坐标系的缩放系数进行放大的公式:缩放系数=缩放系数+0.05。
29.进一步地,所述步骤s10具体为:缩小场景坐标系的缩放系数,其中,对场景坐标系的缩放系数进行缩小的公式:缩放系数=缩放系数-0.05。
30.进一步地,所述步骤s11具体为:根据用户平移操作得到的平移向量以及场景坐标系显示原点位置坐标的公式对场景坐标系的原点坐标进行变换,设定新的场景坐标显示中心位置,其中,计算场景坐标系显示原点位置的公式:场景坐标系显示原点坐标=场景坐标
系显示原点坐标+map point from view port to scene(平移向量)。
31.进一步地,在执行完步骤s9或步骤s10或步骤s11后,都要在继续执行步骤s7,对用户的操作进行及时响应,在二维场景海量矢量数据显示设备上显示背景图像缓冲区已有的背景图像经过相应操作后的图像;然后执行步骤s6,更新背景图像缓冲对象的图像数据、图像所在的场景坐标、图像物理尺寸。
32.本发明还提供了一种二维场景海量矢量数据显示设备,其特征在于,包括:处理器、网络接口、用户接口以及存储器;所述用户接口包括显示屏(display),所述处理器与所述存储器、所述网络接口相连,所述存储器用于存储程序代码,所述处理器用于调用所述存储器中存储的数据处理应用程序。
33.与现有技术相比,本发明的有益技术效果在于:
34.易于编码实现,完全基于基本的坐标系、向量的数学原理和运算规则;使用本发明实现的图形化产品,在使用平移、放大、缩小功能时不产生任何卡顿现象,能够有效提升产品的用户体验,在与同类产品相比具备肉眼可以分辨的显示性能优势;本发明具备平台无关性,在嵌入式、windows、linux、mac平台上都可以实现高性能的二维图形化系统,能够使产品具备多平台协同的特性,例如在windows平台上实现产品的图形化设计系统,在嵌入式设备上实现图形化监控系统,最后通过移动存储设备或网络将系统的图形化数据进行传递,有效降低产品的研发成本;对cpu的处理能力和内存存储容量要求低,在嵌入式设备上基于本发明实现图形化产品,能有效降低产品的制造成本。
附图说明
35.图1为本发明的一种二维场景海量矢量数据显示设备结构示意图;
36.图2为本发明的一种二维场景海量矢量数据显示方法流程图;
37.图3为本发明步骤s6具体步骤流程图;
38.图4为本发明实例建立的笛卡尔场景坐标系;
39.图5为本发明实例放大操作后计算得到的有效背景图像场景矩形范围;
40.图6为本发明实例缩小操作后计算得到的有效背景图像场景矩形范围;
41.图7为本发明实例向左上方平移操作后计算得到的显示缓冲区矩形范围,场景坐标系原点与显示原点的平移向量代表了平移的方向和距离。
42.图中:11-二维场景海量矢量数据显示设备;12-处理器;13-网络接口;14-用户接口;15-存储器;16-通信总线;20-场景坐标系,21-显示设备的屏幕中心;61-完整背景图像输出场景矩形范围;62-显示缓冲区场景矩形范围;63-有效背景图像场景矩形范围。
具体实施方式
43.下面结合附图和实施例对本发明做进一步描述,以帮助本领域内相关技术人员对本发明的策略设计及装置有更加准确、直观、深入的理解。
44.本实例提供了一种二维场景海量矢量数据显示方法,能够使运行在嵌入式设备中的二维图形化系统流畅显示包含海量矢量数据的矢量文件,支持放大、缩小和平移操作。本发明具备平台无关性,在嵌入式、windows、linux、mac平台上都可以实现高性能的二维图形化系统。
45.如图1所述数据处理应用程序实现了如图2所示的海量矢量数据显示方法。其中,图1是本实施例提供的一种二维场景海量矢量数据显示设备结构示意图。如图1所示,所述二维场景海量矢量数据显示设备11可以包括:至少一个处理器12,例如cpu,至少一个网络接口13,用户接口14,存储器15,至少一个通信总线16。其中,通信总线16用于实现这些组件之间的连接通信。其中,用户接口14可以包括显示屏(display),可选用户接口14还可以包括标准的有线接口、无线接口。网络接口13可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。存储器15可以是随机存取存储器(random access memory,ram),也可以是非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。如图1所示,作为一种二维场景海量矢量数据的存储器15中可以包括操作系统、网络通信模块、用户接口模块以及数据处理应用程序。
46.在图1所示的二维场景海量矢量数据显示设备11中,网络接口13可提供网络通讯功能,用户接口14主要用于为用户提供输入的接口;而处理器12可以用于调用存储器15中存储的数据处理应用程序,以实现如图2所对应实施例中对所述二维场景海量矢量数据进行放大、缩小、平移的描述,在此不再赘述。
47.请再参考图2,本实例提供了一种二维场景海量矢量数据显示方法,具体包括以下步骤:
48.步骤s1:初始化图像绘制函数,如果使用图形加速硬件进行绘图,则对图形加速硬件进行初始化,使当前界面线程能够通过图形硬件绘图函数完成显示设备的图像绘制。
49.步骤s2:建立场景坐标系20,计算场景坐标以及场景矩形范围,构造场景坐标系和显示设备显示坐标系进行相互转换的转换函数。
50.场景坐标系包含的属性有:物理单位、显示中心坐标。场景坐标系的单位可以使用毫米、厘米、分米、米、寸、英寸作为场景坐标的单位尺寸。所有需要显示的图形数据都需要通过坐标转换函数从像素尺寸转为场景坐标尺寸,以此确保在不同分辨率的二维场景海量矢量数据显示设备11上获得同样的显示尺寸和位置,请参考图1。其中,显示原点坐标与显示设备的屏幕中心像素坐标对应,例如,如图4所示屏幕中心21即为显示设备的屏幕中心像素坐标,默认的显示原点坐标为(0.0,0.0)。
51.所述计算场景坐标以及场景矩形范围具体为:
52.根据建立的场景坐标系计算场景坐标:场景坐标scenepoint用来表示场景坐标中的一个点或者一个向量,其两个分量都由浮点数组成。具体场景坐标scenepoint坐标为:{float x—场景坐标x轴分量值;float y—场景坐标y轴分量值};
53.根据建立的场景坐标系计算场景矩形范围:场景矩形范围scenerect用来描述场景坐标系中的一个长方形区域,由左下角、右上角两个对角点的场景坐标构建,所有坐标分量值都用浮点数存储。具体场景矩形范围scenerect坐标为:{scenepoint left_bottom_pos—矩形左下角的坐标位置;float width—矩形的宽度;float height—矩形的高度}。
54.上述场景矩形范围scenerect表示了一个场景坐标系中的矩形范围,长度单位与场景坐标系保持一致,除了直接设置上面的分量值外,还需要提供一个构造函数,使能够通过两个对角的坐标位置进行初始化:{float left_bottom_pos_x—矩形左下角的坐标x值;float left_bottom_pos_y—矩形左下角的坐标y值;float right_top_pos_x—矩形右上角的坐标x值;float right_top_pos_y—矩形右上角的坐标y值}。
55.场景矩形范围scenerect还需要提供两个重要计算函数:bool scenerect::surround(scenerect other),用于计算一个场景矩形范围是否完全包含另一个场景矩形范围;scenerect scenerect::intersected(scenerect other),用于计算一个场景矩形范围与另一个场景矩形范围相交的部分,返回值为相交部分的场景矩形范围;
56.所述构造场景坐标系和显示设备显示坐标系进行相互转换的转换函数具体为:
57.根据建立的场景坐标系构造显示设备上的像素距离与场景坐标系的距离转换的转换函数:显示设备上的像素距离转换为场景坐标系的距离转换函数map distance from view port to scene(缩放系数,显示设备像素距离):(显示设备像素距离/dpx)/缩放系数;场景坐标系的距离转换为显示设备上的像素距离转换函数map distance from scene to view port(缩放系数,场景坐标系距离):(场景坐标系距离*缩放系数*dpx);其中,dpx是根据场景坐标系的物理单位和显示设备水平分辨率、垂直分辨率计算得到的对角线解析度参数,其计算与物理单位相关,基于毫米的公式为:dpx=sqrt(显示设备水平方向像素数的平方+显示设备垂直方向像素数的平方)/sqrt(显示设备水平方向毫米长度的平方+显示设备垂直方向毫米长度的平方)。
58.根据建立的场景坐标系构造显示设备像素坐标与场景坐标系坐标转换的转换函数:显示设备像素坐标转为场景坐标系坐标的转换函数map point from view port to scene(缩放系数,显示设备像素坐标):场景坐标系坐标x=(显示中心原点坐标.x+map distance from view port to scene(显示设备像素坐标x-显示设备像素坐标宽度/2));场景坐标系坐标y=(显示中心原点坐标.y+map distance from view port to scene(显示设备像素坐标y-显示设备像素坐标高度/2));场景坐标系坐标转为设备坐标系坐标的转换函数map point from scene to view port(缩放系数,场景坐标系坐标):显示设备像素坐标x=显示设备像素坐标宽度/2+map distance from scene to view port(场景坐标系坐标x-场景坐标系显示原点坐标x);显示设备像素坐标y=显示设备像素坐标高度/2+map distance from scene to view port(场景坐标系坐标y-场景坐标系显示原点坐标y)。
59.默认显示原点坐标的计算公式为map point from view port to scene((显示设备像素宽度/2,显示设备像素高度/2))。根据上述公式定义,可以得知默认显示原点坐标为(0.0,0.0)。
60.步骤s3:建立一个背景图像缓冲对象,并提供绘图函数。
61.建立一个背景图像缓冲对象,其保存了当前显示用的背景图像,图像所在的场景坐标,图像的物理尺寸大小。同时提供绘图函数,该绘图函数能够根据当前背景图像所在的场景坐标位置、物理尺寸、场景坐标系的缩放系数在显示设备上进行图像绘制。
62.步骤s4:获取矢量文件的像素尺寸(像素宽、像素高):通过场景坐标系提供的坐标转换函数计算出矢量文件在场景坐标系中的尺寸(物理尺寸单位),用所述矢量文件在场景坐标系中的尺寸对背景图像缓冲对象进行初始化。
63.步骤s5:设定场景坐标系的缩放系数和与显示设备中心始终对应的显示中心原点坐标:可以从配置参数中加载,也可以使用默认设置。默认设置缩放系数=1.0表示按照原始尺寸显示,缩放系数》1.0代表放大显示,缩放系数《1.0代表缩小显示;默认显示中心原点坐标为(0.0,0.0)。
64.步骤s6:启动一个线程执行有效背景裁剪算法;
65.步骤s7:执行界面刷新功能:按显示的先后顺序绘制图形界面中的内容,背景缓冲对象作为第一个绘制项,执行背景图像缓冲对象的绘图函数,用其当前的背景图像数据和有效背景图像场景矩形范围完成背景图像的绘制,显示设备上能看到的背景图像区域为:有效背景图像场景矩形范围.surround(显示设备场景矩形范围的)。
66.步骤s8:判断用户选择的功能:当用户选择放大功能时,进入步骤s9;当用户选择缩小功能时,进入步骤s10;当用户选择平移功能时,进入步骤s11;
67.步骤s9:放大场景坐标系的缩放系数。其中,对场景坐标系的缩放系数进行放大的公式:缩放系数=缩放系数+0.05。
68.步骤s10:缩小场景坐标系的缩放系数。缩小场景坐标系的缩放系数。其中,对场景坐标系的缩放系数进行缩小的公式:缩放系数=缩放系数-0.05。
69.步骤s11:设定新的场景坐标显示中心位置:根据用户平移操作得到的平移向量对场景坐标系的原点坐标进行变换,设定新的场景坐标显示中心位置。其中,计算场景坐标系显示原点位置的公式:场景坐标系显示原点坐标=场景坐标系显示原点坐标+map point from view port to scene(平移向量)。
70.进一步的,所述步骤s6具体为:启动一个线程执行有效背景裁剪算法,生成适合当前显示设备尺寸的最小背景图像数据,计算完成后更新背景图像缓冲对象的图像数据、图像所在的场景坐标、图像物理尺寸;如图3所示,上述有效背景裁剪算法具体包括以下步骤:
71.步骤s61:计算背景图像在当前场景坐标系下的矩形范围:完整背景图像输出像素尺寸=矢量文件原始像素尺寸*缩放系数;完整背景图像输出场景坐标宽度=map distance from view port to scene(场景坐标系缩放系数,完整背景图像输出像素尺寸宽度);完整背景图像输出场景坐标高度=map distance from view port to scene(场景坐标系缩放系数,完整背景图像输出像素尺寸高度)。
72.进一步地,完整背景图像输出场景矩形范围=(0.0-背景图像输出场景坐标宽度/2.0,0.0-背景图像输出场景坐标高度/2.0,坐标背景图像输出场景坐标宽度,背景图像输出场景坐标高度),其中0.0-背景图像输出场景坐标宽度/2.0表示左下角x坐标,0.0-背景图像输出场景坐标高度/2.0表示下角y坐标,背景图像输出场景坐标宽度表示右上角x坐标,背景图像输出场景坐标高度表示右上角y坐标;
73.步骤s62:计算显示设备的显示缓冲区场景矩形范围:用户在进行放大操作、缩小操作、平移操作时,需要快速显示出原本不再显示区域内的背景图像,因此按照显示设备像素尺寸的2倍建立显示缓冲区场景矩形范围。显示缓冲区场景矩形范围坐标宽度=map distance from view port to scene(场景坐标系缩放系数,显示设备像素宽度*2);显示缓冲区场景矩形范围坐标高度=map distance from view port to scene(场景坐标系缩放系数,显示设备像素高度*2)。
74.进一步地,显示缓冲区场景矩形范围=(显示中心原点坐标.x-显示缓冲区场景坐标宽度/2.0,显示中心原点坐标.y-显示缓冲区场景坐标高度/2.0,显示缓冲区场景坐标宽度,显示缓冲区场景坐标高度)其中,显示中心原点坐标.x-显示缓冲区场景坐标宽度/2.0表示左下角x坐标,显示中心原点坐标.y-显示缓冲区场景坐标高度/2.0表示左下角y坐标,显示缓冲区场景坐标宽度表示右上角x坐标,显示缓冲区场景坐标高度表示右上角y坐标;
75.步骤s63:计算函数得到背景图像场景矩形范围与缓冲区场景矩形范围相交的场
景矩形范围,得到的结果就是最终需要用于缓冲显示的有效背景图像场景矩形范围。
76.进一步地,如果显示缓冲区场景矩形范围.surround(完整背景图像输出场景矩形范围)返回为真,有效背景图像场景矩形范围=完整背景图像输出场景矩形范围;如果完整背景图像输出场景矩形范围.surround(显示缓冲区场景矩形范围)返回为真,有效背景图像场景矩形范围=显示缓冲区场景矩形范围;否则有效背景图像场景矩形范围=完整背景图像输出场景矩形范围.intersected(显示缓冲区场景矩形范围);
77.步骤s64:从完整背景图像中按照有效背景图像场景矩形范围裁剪出背景图像数据,用背景图像数据、有效背景图像场景矩形范围对背景图像缓冲对象进行设置。
78.通过上述四个过程精确计算有效背景图像场景矩形范围,就能够在代码中只申请满足显示需求的内存空间来存放当前需要进行显示的背景图像区域,尤其是在需要放大显示的场景;在线程中执行有效背景裁剪算法,能够不阻塞当前系统中的消息响应,给用户使用流畅的感官体验。
79.进一步需要说明:
80.当用户进入步骤s9,使用步骤s9计算出放大系数,执行步骤s7,对用户的操作进行及时响应,在显示设备上显示背景图像缓冲区已有的背景图像经过放大后的图像;执行步骤s61,计算背景图像在当前场景坐标系下的矩形范围61;执行步骤s62,计算显示设备的显示缓冲区场景矩形范围62;然后执行步骤s63,计算函数得到背景图像场景矩形范围与缓冲区场景矩形范围相交的场景矩形范围,得到的结果就是最终需要用于缓冲显示的有效背景图像场景矩形范围63,放大操作后计算得到的有效背景图像场景矩形范围如图5所示。最后执行步骤s64,从完整背景图像中按照有效背景图像场景矩形范围裁剪出背景图像数据,用背景图像数据、有效背景图像场景矩形范围对背景图像缓冲对象进行设置。
81.当用户进入步骤s10,使用步骤s10计算出缩小系数,执行步骤s7,对用户的操作进行及时响应,在显示设备上显示背景图像缓冲区已有的背景图像经过缩小后的图像;执行步骤s61,计算背景图像在当前场景坐标系下的矩形范围61;执行步骤s62,计算显示设备的显示缓冲区场景矩形范围62;然后执行步骤s63,计算函数得到背景图像场景矩形范围与缓冲区场景矩形范围相交的场景矩形范围,得到的结果就是最终需要用于缓冲显示的有效背景图像场景矩形范围63,放大操作后计算得到的有效背景图像场景矩形范围如图6所示。最后执行步骤s64,从完整背景图像中按照有效背景图像场景矩形范围裁剪出背景图像数据,用背景图像数据、有效背景图像场景矩形范围对背景图像缓冲对象进行设置。
82.当用户进入步骤s11,使用步骤s11设定新的场景坐标显示中心位置,执行步骤s7,对用户的操作进行及时响应,在显示设备上显示背景图像缓冲区已有的背景图像;执行步骤s61,计算背景图像在当前场景坐标系下的矩形范围61;执行步骤s62,计算显示设备的显示缓冲区场景矩形范围62;然后执行步骤s63,计算函数得到背景图像场景矩形范围与缓冲区场景矩形范围相交的场景矩形范围,得到的结果就是最终需要用于缓冲显示的有效背景图像场景矩形范围63,平移操作后计算得到的有效背景图像场景矩形范围如图7所示。最后执行步骤s64,从完整背景图像中按照有效背景图像场景矩形范围裁剪出背景图像数据,用背景图像数据、有效背景图像场景矩形范围对背景图像缓冲对象进行设置。
83.综上所述,与现有技术相比,本发明的有益技术效果在于:
84.易于编码实现,完全基于基本的坐标系、向量的数学原理和运算规则;使用本发明
实现的图形化产品,在使用平移、放大、缩小功能时不产生任何卡顿现象,能够有效提升产品的用户体验,在与同类产品相比具备肉眼可以分辨的显示性能优势;本发明具备平台无关性,在嵌入式、windows、linux、mac平台上都可以实现高性能的二维图形化系统,能够使产品具备多平台协同的特性,例如在windows平台上实现产品的图形化设计系统,在嵌入式设备上实现图形化监控系统,最后通过移动存储设备或网络将系统的图形化数据进行传递,有效降低产品的研发成本;对cpu的处理能力和内存存储容量要求低,在嵌入式设备上基于本发明实现图形化产品,能有效降低产品的制造成本。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1