一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种动态模拟天气的方法、地图展示的方法及相关装置与流程

2022-09-03 05:20:37 来源:中国专利 TAG:


1.本发明涉及天气展示技术领域,特别涉及一种动态模拟天气的方法、地图展示的方法及相关装置。


背景技术:

2.随着地理信息技术的发展,如车载导航设备、手机导航软件等,其使用范围和使用人群也越来越广泛,除了为使用者提供自身或自车定位,行车、步行、骑行等导航路线计算、语音引导、提供行驶速度、实时交通信息等等常规功能之外,导航软件也因为其适用的场景越来越多,使得其融合其他信息需求也越来越多。
3.而天气就是影响交通情况的一个重要的因素之一,通过导航软件来展示实时天气的状况,模拟真实情况下的天气,不仅能提升软件的显示效果,更重要的是,通过天气情况的实时展示,也能提醒导航使用者注意较恶劣天气下的交通安全。因此,该领域成为了当前导航领域的研发热点之一。


技术实现要素:

4.鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种动态模拟天气的方法、地图展示的方法及相关装置。
5.第一方面,本发明实施例提供一种动态模拟天气的方法,包括:
6.获取实时天气信息;
7.根据所述实时天气信息,确定每一帧中各天气粒子的数量、大小和移动速度;
8.根据所述移动速度,确定每一帧中对应数量的各天气粒子的位置坐标;
9.根据每一帧中所述各天气粒子的数量、大小和位置坐标,逐帧渲染出各天气粒子并进行展示。
10.在一个实施例中,根据所述实时天气信息,确定每一帧中各天气粒子的数量和大小,包括:
11.根据所述实时天气信息,确定用于模拟天气的天气粒子的数量和大小范围;
12.在所述天气粒子的大小范围中,分别确定每一帧中各天气粒子的大小。
13.在一个实施例中,根据实时天气信息,确定所述天气粒子的数量和大小范围,具体包括:
14.根据实时天气信息中天气粒子当前所属的气象级别,确定出天气粒子的数量和形状大小范围;
15.所述天气粒子当前所属的气象级别越高,则天气粒子的数量越多,所述大小范围的上下限越大。
16.在一个实施例中,在所述天气粒子的大小范围中,分别确定每一帧中各天气粒子的大小,包括:
17.在所述天气粒子形状大小范围内选取随机值,作为每个天气粒子的大小。
18.在一个实施例中,根据所述实时天气信息,确定每一帧中各天气粒子的移动速度,包括:
19.根据实时天气信息中当前风力的等级,确定所述天气粒子的水平移动速度;
20.根据实时天气信息中所述天气粒子当前所属的气象级别,确定天气粒子的垂直移动速度。
21.在一个实施例中,根据实时天气信息中风力的等级,确定所述天气粒子的水平移动速度,包括:
22.根据预设的不同风力等级对应的水平移动速度范围,以及实时天气信息中当前风力的等级,从对应的水平移动速度范围内随机选取水平移动速度值,作为各天气粒子的水平移动速度。
23.在一个实施例中,根据实时天气信息中所述天气粒子所属的气象级别,确定天气粒子的垂直移动速度,包括:
24.根据预设的天气粒子所属的各气象级别对应的垂直移动速度范围,以及实时天气信息中所述天气粒子当前所属的气象级别,从所述对应的垂直移动速度范围内随机选取垂直移动速度值,作为各天气粒子的垂直移动速度。
25.在一个实施例中,确定每一帧中对应数量的各天气粒子的位置坐标,包括:
26.根据每个天气粒子的大小,在预设的坐标区域内确定每个天气粒子用以描绘形状的起点坐标和终点坐标的初始坐标值;所述预设的坐标区域大于等于展示屏幕所在坐标范围;
27.针对每个天气粒子,根据所述天气粒子的所述起点坐标和终点坐标的初始值,水平运动方向和水平移动速度,以及垂直移动速度,逐帧对各天气粒子的起点坐标和终点坐标进行计算,确定出各天气粒子在每一帧中的位置坐标。
28.在一个实施例中,确定每一帧中对应数量的各天气粒子的位置坐标,包括:
29.在预设的坐标区域内确定每个天气粒子上预设顶点的初始坐标值;所述预设的坐标区域大于等于展示屏幕所在坐标范围;
30.针对每个天气粒子,根据所述顶点的初始坐标值,横向运动方向和水平移动速度,以及垂直移动速度,逐帧对各天气粒子的所述顶点的坐标值进行计算,确定出每个天气粒子在每一帧中的位置坐标。
31.在一个实施例中,确定每一帧中对应数量的各天气粒子的位置坐标,还包括:
32.确定每个天气粒子在与屏幕垂直方向上的纵深坐标。
33.在一个实施例中,确定每个天气粒子在与屏幕垂直方向上的纵深坐标,包括:
34.按照每个天气粒子的大小,从预设的纵深坐标范围中选择对应的纵深坐标;所述天气粒子的大小越大,则所述纵深坐标值越大,所述纵深坐标值越大则表征越接近屏幕表面。
35.在一个实施例中,确定每一帧中对应数量的各天气粒子的位置坐标,还包括:
36.判断所述天气粒子是否绕自身中心点进行旋转,若判断为是,则按照预设的旋转变换矩阵算法,计算每一帧中各天气粒子经旋转后的纹理坐标。
37.在一个实施例中,根据每一帧中对应数量的各天气粒子的大小和位置坐标,逐帧模拟各天气粒子,包括:
38.将每一帧中天气粒子的大小、位置坐标和颜色信息作为所述天气粒子的属性信息并缓存;
39.读取每一帧中天气粒子的属性信息,并逐帧渲染出各天气粒子,以模拟实时天气。
40.在一个实施例中,将每一帧中天气粒子的大小、位置坐标和颜色数据作为所述天气粒子的属性信息并缓存,读取每一帧中天气粒子的属性信息,并逐帧渲染出各天气粒子,包括:
41.通过顶点缓冲对象vbo,将所述属性信息缓存于显卡的预设缓存区;
42.从所述显卡的预设缓存区中读取所述属性信息,以逐帧渲染出各天气粒子。
43.第二方面,本发明实施例提供一种地图的展示方法,包括:
44.获取自车所在位置的实时天气信息;
45.根据所述天气信息,逐帧渲染出用于模拟天气的各天气粒子;
46.将渲染出的所述用于模拟天气的各天气粒子与地图叠加进行展示;
47.所述根据所述天气信息,逐帧渲染出用于模拟天气的各天气粒子的步骤是通过使用如前述的动态模拟天气的方法实现的。
48.第三方面,本发明实施例提供一种动态模拟天气的装置,包括:
49.获取模块,用于获取实时天气信息;
50.确定模块,用于根据所述实时天气信息,确定每一帧中各天气粒子的数量、大小和移动速度;以及根据所述移动速度,确定每一帧中对应数量的各天气粒子的位置坐标;
51.渲染模块,用于根据每一帧中所述各天气粒子的数量、大小和位置坐标,逐帧渲染出各天气粒子并进行展示。
52.第四方面,本发明实施例提供一种地图的展示装置,包括:
53.获取模块,用于获取自车所在位置的实时天气信息;
54.渲染模块,用于根据所述天气信息,逐帧渲染出用于模拟天气的各天气粒子;
55.展示模块,用于将渲染出的所述用于模拟天气的各天气粒子与地图叠加进行展示。
56.第五方面,本发明实施例提供一种导航设备,其特征在于,包括:存储器、处理器及存储于存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如前述的动态模拟天气的方法或实现如前述的地图的展示方法。
57.第六方面,本发明实施例提供一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如前述的动态模拟天气的方法或实现如前述的地图的展示方法。
58.第七方面,本发明实施例提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如前述的动态模拟天气的方法或实现如前述的地图的展示方法。
59.本发明实施例提供的上述技术方案的有益效果至少包括:
60.本发明实施例提供的动态模拟天气的方法,根据实时天气信息,确定出每一帧中天气粒子的数量、大小和移动速度,并根据移动速度,确定每帧中各天气粒子的位置坐标,根据天气粒子的逐帧变化的位置坐标,逐帧渲染出天气粒子,以模拟真实的天气情况,更加直观地展示了实时天气状态,方便用户了解自身所在区域的实时天气情况。
61.本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
62.下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
63.附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
64.图1为本发明实施例中动态模拟天气的方法的流程图;
65.图2为本发明实施例中雨滴的示意图;
66.图3为本发明实施例中雪花的示意图;
67.图4为本发明实施例中天气粒子所在坐标的示意图;
68.图5为本发明实施例中地图的展示方法的流程图;
69.图6为本发明实施例中装置的动态模拟天气的装置结构框图;
70.图7为本发明实施例中地图的展示装置的结构框图。
具体实施方式
71.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
72.为了更好地在导航应用中模拟真实天气的情况,为用户提供及时准确的天气信息,本发明实施例提供了一种动态模拟天气的方法,参照图1所示,该方法包括下述步骤:
73.s11、获取实时天气信息;
74.s12、根据实时天气信息,确定每一帧中各天气粒子的数量、大小和移动速度;
75.s13、根据天气粒子的移动速度,确定每一帧中对应数量的各天气粒子的位置坐标;
76.s14、根据每一帧中各天气粒子的数量、大小和位置坐标,逐帧渲染出各天气粒子并进行展示。
77.本发明实施例提供的动态模拟天气的方法,根据实时天气信息,确定出每一帧中天气粒子的数量、大小和移动速度,并根据移动速度,确定每帧中各天气粒子的位置坐标,根据天气粒子的逐帧变化的位置坐标,逐帧渲染出天气粒子,以模拟真实的天气情况,更加直观地展示了实时天气状态,方便用户了解自身所在区域的实时天气情况。
78.在本发明实施例中,采用粒子系统设计的思路,将表征天气的最小单元称呼为天气粒子,天气粒子在具体的实施例中可与真实天气相对应,比如与雨、雪、冰雹、等天气对应的雨滴、雪花、冰雹粒等等,本发明在具体实施时,可根据具体的天气情况来定义天气粒子,而并不限于上述列举的几种。
79.实时天气信息包括但不限于:气象的类型、气象的级别,风力等等。
80.气象的类型包括例如雨、雪,气象的级别包括例如雨的等级(阵雨、小雨、大雨、暴
雨等)、雪的等级(小雪、中雪、大雪),风力(通过风的等级表示,例如0~n级风,或者其他方式划分的风力等级)。
81.进一步地,上述步骤s12中,通过下述方式确定每一帧中各天气粒子的数量和大小:
82.根据实时天气信息,确定用于模拟天气的天气粒子的数量和大小范围;
83.在天气粒子的大小范围中,分别确定每一帧中各天气粒子的大小。
84.首先要确定天气粒子的数量和大小范围,然后在大小范围内选择天气粒子的具体大小的数值。
85.在本发明实施例中,可根据实时天气信息中天气粒子当前所属的气象级别,确定出天气粒子的数量和大小范围;
86.例如,天气粒子当前所属的气象级别越高,则天气粒子的数量越多,大小范围的上下限相对越大。
87.比如雨的等级越高,每个雨滴的大小也就越大,如果用雨滴的长度来代表形状大小,那么雨的等级越高,则雨滴长度的范围总体来说更大,比如较低级别的雨滴的长度范围为[2,4](单位cm),较高级别的雨滴的长度的范围为[4,6](单位cm)。
[0088]
具体来说,在确定了天气粒子的数量之后,可以在长度范围内选择每个天气粒子的大小的实际数值。为了更好地模拟真实的天气情况,本发明实施例中,可以在预设的大小范围内,随机地选择每个天气粒子的大小的值。
[0089]
例如利用随机函数,比如srand函数和rand函数的结合的方式,在确定的大小范围(比如长度范围)内选取每个雨滴对应的大小值(长度值)。
[0090]
在实际天气情况中,每个天气粒子在垂直下落的同时,还可以因为风力的作用,产生横向偏移,其垂直下落的速度,可能跟天气粒子本身的重量、大小有关,因此,为了更好地模拟真实天气的情况,还可以通过下述方式确定每个天气粒子的移动速度:
[0091]
根据实时天气信息中当前风力的等级,确定天气粒子的水平移动速度;
[0092]
根据实时天气信息中天气粒子当前所属的气象级别,确定天气粒子的垂直移动速度(或者称为下落速度)。
[0093]
具体来说,可根据预设的不同风力等级对应的水平移动速度范围,以及实时天气信息中当前风力的等级,从对应的水平移动速度范围内随机选取水平移动速度值,作为各天气粒子的水平移动速度。
[0094]
真实天气情况中,考虑到有空气阻力因素、天气粒子质量不同、大小不同,下落速度会有差异,在同一气象级别下,不同天气粒子的大小、下落速度也具有一定的随机性。总体来说,级别越大的天气粒子(雨滴或雪花),下落速度越快,从天气粒子的角度来说,气象级别越高,则天气粒子在屏幕所在的坐标范围内,其垂直方向移动的速度越快,基于此,可根据预设的天气粒子所属的各气象级别对应的垂直移动速度范围,以及实时天气信息中天气粒子当前所属的气象级别,从对应的垂直移动速度范围内随机选取垂直移动速度值,作为各天气粒子的垂直移动速度。
[0095]
以雨滴这种天气粒子来说,可以预设不同级别下雨滴的垂直移动速度范围,原则为雨的气象等级越高,则垂直移动速度范围的上下限越大。
[0096]
在对应级别的垂直移动速度范围内,利用随机函数,比如srand函数和rand函数的
结合的方式,在确定的垂直移动速度范围内随机地选取每个雨滴对应的垂直移动速度值,以模拟真实雨滴下落的情形。
[0097]
上述步骤s13中,可根据前述天气粒子的垂直移动速度和水平移动速度,计算每一帧中对应数量的各天气粒子的位置坐标,天气粒子的位置坐标的计算方式可能因为天气粒子形状的表达方式不同而存在差异。
[0098]
比如雨滴这种天气粒子,可以用图2所示的直线线段表示,其位置坐标需要由该线段的两端点来确定。
[0099]
比如雪花这种天气粒子,可以用图3所示的类似雪花图案的规则图形来表示,则其可以通过其上面的一个顶点(比如形状的中心点)来表示每个雪花的位置。
[0100]
对于需要两端点的情形来说,可根据每个天气粒子的大小,在预设的坐标区域内确定每个天气粒子用以描绘形状的起点坐标和终点坐标的初始坐标值;预设的坐标区域大于等于展示屏幕所在坐标范围;
[0101]
针对每个天气粒子,根据天气粒子的起点坐标和终点坐标的初始值,水平运动方向和水平移动速度,以及垂直移动速度,逐帧对各天气粒子的起点坐标和终点坐标进行计算,确定出各天气粒子在每一帧中的位置坐标。
[0102]
因为天气粒子的位置,会随着时间的推移(逐帧展示)在坐标范围内发生垂直方向移动和水平方向移动,如果天气粒子的起点坐标位于屏幕所在的坐标范围内,则逐帧展示时,随着天气粒子的下落和/或横移,屏幕的上方、左侧、右侧会逐渐出现空白,为了更好地与真实天气情况贴近,则较佳地,天气粒子所在的坐标范围大于屏幕本身的坐标范围,这样,即使随着天气粒子的移动,仍然可以将天气粒子满屏地展示于屏幕范围之中。
[0103]
例如图4所示,假设屏幕中心点是屏幕所在坐标的原点,坐标值为(0,0),屏幕的右上点是( 1, 1),右下角是( 1,-1),左下角是(-1,-1),左上角是(-1, 1),雨滴是从屏幕往下落,且随机出现在全屏幕内,每个雨滴包含两个端点的坐标分别为起点坐标(startposition_x,startposition_y),以及终点坐标(endposition_x,endposition_y)。
[0104]
startposition_x可在[-1, 1]内抽取随机值,也可更大范围一些,如图4所示,可在[-2, 2]的范围内抽取随机值,startposition_y的位置在屏幕外,所以可设定startposition_y是在[ 1, 3]的范围内抽取随机值。endposition_x与endposition_y的初始值类似的处理方式(同时满足长度要求),在更新过程中,起点坐标和终点坐标会通过计算进行更新。
[0105]
为了显示出天气粒子近大远小的视觉效果,在本发明实施例中,还可以为天气粒子在垂直于屏幕的方向上设置纵深坐标。
[0106]
纵深坐标也可以预先设置范围,按照每个天气粒子的大小,从预设的纵深坐标范围中选择对应的纵深坐标;天气粒子的大小越大,则纵深坐标值越大,纵深坐标值越大则表征越接近屏幕表面。
[0107]
为了增强最终显示的效果,在本发明实施例中,还可以为某些天气粒子赋予动态旋转的效果,具体实施时,可以在其属性中,添加旋转的属性,这样,根据其属性值,就可以为其展示旋转的效果。如果其属性中未包含预设的旋转的属性,则该天气粒子不展示旋转的效果。
[0108]
具体实施时,需要读取天气粒子的属性值,判断所述天气粒子是否绕自身中心点
进行旋转,若判断为是,则按照预设的旋转变换矩阵算法,计算每一帧中各天气粒子经旋转后的纹理坐标。
[0109]
比如根据预设的不同风力等级对应的水平移动速度范围,以及实时天气信息中当前风力的等级,从对应的水平移动速度范围内随机选取水平移动速度值,作为各天气粒子的水平移动速度。
[0110]
在一个实施例中,上述步骤s14中,根据每一帧中各天气粒子的数量、大小和位置坐标,逐帧渲染出各天气粒子并进行展示,具体可通过下述方式实现:
[0111]
将每一帧中天气粒子的大小、位置坐标和颜色信息作为天气粒子的属性信息并缓存;
[0112]
读取每一帧中天气粒子的属性信息,并逐帧渲染出各天气粒子,以模拟实时天气。
[0113]
在逐帧模拟天气粒子动态效果的过程中,由于要描画的点的数量比较庞大,选择顶点缓冲对象(vertex buffer objects,vbo)将顶点数据存储缓存在显卡的一块缓存区,在渲染时,可以直接从vbo中取出顶点的各类属性数据,不需要从cpu重复向gpu传输数据,处理效率更高,可提高描画性能问题。
[0114]
vbo是指在图形处理器(graphics processing unit,gpu)存储在gpu存储空间中开辟出的一块内存缓存区,用于存储顶点的各类属性信息,如顶点坐标,顶点颜色数据等。在渲染时,可以直接从vbo中取出顶点的各类属性数据,由于vbo在显存而不是在内存中,不需要从cpu传输数据,处理效率更高。
[0115]
为了更好地说明本发明实施例的动态模拟天气的方法,下面以两个具体的实例,雨和雪的实际例子来说明:
[0116]
实施例一:
[0117]
实施例一是针对雨的天气情况。在实际的自然天气情况下,雨的强度不同(小雨,中雨,大雨等),风力等级不同,均会反映出不同程度的天气状况,为了使最终的动画效果更趋于实际的下雨场景,模拟自然界中雨滴的大小、横向随风产生的偏移、下落速度均不同的情况,本发明实施例需要按照不同雨的强度等级进行处理;
[0118]
在功能实现时,要定义一些必要的数据,将实际天气情况中雨的等级及风力进行再次分级:
[0119]
雨的等级分为3级(一级:阵雨~小雨,二级:小雨~大雨,三级:大雨~暴雨);
[0120]
风的等级分为4级(一级:0~3级风,二级:4~6级风,三级:7~9级风,四级:》=10级风);
[0121]
屏幕中的每个雨滴,都包含如下几个属性:
[0122]
雨滴的大小(下落过程中的每个雨滴形状长度)用length表示;
[0123]
横向偏移速度(每帧运动的横向偏移距离)用velocity_x表示;
[0124]
下落速度(每帧运动的纵向偏移距离)用velocity_y表示;
[0125]
本实施例一用的是画线段的方式体现雨滴下落效果,所以会用到两个点坐标表示整个雨滴(两点构成线段),即起点坐标(startposition_x,startposition_y)与终点坐标(endposition_x,endposition_y)。
[0126]
具体实现步骤如下:
[0127]

确定雨滴数量;
[0128]
根据从云端获取到的实时天气信息中雨的等级为中雨,根据预设的规则,确定屏幕内雨滴数量,每个等级雨滴数量不同,等级相对越高的,数量也就相对越多,反之越少。
[0129]

确定雨滴的大小;
[0130]
同样,根据确定后的雨的等级,设置不同雨滴的大小,等级相对越高,长度相对越大,反之越小,但为了模拟自然界现象,使展示效果更趋于真实,较佳地,每个雨滴的长度不一样大,就需在设定的区间范围内[m,n]抽取随机值,m与n是雨滴的长度范围的下限值和上限值,等级相对越高,m,n的值相对越大,比如一级:[2,4],二级:[4,6];利用srand函数和rand函数的结合方式,在区间内选取随机值,而确定最终雨滴的大小length。
[0131]

确定横向偏移速度;
[0132]
根据从云端获取到的实时天气信息中的风力值,通过之前定义的规则,确定横向偏移速度,每个风力的等级对应横向偏移速度不同,等级相对越高,偏移量也就相对越大,反之越小。类似地,需要在区间范围内[m,n]抽取随机值,这里m,n是偏移速度范围的下限值和上限值,如:一级风:[0.01,0.03],二级风:[0.03,0.05];利用srand函数和rand函数的结合方式,在区间内选取随机值,而确定每个雨滴的横向偏移速度velocity_x。
[0133]

确定下落速度;
[0134]
同样可通过雨的等级确定下落速度,等级越大,下落速度越大,反之越小。设置代表下落速度的区间范围的上限值和下限值,利用srand函数和rand函数的结合方式,在区间内选取随机值,而确定最终垂直方向的运动速度即下落速度velocity_y。
[0135]

雨滴位置;
[0136]
参照图4所示,屏幕中心点是(0,0),右上角是( 1, 1),右下角是( 1,-1),左下角是(-1,-1),左上角是(-1, 1),雨滴是从屏幕顶部下落的,且随机出现在全屏幕内的,所以startposition_x是在[-1, 1]内抽取随机值,也可更大范围一些,如:[-2, 2],startposition_y的位置应是屏幕外,所以可设定startposition_y是在[ 1, 3]内抽取随机值。endposition_x与endposition_y的初始值一样的处理,在更新过程中,会通过计算进行更新。
[0137]
通过对每个雨滴点均初始化自身的属性值,当随着每一帧的更新,每个不同大小长度的雨滴,从屏幕顶部开始下落,并产生横向偏移的运动效果(假设移动方式是由右向左偏移),根据自身的velocity_x与velocity_y,按照下述方式计算并更新每个雨滴两个端点的坐标:
[0138]
startposition_x=endposition_x;
[0139]
startposition_y=endposition_y;
[0140]
endposition_x=endposition_x-velocity_x;
[0141]
endposition_y=endposition_y-(length velocity_y);
[0142]
更新每个雨滴自身的两个端点(startposition_x,startposition_y),(endposition_x,endposition_y)坐标位置,当雨滴移动方式是由左向右移动时,可将上述公式中减法修改为加法,具体方式在此不再赘述。
[0143]
按照上述计算公式,即可产生需要传入gpu的一系列的顶点数据(即包含所有雨滴点的位置坐标序列,并利用vector数组结构存储雨滴的坐标点)。
[0144]
另外,要描画出雨滴的长度,本实施例一种可应用opengl的gl_line_strip的画
法,并设置描画线段的长度,达到画制线段的效果。设置gl_color_array启用颜色数组服务,通过给顶点设置起始点与结束点的颜色,并开启gl_smooth模式来实现颜色渐变的效果。
[0145]
实施例二:
[0146]
实施例二是针对雪的天气情况。与雪的实现原理基本上一致,不同之处如下:
[0147]
将实际天气情况中雪的等级,预先进行分级:
[0148]
比如:雪的等级分为3级(一级:小雪,二级:中雪,三级:大雪);
[0149]
屏幕中的每个雪花,都应该有以下几个属性:
[0150]
横向偏移速度(每帧运动的横向偏移距离)用velocity_x表示;
[0151]
垂直方向运动速度(每帧运动的纵向偏移距离)用velocity_y表示;
[0152]
雪花的位置(屏幕内的坐标)可选取雪花上的某个顶点作为整个雪花的位置坐标,并且,为了实现雪花近大远小的效果,增加z坐标值,z坐标值表示与屏幕表面纵深方向距离,这样,雪花的位置坐标用position_x,position_y,position_z表示;
[0153]
具体实现步骤如下:
[0154]

确定雪花数量;
[0155]
根据从云端获取到的实时天气信息中雪的等级,通过之前定义的规则,确定屏幕内雪花的数量,每个等级对应的雪花的数量不同,等级相对越高,数量也就相对越多,反之越少。
[0156]

确定横向偏移速度;同实施例一类似,在此不再赘述。
[0157]

确定雪花的垂直方向运动速度,即雪花下落速度;
[0158]
与雨的处理原理方式类似,不同之处在于下落速度的取值范围上下限大小的设定,雪花的整体下落速度会慢一些,上下限值的大小设定可以小一些,在此不再赘述。
[0159]

确定雪花的位置;
[0160]
与雨的处理原理方式相同,不同之处在于,只设置一个点的位置即可,position_x,position_y,position_z。position_x是在[-1, 1]内抽取随机值,也可更大坐标范围一些,比如:[-2, 2],由于雪花下落更慢,为更快在屏幕内看到雪花,position_y的位置应是整个屏幕的或更大一些,所以可设定position_y是在[-2,-2]内抽取随机值,position_z是z轴正方向的值,此处(0,1]为雪花在屏幕内可见的范围,值越大,雪花越大,反之越小。
[0161]
通过对每个雪花均初始化自身的属性值,当随着每一帧的更新,雪花充满屏幕各自开始下落,并产生横向偏移的运动效果(实施例二是由右向左偏移),根据自身的velocity_x与velocity_y,按照下述方式计算:
[0162]
position_x=position_x-velocity_x;
[0163]
position_y=position_y-velocity_y;
[0164]
根据上述计算公式,计算每帧中雪花的位置坐标,并逐帧更新雪花的position_x,position_y,position_z值在本实施例二中不更新,当然,也可以根据预设的规则对z坐标值进行更新,但保持雪花近大远小的展示效果即可。
[0165]
若雪花由左向右移动,可将上述公式中的减法修改为加法。
[0166]
由以上的方法,即可产生我们需要传入gpu的一系列顶点数据(所有雪花的位置坐标序列,此发明是利用vector数组结构存储雪花的坐标点)。
[0167]
为更加突出雪花的动画效果,对于雪花这种类型的天气粒子,还可以增加旋转属性。
[0168]
旋转属性可由应用层对其设置,若存在该属性值,即表征该天气粒子支持绕自身中心点旋转效果,否则,不支持旋转效果;具体实施时绕坐标轴z轴进行旋转变换矩阵算法,更新纹理坐标而达到旋转效果:
[0169]
变换矩阵算法如下:
[0170]
x'=xcosθ-ysinθ
[0171]
y'=xsintθ ycosθ
[0172]
θ:最大值2π,默认值为0,每帧 0.02π更新;
[0173]
x,y为纹理坐标的初始坐标,x',y'变换后的纹理坐标。
[0174]
通过上述变换矩阵算法,计算旋转时雪花的纹理坐标,实现雪花纹理的转动效果。
[0175]
另外,要描画出雪花的形状,可以预先准备的雪花图片,读取出雪花图片的纹理并进行绑定,本实施例二可应用opengl的gl_point的画法,例如使用点精灵技术减少对多边形旋转带来的巨大开销,同时还可通过设置gl_clamp_to_edge参数使边缘纹理延伸效果和gl_nearest临近过滤原则,使雪花呈现飘浮模糊的效果。
[0176]
具体渲染的过程可参照现有技术。
[0177]
本发明实施例还提供了一种地图的展示方法,参照图5所示,包括下述步骤:
[0178]
s51、获取自车所在位置的实时天气信息;
[0179]
s52、根据所述天气信息,逐帧渲染出用于模拟天气的各天气粒子;
[0180]
s53、将渲染出的用于模拟天气的各天气粒子与地图叠加进行展示;
[0181]
上述步骤s52中根据所述天气信息,逐帧渲染出用于模拟天气的各天气粒子的步骤是通过使用前述动态模拟天气的方法实现的。
[0182]
经过上述步骤,用户在进入导航客户端、地理信息展示客户端等相关页面时,可以看到与实时天气情况一致的图案,其中包含的天气粒子数量、天气粒子下落速度和水平横移速度直观地展示了实际气象的类型(雨、雪等)和气象级别等(小雪、小雨、大雪、大雨,风力等),模拟出的实时天气状态,可方便用户了解自身所在区域的实时天气情况,更好地利用地理信息和天气信息,保障交通安全。
[0183]
基于同一发明构思,本发明实施例还提供了一种动态模拟天气的装置、地图的展示装置、导航设备,由于这些装置和导航设备所解决问题的原理与前述动态模拟天气的方法、地图的展示方法相似,因此该装置和导航设备的实施可以参见前述方法的实施,重复之处不再赘述。
[0184]
本发明实施例提供一种动态模拟天气的装置,参照图6所示,包括:
[0185]
获取模块61,用于获取实时天气信息;
[0186]
确定模块62,用于根据实时天气信息,确定每一帧中各天气粒子的数量、大小和移动速度;以及根据移动速度,确定每一帧中对应数量的各天气粒子的位置坐标;
[0187]
渲染模块63,用于根据每一帧中各天气粒子的数量、大小和位置坐标,逐帧渲染出各天气粒子并进行展示。
[0188]
本发明实施例提供一种地图的展示装置,参照图7所示,包括:
[0189]
获取模块71,用于获取自车所在位置的实时天气信息;
[0190]
渲染模块72,用于根据所述天气信息,逐帧渲染出用于模拟天气的各天气粒子;
[0191]
展示模块73,用于将渲染出的所述用于模拟天气的各天气粒子与地图叠加进行展示。
[0192]
本发明实施例提供一种导航设备,包括:存储器、处理器及存储于存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如前述的动态模拟天气的方法或实现如前述的地图的展示方法。
[0193]
本发明实施例提供一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如前述的动态模拟天气的方法或实现如前述的地图的展示方法。
[0194]
本发明实施例提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现如前述的动态模拟天气的方法或实现如前述的地图的展示方法。
[0195]
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
[0196]
除非另外具体陈述,术语比如处理、计算、运算、确定、显示等等可以指一个或更多个处理或者计算系统、或类似设备的动作和/或过程,所述动作和/或过程将表示为处理系统的寄存器或存储器内的物理(如电子)量的数据操作和转换成为类似地表示为处理系统的存储器、寄存器或者其他此类信息存储、发射或者显示设备内的物理量的其他数据。信息和信号可以使用多种不同的技术和方法中的任何一种来表示。例如,在贯穿上面的描述中提及的数据、指令、命令、信息、信号、比特、符号和码片可以用电压、电流、电磁波、磁场或粒子、光场或粒子或者其任意组合来表示。
[0197]
应该明白,公开的过程中的步骤的特定顺序或层次是示例性方法的实例。基于设计偏好,应该理解,过程中的步骤的特定顺序或层次可以在不脱离本公开的保护范围的情况下得到重新安排。所附的方法权利要求以示例性的顺序给出了各种步骤的要素,并且不是要限于所述的特定顺序或层次。
[0198]
在上述的详细描述中,各种特征一起组合在单个的实施方案中,以简化本公开。不应该将这种公开方法解释为反映了这样的意图,即,所要求保护的主题的实施方案需要清楚地在每个权利要求中所陈述的特征更多的特征。相反,如所附的权利要求书所反映的那样,本发明处于比所公开的单个实施方案的全部特征少的状态。因此,所附的权利要求书特此清楚地被并入详细描述中,其中每项权利要求独自作为本发明单独的优选实施方案。
[0199]
本领域技术人员还应当理解,结合本文的实施例描述的各种说明性的逻辑框、模块、电路和算法步骤均可以实现成电子硬件、计算机软件或其组合。为了清楚地说明硬件和软件之间的可交换性,上面对各种说明性的部件、框、模块、电路和步骤均围绕其功能进行了一般地描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为背离本公开的保护范围。
[0200]
结合本文的实施例所描述的方法或者算法的步骤可直接体现为硬件、由处理器执行的软件模块或其组合。软件模块可以位于ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、移动磁盘、cd-rom或者本领域熟知的任何其它形式的存储介
质中。一种示例性的存储介质连接至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于asic中。该asic可以位于用户终端中。当然,处理器和存储介质也可以作为分立组件存在于用户终端中。
[0201]
对于软件实现,本技术中描述的技术可用执行本技术所述功能的模块(例如,过程、函数等)来实现。这些软件代码可以存储在存储器单元并由处理器执行。存储器单元可以实现在处理器内,也可以实现在处理器外,在后一种情况下,它经由各种手段以通信方式耦合到处理器,这些都是本领域中所公知的。
[0202]
上文的描述包括一个或多个实施例的举例。当然,为了描述上述实施例而描述部件或方法的所有可能的结合是不可能的,但是本领域普通技术人员应该认识到,各个实施例可以做进一步的组合和排列。因此,本文中描述的实施例旨在涵盖落入所附权利要求书的保护范围内的所有这样的改变、修改和变型。此外,就说明书或权利要求书中使用的术语“包含”,该词的涵盖方式类似于术语“包括”,就如同“包括,”在权利要求中用作衔接词所解释的那样。此外,使用在权利要求书的说明书中的任何一个术语“或者”是要表示“非排它性的或者”。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献