TVTK数据集和数据加载
来源:互联网 发布:淘宝美工将来有前途么 编辑:程序博客网 时间:2024/06/05 19:32
Python科学计算三维可视化
黄天羽、嵩天
- 数据集Data Set
- Imagedata
- RectilinearGrid
- StructuredGrid
- Polydata
- UnstructuredGrid
- TVTK数据加载
- TVTK模型读取
- TVTK MultiBlock数据读取
- 数据集Data Set
数据集(Data Set)
- 点(Point)和数据(Data)
- 点之间:连接 vs 非连接
- 多个相关的点组成单元(Cell)
- 点的连接:显式 vs 隐式
- 数据:标量(Scalar)vs 矢量(Vector)
Imagedata
二维或三维图像的数据结构
简单理解为二维或三维数组
点之间的距离由数组中的间隔决定
from tvtk.api import tvtkimg = tvtk.ImageData(spacing=(1,1,1), origin=(0,0,0), dimensions=(2,3,4))'''spacing 三维网格数据在X、 Y、 Z轴上的间距origin 三维网格数据的起点坐标dimensions 在X、 Y、 Z轴上的网格数'''for i in range(9): print('%d, %d, %d' %img.get_point(i))
输出结果
RectilinearGrid
间距不均匀的网格,所有点都在正交的网格上
from tvtk.api import tvtkimport numpy as npx = np.array([0, 3, 9, 15])y = np.array([0, 1, 5])z = np.array([0, 2, 3]) #表示交点r = tvtk.RectilinearGrid()r.x_coordinates = xr.y_coordinates = yr.z_coordinates = zr.dimensions = len(x), len(y), len(z)for i in range(6): print('%d, %d, %d' %r.get_point(i))
输出结果
StructuredGrid
- 创建任意形状的网格,需要指定点的坐标
- 需要对 points、dimensions、point_data.scalars 等属性进行初始化
Polydata
- 由一系列的点、点之间的联系以及由点构成的多边形组成
- 一般不用直接给出点的坐标的方法来创建
UnstructuredGrid
- 略
TVTK数据加载
TVTK模型读取
s=tvtk.STLReader(file_name = “stl文件名”)
from tvtk.api import tvtkfrom tvtkfunc import ivtk_scene, event_loops = tvtk.STLReader(file_name="python.stl")m = tvtk.PolyDataMapper(input_connection=s.output_port)a = tvtk.Actor(mapper=m)win = ivtk_scene(a)win.scene.isometric_view()event_loop()
结果图
TVTK MultiBlock数据读取
Plot3D 文件
- 网格 (XYZ 文件)
- 空气动力学结果 (Q 文件)
- 通用结果
from tvtk.api import tvtkdef read_data(): # 读入数据 plot3d = tvtk.MultiBlockPLOT3DReader( xyz_file_name = "combxyz.bin", # 网格文件 q_file_name = "combq.bin", # 空气动力学结果文件 scalar_function_number = 100, # 设置标量数据数量 vector_function_number = 200 # 设置矢量数据数量 ) plot3d.update() return plot3dplot3d = read_data()grid = plot3d.output.get_block(0)print(type(plot3d.output))print(type(grid))print(grid.dimensions)print(grid.points.to_array())print(grid.point_data.number_of_arrays)
输出结果
阅读全文