数据集(Data Set)
- 点(Point)和数据(Data)
- 点之间:连接 vs 非连接
- 多个相关的点组成单元(Cell)
- 点的连接:显式 vs 隐式
- 数据:标量(Scalar)vs 矢量(Vector)
Imagedata
二维或三维图像的数据结构
简单理解为二维或三维数组
点之间的距离由数组中的间隔决定
from tvtk.api import tvtk img = 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 tvtk import numpy as np x = np.array([0, 3, 9, 15]) y = np.array([0, 1, 5]) z = np.array([0, 2, 3]) #表示交点 r = tvtk.RectilinearGrid() r.x_coordinates = x r.y_coordinates = y r.z_coordinates = z r.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 tvtk from tvtkfunc import ivtk_scene, event_loop s = 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 tvtk def 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 plot3d plot3d = 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)
输出结果