一:TVTK库可视化实例

Plot3D文件知识:PLOT3D 数据格式

PLOT3D文件分为网格文件(XYZ 文件), 空气动力学结果文件 (Q 文件)和通用结果文件(函数文件 + 函数名称文件)。网格文件中可加入所谓的IBlank参数。

(一)标量数据可视化(等值面)

generate_values()创建等值面

from tvtk.api import tvtk
from Tvtkfunc import ivtk_scene,event_loop def read_data(): #导入数据
plot3d = tvtk.MultiBlockPLOT3DReader(
xyz_file_name="comxyz.bin", #网格文件
q_file_name="combq.bin", #开启动力学结果文件
scalar_function_number = , #设置标量数据数量
vector_function_number=, #设置矢量数据数量
) #读入Plot3D数据
plot3d.update() #让plot3D计算器输出数据
return plot3d plot3d = read_data()
grid = plot3d.output.get_block() #获取读入的数据集对象 con = tvtk.ContourFilter() #创建等值面对象
con.set_input_data(grid) #将网格与其绑定
con.generate_values(,grid.point_data.scalars.range) #指定轮廓数和数据范围 其中轮廓数越大,越丰富多彩 #映射颜色最小红色,最大蓝色 m = tvtk.PolyDataMapper(scalar_range=grid.point_data.scalars.range, #设置映射器的变量范围属性
input_connection=con.output_port)
a = tvtk.Actor(mapper=m)
a.property.opacity = 0.5 #设置透明度为0. win = ivtk_scene(a)
win.scene.isometric_view()
event_loop()

set_value设置每个等值面的值

第一个参数是指定第几个等值面,第二个参数是设置该等值面的值
set_value(,0.3)

(二)矢量数据可视化(有数值和方向)

箭头大小可以表示标量信息,箭头方向可以表示矢量的方向
为了能够在矢量数据网格中放置箭头符号,我们可以使用TVTK库中提供的Glyph3D符号化技术,可以产生放缩,着色,和具有方向的符号

在一般情况下,由于矢量数据过于密集,为了使得绘制速度更快,让箭头的密度适中,我们可以使用降维的方法,来降低数据的密度

from tvtk.api import tvtk
from Tvtkfunc import ivtk_scene,event_loop def read_data(): #导入数据
plot3d = tvtk.MultiBlockPLOT3DReader(
xyz_file_name="comxyz.bin", #网格文件
q_file_name="combq.bin", #开启动力学结果文件
scalar_function_number = , #设置标量数据数量
vector_function_number=, #设置矢量数据数量
) #读入Plot3D数据
plot3d.update() #让plot3D计算器输出数据
return plot3d plot3d = read_data()
grid = plot3d.output.get_block() #获取读入的数据集对象 #对数据集中的数据进行随机选取,每50个点选择一个点,是对数据进行降采样
mask = tvtk.MaskPoints(random_mode=True,on_ratio=)
mask.set_input_data(grid) #将grid和mask相连
#创建表示箭头的PolyData数据集
glyph_source = tvtk.ArrowSource()
#在Mask采样后的PolyData数据集每个点上放置一个箭头
#箭头的方向(速度方向),长度<箭头越大,表示标量越大>和颜色<也表示标量大小,红色小,蓝色大>(两个都表示密度)由于点对应的矢量和标量数据决定

#将上面的降采样数据与箭头符号化相关联
glyph = tvtk.Glyph3D(input_connection=mask.output_port,
scale_factor=) #scale_factor符号的共同放缩系数
glyph.set_source_connection(glyph_source.output_port) m = tvtk.PolyDataMapper(scalar_range=grid.point_data.scalars.range, #设置映射器的变量范围属性
input_connection=glyph.output_port)
a = tvtk.Actor(mapper=m)
a.property.opacity = 0.5 #设置透明度为0. win = ivtk_scene(a)
win.scene.isometric_view()
event_loop()

总结矢量化数据可视化的三个方法

(1)Glyph3D是TVTK的符号化技术

降采样的数据会被传入作为他的数据源,他输入数据的每个点,都会拷贝一个符号,符号本身是通过ArrowSource创建,由set_source_connection关联ployData和箭头

(2)MaskPoints降采样,可输出降采样前后点的数目查看效果

降采样前

降采样后

(3)ArrowSource方法修改

创建了表示箭头的PolyData数据集
glyph_source = tvtk.ArrowSource()  
glyph_source = tvtk.ConeSource()
设置防缩系数:scale_factor =

(三)空间轮廓线可视化

from tvtk.api import tvtk
from tvtk.common import configure_input
from Tvtkfunc import ivtk_scene,event_loop def read_data(): #导入数据
plot3d = tvtk.MultiBlockPLOT3DReader(
xyz_file_name="comxyz.bin", #网格文件
q_file_name="combq.bin", #开启动力学结果文件
scalar_function_number = , #设置标量数据数量
vector_function_number=, #设置矢量数据数量
) #读入Plot3D数据
plot3d.update() #让plot3D计算器输出数据
return plot3d plot3d = read_data()
grid = plot3d.output.get_block() #获取读入的数据集对象 outline = tvtk.StructuredGridOutlineFilter() #计算表示外边框的PolyData对象
configure_input(outline,grid) #调用tvtk.common.configure_input(),将外框计算与数据集产生关联 m = tvtk.PolyDataMapper(input_connection=outline.output_port)
a = tvtk.Actor(mapper=m)
a.property.color = 0.3,0.3,0.3 #float色彩空间0-1.0 win = ivtk_scene(a)
win.scene.isometric_view()
event_loop()

思路扩展:

将空间轮廓可视化和标量数据可视化或者矢量数据可视化一起使用,形成更加完善的形状

科学计算三维可视化---TVTK库可视化实例的更多相关文章

  1. 科学计算三维可视化---Mlab基础(数据可视化)

    推文:科学计算三维可视化---TVTK库可视化实例 使用相关函数:科学计算三维可视化---Mlab基础(管线控制函数) 一:mlab.pipeline中标量数据可视化 通过持续实例,来感受mlab对数 ...

  2. 科学计算三维可视化---TVTK入门(安装与测试)

    推文:http://docs.huihoo.com/scipy/scipy-zh-cn/tvtk_intro.html 推文:http://code.enthought.com/pages/mayav ...

  3. Python科学计算三维可视化(整理完结)

    中国MOOC<Pyhton计算计算三维可视化>总结 课程url:here ,教师:黄天宇,嵩天 下文的图片和问题,答案都是从eclipse和上完课后总结的,转载请声明. Python数据三 ...

  4. 科学计算三维可视化---Mlab基础(管线控制函数)

    科学计算三维可视化---TVTK管线与数据加载(可视化管线和图像管线了解) 科学计算三维可视化---Mayavi入门(Mayavi管线) Mlab管线控制函数的调用 Sources:数据源 Filte ...

  5. 科学计算三维可视化---Mlab基础(鼠标选取交互操作)

    一:鼠标选取介绍 二:选取红色小球分析 相关方法:科学计算三维可视化---Mlab基础(基于Numpy数组的绘图函数) 1.小球场景初始化建立 import numpy as np from maya ...

  6. 科学计算三维可视化---TVTK入门(数据加载)

    一:数据加载 大多数可视化应用的数据并非是在TVTK库中构建的,很多都是通过接口读取外部数据文件 (一)使用vtkSTLReader来读取外部文件 .stl 文件是在计算机图形应用系统中,用于表示三角 ...

  7. 科学计算三维可视化---Traits介绍

    简介 Traits是开源扩展库,Traits本身与科学计算可视化没有直接关联,但他其实TVTK,Mayavi,TraitsUI基础 安装: pip3 install traits--cp36-cp36 ...

  8. 科学计算三维可视化---TraitsUI的介绍

    TraitsUI的介绍 Python中存在Tkinter,wxPython,pyQt4等GUI图像界面编写库,这三类库要求程序员掌握众多的GUI API函数 对于科学计算的应用来说,我们希望可以快速的 ...

  9. Python可视化TVTK库初使用

    本周学习了初步的TVTK库的安装及使用方法,第一次通过tvtk.CubeSource方法建立了一个长方体对象.对TVTK的接触有了新的体会. 首先,在网上下载了以下五个库并按顺序通过pip指令在cmd ...

随机推荐

  1. 20162328蔡文琛 week05 大二

    20162328 2017-2018-1 <程序设计与数据结构>第5周学习总结 教材学习内容总结 集合是收集元素并组织其他对象的对象. 集合中的元素一般由加入集合的次序或元素之间的某些固有 ...

  2. 《Spring 2之站立会议3》

    <Spring 2之站立会议3> 昨天,查找了本机的端口号,并对代码作进一步的了解. 今天,对我们项目的基本框架进行了了解,即主界面和各个分界面的基本架构: 遇到的问题,虽然了解了基本框架 ...

  3. TCP/IP,HTTP,HTTPS,WEBSocket协议

    我看看着挺多的,我暂时没时间自己写,有需要的请借鉴 http://mp.weixin.qq.com/s?__biz=MzI0MDQ4MTM5NQ==&mid=2247486927&id ...

  4. week_2 四则运算

    coding地址: https://git.coding.net/lvgx/week_2.git 一. 需求分析 1.接收一个输入参数n,然后随机产生n道加减乘除(分别使用符号+-*÷来表示)练习题 ...

  5. Docker使用阿里云镜像加速

    1.进入阿里云镜像加速页面: https://cr.console.aliyun.com/#/accelerator 2.修改/etc/docker/daemon.json文件配置,没有则新建: { ...

  6. Oracle 数据库备份启用压缩以及remap

    1. Oracle数据库进行备份恢复 客户测试环境, 有时候需要从现场copy到公司, 压缩虽然能够减少部分空间大小,但是copy到虚拟机里面也时浪费很大量的磁盘,所以能够在备份恢复的过程中执行压缩最 ...

  7. Linux/Unix系统编程手册 第三章:系统编程概念

    本章介绍系统编程的基础概念和一些后续章节用到的函数及头文件,并说明了可移植性问题. 系统调用是受控的内核入口,通过系统调用,进程可以请求内核以自己的名义去执行某些动作,比如创建子进程,执行I/O操作, ...

  8. UVA10917_Walk Through the Forest

    无向图.对于两个相连的点,如果A到终点的最短路径大于B到终点的最短路径,那么A可以往B走,求最终从起点到终点有多少种走法? 首先我们可以直接预处理所有点到终点的最短路径.然后分别判断所有的边两点是否满 ...

  9. MT【142】Bachet 问题,进位制

    问题: 满足下面两种限制条件下要想称出40以内的任何整数重量,最少要几个砝码: i)如果砝码只能在天平的某一边; ii)如果砝码可以放在天平的两边. 提示:对于 i)先证明如下事实: \[\textb ...

  10. [USACO12NOV]同时平衡线Concurrently Balanced Strings DP map 思维

    题面 [USACO12NOV]同时平衡线Concurrently Balanced Strings 题解 考虑DP. \(f[i]\)表示以\(i\)为左端点的合法区间个数.令\(pos[i]\)表示 ...