三维可视化课程实验TVTK部分.docx
《三维可视化课程实验TVTK部分.docx》由会员分享,可在线阅读,更多相关《三维可视化课程实验TVTK部分.docx(13页珍藏版)》请在冰豆网上搜索。
三维可视化课程实验TVTK部分
TVTK部分
第一节创建一个基本三维对象
1.1CubeSource对象
三维对象变量s包含了构建三维长方体的所有信息
1.2Tvtk库的基本三维对象三维对象说明:
CubeSource立方体三维对象数据源ConeSource圆锥三维对象数据源CylinderSource圆柱三维对象数据源ArcSource圆弧三维对象数据源ArrowSource箭头三维对象数据源示例:
显示一个长方体
第二节TVTK的管线
2.1理解TVTK的管线
TVTK对象说明:
CubeSource通过程序内部计算输出一组描述长方体的数据(PolyData)
PolyDataMapperPolyData通过该映射器将数据映射为图形数据(mapper)
2.2用ivtk工具观察管线
使用ivtk显示立方体的程序:
程序运行结果:
光源
3.1
场景
第三节
Mayavi库的使用
Mayavi库的基本元素
Mayavi.mlab中的部分函数类别及说明:
绘图函数:
barchar、contour3d、contour_surf、flow、imshow、mesh、plot3d、points3d、quiver3d、surf、triangular_mesh
图形控制函:
clf、close、draw、figure、gcf、savefig、screenshot、sync_camera图形修饰函数:
colorbar、scalarbar、xlabel、ylabel、zlabel
相机控制函数:
move、pitch、roll、view、yaw
其他函数:
animate、axes、get_engine、show、set_engine
Mlab管线控制:
Open、set_vtk_src、adddataset、scalar_cut_plane
MayaviAPI中的部分函数类别及说明:
管线基础对象:
Scene、Source、Filter、ModuleManager、Module、PipelineBase、Engine
主视窗和UI对象:
DecoratedScene、MayaviScene、SceneEditor、MlabSceneModel、EngineView、EngineRichView
3.2绘图实例
运行结果:
实例二:
实例二运行结果:
第四节基于Numpy数组的绘图函数
4.1mlab对Numpy建立可视化过程
过程:
1、建立数据源
2、使用Filter(可选)
3、添加可视化模块
3D绘图函数-Points3d中的参数与说明:
OpcityVtk:
对象的整体透明度,该值为float型,默认为1.0;reset_zoom:
对新加入场景数据的放缩进行重置。
默认为True;resolution:
符号的分辨率,如球体的细分数,该值为整型,默认为8;scale_factor:
符号放缩的比例;
scale_mode:
符号的放缩模式,如vector、scalar、none;transparent:
根据标量值确定actor的透明度;vmax:
对colormap放缩的最大值;
vmin:
对colormap放缩的最小值;
4.23D绘图函数-surf
程序代码:
代码运行结果:
3D绘图函数-contour3d函数形式:
contour3d(scalars,⋯)
contour3d(x,y,z,scalars,⋯)网格上的数据用三维数据表示,X,Y,Z是三维坐标
4.3改变物体的外观
程序运行结果:
4.4鼠标选取操作鼠标选取:
on_mouse_pick(callback,type=‘point
Type:
'point','cell'or‘world'Button:
'Left','Middle'or‘RightRemove:
值为True则callbactk函数不起作用
',Button=‘Left',Remove=False)
第五节Mayavi可视化实例实例1:
Dragon绘制
实例运行结果:
实例二:
Canyon地形可视化
1.处理地形数据:
2.渲染地形数据
3.清空内存、创建窗口
程序运行结果:
第六节Traits基础
6.1Trait属性的功能
Trait库为Python对象的属性增加了类型定义功能。
同时还提供了以下功能:
1.初始化:
每个Trait属性都有自己的默认值;
2.验证:
Trait属性有明确的类型定义,满足定义的值才能赋值给属性;
3.代理:
Trait属性值可以代理给其他对象的属性;
4.监听:
Trait属性值发生变化时,运行事先指定的函数;
5.可视化:
拥有Trait属性的对象,可生成编辑Trait属性的界面;
6.2Event和button属性
Event属性功能:
当任何值对Event属性赋值时;不存储属性值,所赋值将会被忽略;如果试图获取属性值会产生异常。
button属性:
具备Event事件处理功能
通过TraitsUI库,自动生成界面中的按钮控件
6.3TraitsUI与Mayavi应用实例
建立mayavi窗口步骤
1、建立从HasTraits继承的类
1.1建立MlabSceneModel场景实例scene
1.2建立View视图
1.3定义__init__函数,生成数据
2、建立类的实例,调用configure_traits()方法实例:
6.4基于交互控制的Mayavi窗口框架步骤
1、定义从HasTraits继承的类
1.1定义窗口中的变量
1.2定义监听函数、更新视图绘制
1.3定义视图的布局
2、调用configure_traits()
第七节Scipy
7.1SciPy拟合与优化-optimize
optimize模块提供了许多数值优化算法,可以实现
1.非线性方程组求解
2.数据拟合
3.函数最小值
SciPy插值-interpolate模块提供了许多对数据进行插值运算的函数:
1.B样条曲线插值
2.外推
3.Spline拟合(UnivariateSpline插值运算)
4.二维插值运算等
7.2SciPy线性代数-linalg
Numpy和SciPy都提供了线性代数函数库linalg,SciPy更为全面:
1.解线性方程组
2.最小二乘解
3.特征值和特征向量
4.奇异值分解
7.3Scipy可视化实例---凸包的二维/三维可视化
凸包:
指N维空间中的一个区域,该区域中任意两点之间的线段都完全被包含在该区域之中,二维平面上的凸多边形就是典型的凸包。
程序代码:
写入文件:
程序运行结果: