一种基于三维地形的风的动态可视化方法与流程

文档序号:11251962阅读:2038来源:国知局
一种基于三维地形的风的动态可视化方法与流程

本发明涉及一种基于三维地形的风的动态可视化方法。



背景技术:

本发明涉及一种如何将预测计算后的风向和风速数据在计算机中根据实景构建的三维地形上动态可视化显示的方法。该方法不仅有助于直观获取研究区域中整体的风的走向,同时也可掌握更小尺度和更高精度下的风在起伏地形上的速度和方向,例如30米*30米网格内风的大小和方向。这种直观的展示风场的风速和风向的方法不仅可以用于风力发电管理与选址、森林火灾辅助决策、污染源扩散控制等工业领域,还可以应用于影视、游戏中风效果的展示中。

目前对地形风场的研究主要集中在风速和风向模拟计算上,侧重点是如何提高模拟的精度,如专利cn103514328b、cn102435409b等,都是一种提高模拟精度的方法。而在如何高效、直观的将风速和风向的动态效果在虚拟地理环境中展示的专利较少。对风场的数值模拟固然重要,但缺乏相应的可视化方案,从众多的数据中很难整体上把握风的走向和速度,缺少直观性,给紧急决策、风场选址及其他应用带来一定困难。



技术实现要素:

有鉴于此,本发明的目的在于提供一种基于三维地形的风的动态可视化方法,在输入的高程数据、风场计算模型所计算出研究区域的风速和风向数据的基础上,在计算机的三维地形上动态模拟出风的流动。

为实现上述目的,本发明采用如下技术方案:

一种基于三维地形的风的动态可视化方法,其特征在于:包括数据的输入及虚拟场景的构建、三维风矢量场的构建和动态风场的显示三部分;

所述数据的输入及虚拟场景的构建包括以下步骤:

步骤s1:输入点阵形式的地形高程数据、风速和风向的数据文件,

步骤s2:构建三维网格地形,包括划分三角面片和地形贴图,

步骤s3:构建风节点;

所述三维风矢量场的构建包括以下步骤:

步骤s4:旋转平行xy平面的风节点使其表示正确的二维风向,计算地形法向矢量,最终根据罗德里格旋转公式获取旋转矩阵r;

所述动态风场的显示包括以下步骤:

步骤s5:计算单位三维风矢量表示该网格的三维风向,乘以风速得到下一位置点,

步骤s6:定时器时间控制模拟速度,风节点移动到下一位置点,更新风节点的风矢量、旋转矩阵r、颜色和大小,

步骤s7:重复上个步骤,风节点在结束位置时下一步移动到起始位置。

进一步的,所述数据的输入及虚拟场景的构建具体内容如下:

二维点阵形式的地形高程数据、风速和风向的数据文件的输入:每个点阵数据用于计算每个网格属性,每一点的风速、风向和高程数据一一对应;

三维网格地形的构建:根据不同位置点的地形高程数据,高程数据间地形插值圆滑,前后左右连成网格,再根据统一方向将每个四边形划分成两个三角面片,并且将研究区域的正摄航拍或遥感影像数据以纹理形式贴在地形上;

风节点的构建:将带有透明通道的箭头图片,通过uv坐标以纹理形式与创立的二维面片叠加,添加颜色和缩放属性用于区分风速。

进一步的,所述三维风矢量场的构建的具体内容如下:

网格单位风矢量的计算:采用欧拉法的原理,根据地形高程数据、风向角度和风速,计算网格的单位风矢量,获取风场研究区域整体的变化规律;

地形法向矢量计算:计算三角面片的两条直角边所在的单位矢量,将两条单位矢量叉乘,根据z方向值的正负,获得地形的法向矢量;

获取旋转矩阵r:从z轴方向的单位矢量旋转到地形法向矢量,这其中的旋转矩阵则根据罗德里格旋转公式,计算出特定网格地形的旋转矩阵r;

单一网格内风属性保存:保存每一网格的标识与对应网格的地形高程数据、风速、风向、风矢量、风节点颜色及大小。

进一步的,所述获取旋转矩阵r的具体内容如下:

首先获取旋转角度θ,旋转前向量为(0,0,1),旋转后向量为由点乘定义可知:

两个旋转角度为:

然后获取旋转轴,旋转角所在的平面为向量所构成的平面,旋转轴垂直于该平面,则旋转轴叉乘所在的矢量:

写成向量则根据罗德里格旋转公式,旋转矩阵r的计算公式为:

其中,e是3阶单位矩阵。

进一步的,所述动态风场的显示的具体内容如下:

风节点单步移动:采用拉格朗日法的原理,以模拟单个风节点为基础,综合所有风节点,构成整个风场运动,单位风矢量乘以风速得到x、y、z方向的偏移,再加上原来位置,就是风节点单步移动后的位置;

模拟速度控制:采用定时器加回调的处理方式控制模拟速度,减少定时器的时间则加快模拟速度,增加定时器时间则减小模拟速度;

更新风节点:风节点到达下一个位置前,预先获取该位置点所在网格的风矢量、旋转角度、颜色和大小,然后更新到该风节点;

风节点起始和结束位置:起始位置位于风向和地面第一次相交的边缘,结束位置位于风节点最后一次与地形边缘相交的位置,结束位置的下一个单步移动位置就是起始位置。

本发明与现有技术相比具有以下有益效果:本发明根据实景的数字高程(dem)数据,用网格算法在计算机中构建三维地形,并在此虚拟地理环境中,通过四元组的图形变换方法,以箭头的大小、颜色及材质来体现不同大小的风速,箭头的方向代表风的方向,用户可以调整时间步长和时间维度的缩放比例,就可以在计算机中的虚拟环境中动态的显示风场的流动。用户还可以从不同的角度和远近,切换观察视角,即可以整体把握研究区域中风场在未来一定时间内的流动变化,又可以查询指定研究区域的任意位置或网格内小尺度的风速和风向。本发明还可以与其他应用方案组合,比如与火场蔓延模拟系统组合,观察风场对火灾蔓延趋势是否有影响。也可以与气象系统结合,观察不同气候因子下风场的变化等等。本方案的输入简单,只需高程文件,风速和风向文件,同时又具有扩展性。

附图说明

图1是本发明的整体方法流程图。

图2是本发明一实施例的二维风速风向矢量场。

图3是本发明一实施例的三维地形上的风矢量场。

图4是风向角度示意图。

图5是网格地形示意图。

图6是三维风矢量计算示意图。

图7至图9是某时刻不同角度三维地形上风场的动态运动图。

具体实施方式

下面结合附图及实施例对本发明做进一步说明。

请参照图1,本发明提供一种基于三维地形的风的动态可视化方法,总的来说包括:数据的输入及虚拟场景的构建、三维风矢量场的构建和动态风场的显示三部分;

所述数据的输入内容和要求如下:输入数据包括地形高程数据、风速和风向的数据文件,这三个数据应都包含相同的公有信息:左下角的经度、纬度、行数、列数、行间距及列间距。所采用的输入文件精度不限定,若精度扩大1倍,一个文件数据量和计算量扩大4倍,高程、风速、风向三个文件,则需要处理的数据量扩大12倍。选取输入数据时,要兼顾地形精度和计算复杂度,也可以选用精度不是很高的数据,通过插值可以形成较理想的地形。对于风速和风向数据,本发明方法支持线性模拟、诊断风场模型、计算流体力学模型(cfd)三种风场的模拟计算结果。

所述三维风矢量场的构建部分首先采用欧拉法计算出二维风的运动矢量场数据如图2,根据地形的高程、风速及风向信息计算出三维地形上的运动矢量场如图3,以上内容的具体步骤如下:

步骤s1:输入二维点阵形式的地形高程数据、风速和风向的数据文件,每个点阵数据用于计算每个网格属性,每一点的风速、风向和高程数据一一对应。风向的表示方法,如图4所示,用角度表示风向,北风(n)是0度(即360度),东风(e)是90度,南风(s)是180度,西风(w)是270度,其余的风向都可以由此计算出来。

步骤s2:构建三维网格地形,包括划分三角面片和地形贴图,在实际情况下,可根据不同位置点的地形高程数据,高程数据间地形进行插值平滑,前后左右连成网格,再根据统一方向将每个四边形划分成两个三角面片,如图5所示,图中所示的pn、pn+1等横竖交点即为高程文件内的点阵数据,u为高程数据间的固定间距,数据之间上下左右连成网格,再将每个四边形以对角线划分为两个三角面片。划分方式不止一种,也可以按另一种对角线划分,但需要所有网格按同一方向划分。将研究区域的正摄航拍或遥感影像数据以纹理形式贴在地形上;

步骤s3:构建风节点,风节点在三维场景里表现为一个具有颜色、大小、位置属性的箭头。带有透明通道的长方形箭头图片,图片上除了箭头部分不设置为透明,其它的部分均设为透明,然后将图片以纹理的形式通过uv坐标映射到一个长方形面片上。在风节点运动过程中,动态改变这些属性用来表现不同位置风的属性。风节点颜色的改变可以通过改变材质实现,风的大小可以通过乘以缩放矩阵,xy方向可以通过乘以旋转矩阵,与地面平行的旋转通过乘以旋转矩阵r,地理位置变化通过乘以转移矩阵改变。矩阵之间相乘的变换关系不能改变顺序,要先缩放,再旋转,再平移,缩放涉及两次乘矩阵。

步骤s4:旋转平行xy平面的风节点使其表示正确的二维风向,计算地形法向矢量,最终根据罗德里格旋转公式获取旋转矩阵r;其具体内容如下:

网格单位风矢量的计算:采用欧拉法的原理,根据地形高程数据、风向角度和风速,计算网格的单位风矢量,获取风场整体的变化规律;以图6所示为例,已知风向角α和高程数据点固定间隔u,pn、pn+1点对应的高程值(即z方向值)记为c、d,坐标系方位如图,以o点为原点,计算pm点坐标并进行单位化即为所在网格的单位风矢量。pm点x值为u,y值为tan(90°-α)*u,z值根据y方向和z方向的比例计算出为再单位化得出网格的单位风矢量。

地形法向矢量计算:计算三角面片的两条直角边所在的单位矢量,将两条单位矢量叉乘(又称外积、叉积、矢积),得到地形法向矢量,进一步判断地形法向矢量z方向的值,根据z方向模的正负,获得地形的法向矢量;若小于0,则表示方向朝下,z方向取反为做为地形法向;若大于0,表示方向朝上,直接做为地形的法向。

获取旋转矩阵r:从z轴方向的单位矢量旋转到地形法向矢量,这其中的旋转矩阵是根据罗德里格旋转公式,计算出特定网格地形的旋转矩阵r;具体内容如下:

首先获取旋转角度θ,旋转前向量为(0,0,1),旋转后向量为由点乘定义可知:

可推出两个旋转角度为:

然后获取旋转轴,旋转角所在的平面为向量所构成的平面,旋转轴垂直于该平面,则旋转轴叉乘所在的矢量:

写成向量则根据罗德里格旋转公式,旋转矩阵r的计算公式为:

其中,e是3阶单位矩阵,公式中的第二项不是点积,而是张量积,得到的是一个3行3列的矩阵。

单一网格内风属性保存:保存每一网格的标识与对应网格的地形高程数据、风速、风向、风矢量、风节点颜色、大小。

所述动态风场的显示如图7至图9所示,为相同时刻下不同角度观察风场,若干风节点同时运动形成如图所示的风流场,所有风节点单步运动流程相同。采用拉格朗日法的原理,以模拟单个风节点为基础,综合所有风节点,构成整个风场运动,单位风矢量乘以风速得到x、y、z方向的偏移,加上原来位置,就是风节点单步移动后的位置,单个风节点的模拟步骤如下:

步骤s5:计算单位三维风矢量表示该网格的三维风向,乘以风速得到下一位置点,根据该位置点判断本次移动所在的网格,判断方法则根据所在位置除以网格精度,得到行列数。获取该网格属性,包括颜色、大小、方向、旋转矩阵r、位置信息。

步骤s6:更新风节点属性,先乘以缩放矩阵进行缩放,然后乘以xy方向的旋转矩阵,再乘以旋转矩阵r,最后乘以转移矩阵移动到下一个位置,缩放、旋转、平移的顺序不能改变,颜色的改变可以在任意阶段。定时器控制模拟速度,采用定时器加回调的处理方式控制模拟速度,减少定时器的时间加快模拟速度,增加定时器时间减小模拟速度;风节点每次更新属性都以定时器控制时间,到达定时器预定的时间后执行回调方法,风节点更新属性。若定时器设定时间为1,则显示的风速与实际风速完全相同,定时器设定为n(n为大于零的实数),模拟风速乘以1/n,定时器定时控制风速模拟的快慢。

步骤s7:重复上个步骤,起始位置位于风向和地面第一次相交的边缘,结束位置位于风节点出地形边缘的位置,结束位置的下一个单步移动位置就是起始位置。

鼠标可点击查看地理位置的风属性,在鼠标点击的位置垂直向屏幕内发射一条射线,与地形相交于一点,则可获取该点的地理位置,计算出所在网格,读取网格属性并显示出来。通过条件控制来控制模拟的开始与暂停。

以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1