本文主要是介绍TVTK数据集和数据加载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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 tvtk import 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 = 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_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)
输出结果
这篇关于TVTK数据集和数据加载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!