最近在中国大学MOOC网上学习python科学计算三维可视化相关知识,记录下来,以供参考。
科学可视化基础
科学计算的可视化方法
二维标量数据场 1.1 颜色映射方法 1.2 等值线方法 1.3 立体图法和层次分割法三维标量数据场 2.1 面绘制方法(surface rendering) 2.2 体绘制方法(volume rendering)矢量数据场 3.1 直接法 3.2流线法(stream line)
TVTK库的安装
VTK-7.1.1-cp36-cp36m-win_amd64.whl numpy-1.12.1+mkl-cp36-cp36m-win_amd64.whl traits-4.6.0-cp36-cp36m-win_amd64.whl mayavi-4.5.0+vtk71-cp36-cp36m-win_amd64.whl PyQt4-4.11.4-cp36-cp36m-win_amd64.whl
TVTK库的安装小测
>>> from tvtk.api
import tvtk
>>> s = tvtk.CubeSource(x_length =
1.0,y_length =
2.0,z_length =
3.0)
>>> print(s)
vtkCubeSource (
0000020A22196F60)
Debug: Off
Modified Time:
96
Reference Count:
2
Registered Events:
Registered Observers:
vtkObserver (
0000020A25B90240)
Event:
33
EventName: ModifiedEvent
Command:
0000020A258E4CD0
Priority:
0
Tag:
1
Executive:
0000020A25BA0170
ErrorCode: No error
Information:
0000020A25C6E570
AbortExecute: Off
Progress:
0
Progress Text: (
None)
X Length:
1
Y Length:
2
Z Length:
3
Center: (
0,
0,
0)
Output Points Precision:
0
创建一个基本三维对象
s = tvtk.CubeSource(x_length=1.0, y_length=2.0, z_length=3.0)
CubeSource对象的属性
属性说明
s.x_length长方体对象在X轴方向的长度s.y_length长方体对象在y轴方向的长度s.z_length长方体对象在z轴方向的长度s.center长方体对象所在坐标系的原点s. output_points_precision长方体对象的精度
CubeSource对象的方法
VTK方法Tvtk说明
Set/GetXLength()x_length设置/获取长方体对象在X轴方向的长度Set/GetYLength()y_length设置/获取长方体对象在Y轴方向的长度Set/GetZLength()z_length设置/获取长方体对象在Z轴方向的长度Set/GetCenter()center设置/获取长方体对象所在坐标系的原点……
Tvtk库的基本三维对象
三维对象说明
CubeSource立方体三维对象数据源ConeSource圆锥三维对象数据源CylinderSource圆柱三维对象数据源ArcSource圆弧三维对象数据源ArrowSource箭头三维对象数据源
创建一个圆锥数据源
>>> s = tvtk.ConeSource(height =
3.0,radius =
1.0,resolution =
36)
>>> s.height
3.0
>>> s.radius
1.0
>>> s.resolution
36
>>> s.center
array([
0.,
0.,
0.])
>>> print(s)
vtkConeSource (
0000020A25B7FE10)
Debug: Off
Modified Time:
133
Reference Count:
2
Registered Events:
Registered Observers:
vtkObserver (
0000020A25B91260)
Event:
33
EventName: ModifiedEvent
Command:
0000020A258E4490
Priority:
0
Tag:
1
Executive:
0000020A25BA0F80
ErrorCode: No error
Information:
0000020A25C6F240
AbortExecute: Off
Progress:
0
Progress Text: (
None)
Resolution:
36
Height:
3
Radius:
1
Capping: On
Center: (
0,
0,
0)
Direction: (
1,
0,
0)
Output Points Precision:
0
TVTK库显示一个三维对象
from tvtk.api
import tvtk
s = tvtk.CubeSource(x_length=
1.0, y_length=
2.0, z_length=
3.0)
m = tvtk.PolyDataMapper(input_connection=s.output_port)
a = tvtk.Actor(mapper=m)
r = tvtk.Renderer(background=(
0,
0,
0))
r.add_actor(a)
w = tvtk.RenderWindow(size=(
300,
300))
w.add_renderer(r)
i = tvtk.RenderWindowInteractor(render_window=w)
i.initialize()
i.start()
原始数据转换为屏幕上图像,TVTK对象共同协调完成: tvtk.CubeSource tvtk.PolyDataMapper tvtk.Actor tvtk.Renderer tvtk.RenderWindow tvtk.RenderWindowInteractor 在TVTK中,这种对象之间协调完成工作的过程被称作管线(Pipeline)。