基于DirectX的大数据量参数曲线回放方法转让专利

申请号 : CN201911361932.8

文献号 : CN111127588B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王守权夏栋高伟亮王艳军李大龙

申请人 : 中国人民解放军海军航空大学青岛校区

摘要 :

本发明公开了一种基于DirectX的大数据量参数曲线回放方法,所述参数曲线回放方法包括如下步骤:S1.首先,将采集器采集的数据输入计算机,并通过DirectX绘制参数曲线;S2.其次,将投影方式设置为正交投影,设定x坐标设为时间、y坐标设为参数数值,并将绘制图元设置为线段条带;S3.通过压缩矩阵计算和平移矩阵计算,实现从局部坐标系变换到显示区域可变化的世界坐标系;S4.最后,将多个参数曲线在同一面板上以实现参数曲线回放显示。本发明经试验利用DirectX实现参数数据曲线回放,运行流程、曲线显示平滑,可以满足数据分析的要求。

权利要求 :

1.基于DirectX的大数据量参数曲线回放方法,其特征在于,所述参数曲线回放方法包括如下步骤:S1.首先,将采集器采集的数据输入计算机,并通过DirectX绘制参数曲线;

S2.其次,将投影方式设置为正交投影,将x坐标设为时间、y坐标设为参数数值,并将绘制图元设置为线段条带;

S3.通过压缩矩阵计算和平移矩阵计算,实现从局部坐标系变换到显示区域可变化的世界坐标系;

S4.最后,将多个参数曲线在同一面板上以实现参数曲线回放显示;

其中,步骤S3中,所述压缩矩阵计算包括以下步骤:(1)计算获得x轴的压缩因子sx为:

其中,xmin~xmax为局部坐标系中参数采集时间x的取值范围,x’min~x’max为变换到世界坐标系后参数采集时间x的取值范围;

(2)计算获得y轴上的压缩因子sy为:

其中,ymin~ymax为局部坐标系中参数采集时间x的取值范围,y’min~y’max为变换到世界坐标系后参数采集时间x的取值范围;

(3)设z轴上的压缩因子sz为1,同时将x轴的压缩因子sx和y轴上的压缩因子sy输入DirectX中获得压缩矩阵的计算;

其中,步骤S3中,所述平移矩阵计算包括以下步骤:①获取x轴平移量计算:

设用户选择的起始时刻为xmin,终止时刻为xmax,曲线显示区域x轴范围为x’min~x’max,x轴平移量Δx可由下式计算得到,②获取y轴平移量计算:

设某曲线调整y轴位置后y轴坐标显示范围为y’min~y’max,对应参数真实值范围为ymin~ymax,y轴平移量Δy可由下式计算得到,③设z轴平移量Δz为0,同时将x轴平移量和y轴平移量输入DirectX中获得平移矩阵的计算;

当参数的采集频率不同时,对采集起始时间进行对准,设参数的采集频率为f0,采集器的起始时间为t0,参数第n点的x坐标值可由下式得到:x(n)=t0+n/f0    (5)。

2.根据权利要求1所述的基于DirectX的大数据量参数曲线回放方法,其特征在于,步骤S3中,压缩矩阵计算和平移矩阵计算的前后步骤顺序可以调整。

3.根据权利要求1所述的基于DirectX的大数据量参数曲线回放方法,其特征在于,通过将参数曲线点连成线来实现在DirectX中绘制曲线,生成参数曲线点的坐标取值方法为:x坐标为采集参数某一固定数值发生的时刻,y坐标为采集的参数数值,z坐标在znear~zfar内任意取值;然后将参数曲线通过世界变换切换到世界坐标系中进行显示。

说明书 :

基于DirectX的大数据量参数曲线回放方法

技术领域

[0001] 本发明涉及采集数据分析处理方法,属于数据采集和测试技术领域,具体是一种基于DirectX的大数据量参数曲线回放方法。

背景技术

[0002] 数据曲线回放显示直观,是采集数据分析最常用的方式。由于采集器性能的提高,参数记录数据量越来越大。以采集频率为50Hz为例,2小时采集的数据个数将达到7200个。高性能采集器的采集频率甚至可以达到MHz甚至GHz,对应采集数据量也会达到每秒几百万甚至更多。
[0003] 如此巨大的数据量采用Matlab(矩阵工作)或GDI(图像设备接口)等普通绘制软件会出现程序卡滞甚至程序崩溃。DirectX(多媒体编程接口)采用GPU (显示芯片)硬件底层完成图像渲染,不占用CPU资料,画图效率高。

发明内容

[0004] 本发明提供了一种基于DirectX的大数据量参数曲线回放方法,用于解决现有大数据量曲线绘制处理效率较低的问题。
[0005] 为了实现本发明的目的,采用以下技术方案:
[0006] 基于DirectX的大数据量参数曲线回放方法,所述参数曲线回放方法包括如下步骤:
[0007] S1.首先,将采集器采集的数据输入计算机,并通过DirectX绘制参数曲线;
[0008] S2.其次,将投影方式设置为正交投影,设定x坐标设为时间、y坐标设为参数数值,并将绘制图元设置为线段条带;
[0009] S3.通过压缩矩阵计算和平移矩阵计算,实现从局部坐标系变换到显示区域可变化的世界坐标系;
[0010] S4.最后,将多个参数曲线在同一面板上以实现参数曲线回放显示。
[0011] 为了进一步提高本发明的效果,还可以采用以下技术方案:
[0012] 如上所述的基于DirectX的大数据量参数曲线回放方法,步骤S3中,所述压缩矩阵计算包括以下步骤:
[0013] (1)计算获得x轴的压缩因子sx为:
[0014]
[0015] 其中,xmin~xmax为局部坐标系中参数采集时间x的取值范围,x’min~x’max为变换到世界坐标系后参数采集时间x的取值范围为;
[0016] (2)计算获得y轴上的压缩因子sy为:
[0017]
[0018] 其中,ymin~ymax为局部坐标系中参数采集时间x的取值范围,y’min~y’max为变换到世界坐标系后参数采集时间x的取值范围为;
[0019] (3)设z轴上的压缩因子sz为1,同时将x轴的压缩因子sx和y轴上的压缩因子sy输入DirectX中获得压缩矩阵的计算。
[0020] 如上所述的基于DirectX的大数据量参数曲线回放方法,步骤S3中,所述平移矩阵计算包括以下步骤:
[0021] ①获取x轴平移量计算:
[0022] 设用户选择的起始时刻为xmin,终止时刻为xmax,曲线显示区域x轴范围为x’min~x’max),x轴平移量Δx可由下式计算得到,
[0023]
[0024] ②获取y轴平移量计算:
[0025] 设某曲线调整y轴位置后y轴坐标显示范围为y’min~y’max,对应参数真实值范围为ymin~ymax,y轴平移量Δy可由下式计算得到,
[0026]
[0027] ③设z轴平移量Δz为0,同时将x轴平移量和y轴平移量输入DirectX中获得平移矩阵的计算。
[0028] 如上所述的基于DirectX的大数据量参数曲线回放方法,步骤S3中,压缩矩阵计算和平移矩阵计算的前后步骤顺序可以调整。
[0029] 如上所述的基于DirectX的大数据量参数曲线回放方法,通过将参数曲线点连成线来实现在DirectX中绘制曲线,生成参数曲线点的坐标取值方法为:x 坐标为采集参数某一固定数值发生的时刻,y坐标为采集的参数数值,z坐标在 znear~zfar内任意取值;然后将参数曲线通过世界变换切换到世界坐标系中进行显示。
[0030] 如上所述的基于DirectX的大数据量参数曲线回放方法,当参数的采集频率不同时,对采集起始时间进行对准,设参数的采集频率为f0,采集器的起始时间为t0,参数第n点的x坐标值可由下式得到:
[0031] x(n)=t0+n/f0   (5)。
[0032] 本发明的有益效果:
[0033] DirectX采用GPU硬件底层渲染,不占用CPU资料。采用DirectX通过正确的投影设置、坐标缩放/平移变换和渲染图元设置,能够对参数巨量采集数据进行曲线回放。本发明经试验利用DirectX实现参数数据曲线回放,运行流程、曲线显示平滑,可以满足数据分析的要求。
[0034] 根据前述DirectX操作和软件设计需求进行软件开发,每个参数的采集频率为50Hz,采集时间为2小时。根据运行结果,采用DirectX坐标变换渲染可以实现采集数据曲线准确回放,对多个参数的多条曲线进行回放时,程序流畅,显示平滑,渲染效果远好于GDI效果。

附图说明

[0035] 图1是本发明实施例的DirectX坐标变换和光照渲染流程图;
[0036] 图2是本发明正交投影效果示意图;
[0037] 图3是本发明实施例中参数曲线从局部坐标系变换到世界坐标系示意图;
[0038] 图4是本发明实施例中参数曲线回放结果示意图。

具体实施方式

[0039] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
[0040] 如图1-图4所示,本实施例公开的一种基于DirectX的大数据量参数曲线回放方法,所述参数曲线回放方法包括如下步骤:
[0041] S1.首先,将采集器采集的数据输入计算机,并通过DirectX绘制参数曲线;
[0042] S2.其次,将投影方式设置为正交投影,设定x坐标设为时间、y坐标设为参数数值,并将绘制图元设置为线段条带;
[0043] S3.通过压缩矩阵计算和平移矩阵计算,实现从局部坐标系变换到显示区域可变化的世界坐标系;
[0044] S4.最后,将多个参数曲线在同一面板上以实现参数曲线回放显示。
[0045] 具体而言,如图1所示,DirectX中的渲染由两个阶段组成,两个阶段处理均在GPU上实现,不占用CPU资源。第一阶段为坐标变换和光照阶段,在该阶段每个对象的顶点坐标从自由空间转换为基于像素的屏幕空间,光照过程在 DirectX中通常称为顶点变换流水线。在该过程中原始顶点从前端进入,在内部完成若干操作,然后经过转换和光照处理的顶点从另一端出来。DirectX通过设定一组坐标变换矩阵、视口及光线来建立光照流水线;第二阶段为光栅化处理阶段,DirectX将经过光照处理的对象顶点为以点、线、面为基础的图元,应用纹理贴图和物体顶点的颜色属性,根据相关渲染状态设置决定每个像素的最终颜色值,并在屏幕上显示出来。在采集数据参数曲线绘制过程中,图元只涉及到线,并且不用考虑纹理和光照效果。
[0046] 为了简化渲染操作,DirectX光照流程中包含了多个坐标系以及坐标系之间的坐标变换,包括世界坐标系、观察坐标系、投影坐标系和屏幕坐标系。坐标间变换通过相应的变换矩阵由GPU快速完成,不占用CPU资源。光照流程中坐标变换和坐标系主要包括:
[0047] (1)世界变换、局部坐标系和世界坐标系。局部坐标系指对象或物体描述各顶点位置所使用的本地的坐标,也称为本地坐标系。不同的对象可以通过三维空间的平移、旋转和压缩变化,统一到同一个三维坐标系中,这种平移、旋转和压缩的过程称为世界变换,对应的三维坐标系称为世界坐标系。
[0048] (2)取景变换和观察坐标系。三维空间在二维空间(即计算机屏幕)的图形显示的原理类似于摄像的取景过程。以摄像机位置为参考点、观察的方向为坐标轴,建立的坐标系为观察坐标系。对象在观察坐标系中的相对坐标称为观察坐标,顶点从世界坐标到观察坐标的转换称为取景变换。
[0049] (3)投影变换和投影坐标系。物体从世界坐标系转换到观察坐标系后,可将三维物体投影到二维表面上,相当于投影到虚拟摄像机的胶片上,这个过程称为投影变换。以胶片中心为参考点的空间坐标系称为投影坐标系,物体在投影坐标系中的坐标称为投影坐标。
[0050] (4)视区变换和屏幕坐标系。物体在投影坐标系中表示为浮点坐标,通过定义屏幕显示区域(一般为显示窗口大小),将浮点坐标转化为像素坐标的过程称为视区变换,该像素坐标值称为屏幕坐标。
[0051] 如图2所示,利用DirectX绘制参数曲线,本质上是二维作图,这可以通过将三维空间对象正交投影到两维空间来实现,这需要将投影变换设置为正交投影来实现。需要注意,正交投影在z轴上有一个视景范围(znear~zfar),对象z 坐标只有在该范围内才能被投影到二维空间。因此在设置曲线上点的z坐标时,取值不能超出该范围,否则曲线将不能显示。另外,由于曲线绘制不涉及光照效应,为提高渲染效率,应将光照效应关掉。
[0052] 在DirectX中绘制曲线,可通过将数值点连成线来实现,连线的绘制可通过将绘制图元设置为线段条带(D3DPT_LINESTRIP)实现。生成参数曲线点的坐标取值方法为:x坐标为时间,即采集参数某一固定数值发生的时刻;y坐标为采集的参数数值;z坐标可以在(znear~zfar)内任意取值。此时的参数曲线点坐标系为局部坐标系,参数曲线能够在界面某区域正确显示,还需要通过世界变换切换到世界坐标系中。由于不同参数的采集频率不一致,如果参数数据来自不同的采集器,起始时间也会不同。设参数的采集频率为f0,采集器的起始时间为t0。对于参数第n点的x坐标值可由下式得到。
[0053] x(n)=t0+n/f0   (1)
[0054] 在局部坐标系中,x轴为时间,y坐标为某个采集参数在x时刻对应的采集数值,这种显示方式也是数据分析人员需要的。而在DirectX显示坐标系中,x 轴的显示范围为(-1,1),y轴的显示范围也是(-1,1),因此需要通过世界变换将曲线从局部坐标系变换到世界坐标系。由于还需要显示坐标刻度、参数名等信息,并且同一面板需要显示多条曲线,参数曲线显示范围一般不覆盖整个显示面板,因此从局部坐标系到世界坐标系的变换。
[0055] 如图3所示,从局部坐标系到世界坐标系的变换变换,可以通过坐标压缩和坐标平移来实现。在DirectX中可以分别建立坐标压缩变换矩阵和坐标平移变换矩阵,然后将两者相乘得到新矩阵。将新矩阵设置为世界矩阵,用DirectX 绘制线段条带(D3DPT_LINESTRIP)图元就可以得到正确显示的参数曲线。在实际操作过程中,既可以先计算压缩变换矩阵再计算平移变换矩阵,也可以先计算平移变换矩阵再计算压缩变换矩阵,但是需要注意不同顺序求得的矩阵取值会不同。本文采用先计算压缩矩阵的顺序。
[0056] DirectX的矩阵运算库中提供了压缩矩阵的计算函数D3DXMATRIX*WINAPI D3DXMatrixScaling(D3DXMATRIX*pOut,FLOAT sx,FLOAT sy,FLOAT sz)。其中,sx、sy和sz分别为x轴、y轴和z轴上的压缩因子,D3DXMATRIX*pOut 为需要的压缩矩阵x轴、y轴和z轴上的压缩因子。只要计算出压缩因子sx、 sy和sz调用D3DXMatrixScaling()函数就可以得到。因为采用正交投影,z轴上的压缩因子可以不考虑,一般设为sz=1.0,因此只需要计算出x轴和y轴上的压缩因子sx和sy。
[0057] 以图3中参数数据为例,在局部坐标系中x(即参数采集时间)的取值范围为(xmin~xmax),变换到世界坐标系后x的取值范围为(x’min~x’max),那么x 轴压缩因子sx可由下式得到。
[0058]
[0059] 同理,在局部坐标系中y(即参数数值)的取值范围为(ymin~ymax),变换到世界坐标系后y的取值范围为(y’min~y’max),那么y轴压缩因子sy可由下式得到。
[0060]
[0061] 压缩变换确定了参数显示尺度,参数显示位置的确定则需要平移变换来实现。DirectX在矩阵运算库中也提供了压缩矩阵的计算函数D3DXMATRIX*WINAPI
D3DXMatrixTranslation(D3DXMATRIX*pOut,FLOATΔx,FLOATΔy,FLOATΔ z)。其中,Δx、Δy和Δz分别为x轴、y轴和z轴的平移量。由于采用正交投影,z轴平移量可忽略,一般设为Δz=0.0,只需要计算x轴、y轴的平移量Δx和Δy。平移因子的计算比较复杂,x轴平移会造成同一面板中不同参数时间没有对准,y轴平移错误会造成参数数值显示错误。下面分别研究x轴和y轴平移量的计算方法。
[0062] 要计算x轴平移量Δx,首先要知道显示曲线的起始和终止时间。数据分析人员在分析数据时为了观察细节,可能会对参数曲线进行时间尺度上的放大和缩小,即x数据的起止时间是随着用户选择而变化。设用户选择的起始时刻为 xmin,终止时刻为xmax,曲线显示区域x轴范围为(x’min~x’max)。x轴平移量Δ x可由下式计算得到。
[0063]
[0064] y轴平移量Δy的计算方法与Δx计算时间相似。需要注意的是,数据分析人员为了对比不同参数数值,可能在同一个面板上显示多条参数曲线,并且为方便对比分析人员可能会调整曲线的纵向位置(即显示在y轴上的位置)。设某曲线调整y轴位置后y轴坐标显示范围为(y’min~y’max),对应参数真实值范围为(ymin~ymax)。平移量Δy可由下式计算得到。
[0065]
[0066] 根据前述DirectX操作和处理,每个参数的采集频率为50Hz,采集时间为2 小时,运行结果如图4所示。根据运行结果,采用DirectX坐标变换渲染可以实现采集数据曲线准确回放,对多个参数的多条曲线进行回放时,程序流畅,显示平滑,渲染效果远好于GDI效果。
[0067] 本发明未详尽描述的技术内容均为公知技术。