几组矢量数据的生成和读取方法
来源:互联网 发布:山东预算软件 编辑:程序博客网 时间:2024/05/14 17:58
科学计算可视化,第一步是要有数据,没有数据一切都是空谈。我在做矢量场可视化算法过程中,一开始也是着实着急了一阵,手头没有矢量数据,就无法验证文献中阐述的算法,而有了数据,如果不是相应文献作者的数据,即使结果出来了,但多多少少还是怕生成的矢量纹理不正确,就这样在纠结中过了很长时间。还好,后面陆续获得很多矢量数据,使我的算法实现过程进展的很顺利。下面是我在研究算法过程中经常用到的几组矢量数据,现在把数据读取方式和下载链接分享出来,希望对正在做矢量场可视化工作的同学有帮助。
矢量数据是一组即有大小、又有方向的数据,但是通常情况下在存储时并不是按照矢量大小和方向存储,而是按照x分量和y分量存储,即(x, y),对于矢量大小及矢量方向,则可以通过(x, y)进一步计算得出。
1. 直接计算得到矢量场数据
下面的模拟方法很容易理解,对于指定行、列二维网格的网格点,将坐标位置映射并平移后得到的数值作为其矢量x分量和y分量。
int row = 400, col = 400, index = 0;float vec_x = 0.0f, vec_y = 0.0f, vcMag = 0.0f, scale = 0.0f;float* pVector = (float*)malloc(sizeof(float) * row * col * 2 );for(int i = 0; i < row; i++){for(int j = 0; j < col; j++){// 数据生成index = i * col + j;// 中心矢量场// index = (row - 1 - i) * col + j;// 马鞍矢量场vec_x = -(float)i / row + 0.5f;vec_y = (float)j / col - 0.5f;// 数据规整vcMag = float(sqrt(vec_x * vec_x + vec_y * vec_y));scale = (vcMag < 0.001f) ? 0.0f : 1.0f / vcMag;vec_x *= scale;vec_y *= scale;pVector[2*index] = vec_x;pVector[2*index + 1] = vec_y;}}
可视化效果为:
2. 读取文件得到矢量场数据
在气象领域,风场是一个典型的矢量场。下面这两份数据是经由wrf模式运算得到的数值预报风场数据,数据格式很简单,文件开始是2个int数值,表明数据列和行,随后为float型矢量数据x、y分量,即(x, y)(x, y)(x, y)......,读取方式如下:
int info[2];FILE* fp = fopen("data\\wrf1-500hpa-0.dat", "rb");fread(info, sizeof(int), 2, fp);int col = info[0];int row = info[1];float* pVector = new float[row * col * 2];fread(pVector, sizeof(float), row * col * 2, fp); //////////////////////////////////////////// ... ...//////////////////////////////////////////fclose(fp);fp = NULL;
可视化效果为:
下面的数据一份为稳定矢量场数据,一份为不稳定矢量场数据,这两份数据均由浙江大学一位周姓博士学长提供给我的,在此也表示感谢。vec256^256为稳定矢量场数据,其数据格式和读取方式与上面一样。psi为三维不稳定场数据,数据格式与读取方式与上面基本一样,文件开始是3个int数值,表明数据行、列、时间步,随后为float型矢量数据x、y、z分量,即(x, y, z)(x, y, z)(x, y, z)......,对于二维矢量场,只需处理x, y分量即可。可视化效果为:
数据下载地址:http://download.csdn.net/detail/u013085897/7046467
3 0
- 几组矢量数据的生成和读取方法
- ENVI栅格裸数据生成shp和kml矢量文件
- CodeIgniter读取数据库数据的几种方法。
- java数据存储及读取的几种常用方法
- 大数据可视化之矢量切片的生成及渲染
- Arcgis中对矢量和栅格数据进行裁剪切割的方法
- Android中生成json格式数据的几种方法
- 在ArcGIS利用矢量数据剪裁栅格数据的方法
- 基于矢量数据的大数据量遥感影像裁剪方法
- qgis二次开发矢量数据点选择的方法
- 几种从数据库读取数据生成excel文件的比较
- 将单个字节数据读取到一个float类型的数据中---的几种方法
- 数据生成excel几种高效方法
- mysql的数据导出几种方法和数据备份
- 生成DLL的几种方法和使用方法
- 生成DLL的几种方法和使用方法
- php操作XML,读取数据和写入数据的方法
- php操作XML,读取数据和写入数据的方法
- 《使用Python进行自然语言处理》学习笔记三
- 关于void *para的传递
- Android 找不到class R 的解决办法
- 《使用Python进行自然语言处理》学习笔记四
- Cocos2dx-俄罗斯方块小项目
- 几组矢量数据的生成和读取方法
- 阅读过的书
- sizeof and strlen
- ubuntu下安装c++11标准的编译器 gcc4.8的方法
- javascript 文字滚动效果
- 算法实践篇-求最大子数组
- jacob语法总结
- Android 开发环境搭建(Linux下)
- phpstorm中实现CI框架(转载)