版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
TVTK部分第一节创建一个基本三维对象CubeSource对象>>fromtvtk.apiimporttvtk>>s=tvtk.CubeSource(x_length=1.0jy_length=2.0jz_length:>>print(s)vtkCubeSource(0000028E98EA6AA0)Debug:OffModifiedTime:96ReferenceCount:2RegisteredEvents:RegisteredObservers:vtkObserver(0000028E9A6FC3F0)aEvent:33EventName:ModifiedEventTvtk库的基本三维对家三维对象说明:CubeSource立方体三维对象数据源ConeSource圆锥三维对象数据源CylinderSource圆柱三维对象数据源ArcSource圆弧三维对象数据源ArrowSource箭头三维对象数据源示例:显示一个长方体fromtvtk.apiimporttvtk创建一个长方体数据源,并员同时设置其长宽高s=tvtk.CubeSource(x_length=l.0jy_length=2.0jz_length=3.6使用PolyDat日Mapper将数据转换为图形数据m=tvtk.PolyDataMapper(inputconnection=s.outputport)创建一个Actora=tvtk.Actor(mapper=m)创建一个Renderer,将Actor添加进去r=tvtk.Renderer(background=(0,露0))r,add_actcr(a)创建一个Renderldindow(窗口),将RendErer添加进去w=tvtk.RenderWindow(size=(3e0j399))w.add_renderer(r)创建一个Renderldindow工nteractor(窗口的交互工具)i=tvtk.RenderWindowInteractor(render_window=w)开启交互一i.initialize()i.start()第二节TVTK的管线理解TVTK的管线TVTK对象说明:CubeSource通过程序内部计算输出一组描述长方体的数据(PolyData)PolyDataMapperPolyData通过该映射器将数据映射为图形数据(mapper)用ivtk工具观察管线使用ivtk显示立方体的程序:fromtvtk.apiimporttvtkfromtvtk.toolsimportivtkfrompyface.apiimportGUIs=tvtk.CubeSource(x_length=l.Qjy_length=2,ejz_length=3.0)m=tvtk.PolyDataMapper(input_connection=s.output_port)a=tvtk.Actor(mapper=m)#创建一个带Crust(PythonShell)的窗口gui=GUI()win=ivtk.IVTKWithCrustAndBrowser()win.open()win.scene.add_actor(a)#开始界面消息循环gui.start_event_loop()程序运行结果:程序运行结果:场景史EditpropertiesSceneLightsXBack:n-i:iiirLil:Fore:p-uutliI:Jpegquality:Farall已工prujecticm:DieablererLiler:0££EcreenrerLilering:Jpegpru:n-场景史EditpropertiesSceneLightsXBack:n-i:iiirLil:Fore:p-uutliI:Jpegquality:Farall已工prujecticm:DieablererLiler:0££EcreenrerLilering:Jpegpru:n-eeei¥e:旦Ma-zrii£icatiun:Antialia三in芸Eram2三:0208FullScreerLOKCancel第三节Mayavi库的使用3.1Mayavi库的基本元素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_engineMlab管线控制:Open、set_vtk_src、adddataset、scalar_cut_planeMayaviAPI中的部分函数类别及说明:管线基础对象:Scene、Source、Filter、ModuleManager、Module、PipelineBase、Engine主视窗和UI对象:DecoratedScene、MayaviScene、SceneEditor、MlabSceneModel、EngineView、EngineRichView3.2绘图实例»>X=[[-1,1,1,-1,-1],[-1,1,1,-1,-1]]»>y=[[-i,-iJ-iJ-iJ-i]J[i,1,1,1,1]]»>z=[[3—HJi,i—H]>>>frommayaviimportmlab>>>s=mlab.mesh(Xjyjz)»>运行结果:实例二:fromnumpyimportpi3sin3cos』mgridfrommayaviimportmlab才建立数据dphijdtheta=pi/250.0,pi/250.0[phijtheta]=mgrid[Q:pi+dphi*l,5:dphij0:2*pi+dtheta*l,5:dtkm0=4;ml=3;m2=2;m3=3;m4=6;m5=2;m6=6;m7=r=sin(m0*phi)**ml+|cos(m2*phi)**m3+sin(m4*theta)**m5+x=r*sin(phi)*cos(theta)y=r*cos(phi)z=r*sin(phi)*sin(theta)才对该数据进行三维可视化s=mlab.mesh(Xjy3z)mlab*show。实例二运行结果:实例二运行结果:第四节基于Numpy数组的绘图函数mlab对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放缩的最小值;3D绘图函数-surf程序代码:importnumpyasnpfrommayaviimportmlabdeff(x,y):returnnp«sin(x-y)+np-cos(x+y)x,y=np,mgrid[-7,:7,05:0,lj-5,:5,05:0,05]5=mlab,surf(x,y,f)mlab«show()代码运行结果:4MayaviScene1—□X4国因囱画鬲回面图品园口宫3D绘图函数-contour3d函数形式:contour3d(scalars,…)contour3d(x,y,z,scalars,…)网格上的数据用三维数据表示,X,Y,Z是三维坐标。4.3改变物体的外观ex-quiverSd.py-C:\Tvtk\SV02\ex-quiver3d.py(3.6.0)FileEditFormatRumOptionsWindowHelpimportnumpyasnpfrommayaviimportmlab#建立数据Xjy=np.mgrid[-10:10:288jj-10:10:200j]z=ISO*np.sin(x*y)/(x*y)#对数据进行可视化mlab.figure(bgcolor=(11,1))mlab.surffz•calormaD=1cool1)4.4鼠标选取操作鼠标选取:on_mouse_pick(callback,type=‘point’,Button=‘Left’,Remove=False)Type:’point’,’cell’or‘world’Button:’Left’,’Middle’or‘Right’Remove:值为True则callbactk函数不起作用第五节Mayavi可视化实例实例1:Dragon绘制importtarfile#隹取tmr压缩文件dragon_tar_file=tarfile.open('dragon.tar.gz1)try:os.mkdir('dragon^data1)except:passdragon^tar^file.extractallC^ragon^data1)实例二:Canyon地形可视化.处理地形数据:importnumpyasnpdata=np.fromstring(hgtj'>i2')data.shape=(3G01,3601)data=data.astype(np.float32)data=data[:1080900:1908]data[data==-32768]=data[data>0].min().渲染地形数据.清空内存、创建窗口程序运行结果:Z-.la-raiSce.-ieZ-.la-raiSce.-ie4囱国图囱囱国与第六节Traits基础Trait属性的功能Trait库为Python对象的属性增加了类型定义功能。同时还提供了以下功能:.初始化:每个Trait属性都有自己的默认值;.验证:Trait属性有明确的类型定义,满足定义的值才能赋值给属性;.代理:Trait属性值可以代理给其他对象的属性;.监听:Trait属性值发生变化时,运行事先指定的函数;.可视化:拥有Trait属性的对象,可生成编辑Trait属性的界面;Event和button属性Event属性功能:当任何值对Event属性赋值时;不存储属性值,所赋值将会被忽略;如果试图获取属性值会产生异常。button属性:具备Event事件处理功能通过TraitsUI库,自动生成界面中的按钮控件TraitsUI与Mayavi应用实例
建立mayavi窗口步骤1、建立从HasTraits继承的类建立MlabSceneModel场景实例scene建立View视图定义__init__函数,生成数据2、建立类的实例,调用configure_traits()方法实例:6.4基于交互控制的Mayavi窗口框架步骤1、定义从HasTraits继承的类1.1定义窗口中的变量1.2定义监听函数、更新视图绘制1.3定义视图的布局2、调用configure_traits()第七节ScipySciPy拟合与优化-optimize0Ptimize模块提供了许多数值优化算法,可以实现.非线性方程组求解.数据拟合.函数最小值SciPy插值-interpolate模块提供了许多对数据进行插值运算的函数:1.B样条曲线插值2,外推.Spline拟合(UnivariateSpline插值运算).二维插值运算等SciPy线性代数-linalgNumpy和SciPy都提供了线性代数函数库linalg,SciPy更为全面:.解线性方程组.最小二乘解.特征值和特征向量.奇异值分解Scipy可视化实例一凸包的二维/三维可视化凸包:指N维空间中的一个区域,该区域中任意两点之间的线段都完全被包含在该区域之中,二维平面上的凸多边形就是典型的凸包。程序代码:>>importnumpyasnp>>np.random.seed(42)>>pointsZd=np.random.rand(10j2)>>fromscipyimportspatial>>ch2d=spatial.ConvexHull(points2d)>>chzd.simplicesar
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河北省药品备案采购制度
- 海欣食品采购制度
- 消防日常采购制度
- 淮安个人计算机采购制度
- 滨江集团采购制度
- 煤场采购管理制度
- 煤矿采购询价制度
- 物业公司物品采购制度
- 物体采购管理制度
- 物料部采购管理制度
- 塑料复合袋基础知识培训
- 低温热年代学方法解析及其在黔西南卡林型金矿床研究中的应用
- 2025年北森人才测评试题及答案销售
- 2025年五类人员考试题型及答案广西
- 《大学生职业生涯规划与就业指导》高职就业和职业生涯全套教学课件
- JJF(陕) 134-2025 小麦硬度指数测定仪校准规范
- 佳能相机PowerShot SX50HS中文说明书
- 4农业现代化背景下2025年智慧农业大数据平台建设成本分析
- 高中地理研究性学习报告范文
- 2025年重庆市中考道德与法治真题(原卷版)
- 2025年高考数学全国一卷试题真题及答案详解(精校打印)
评论
0/150
提交评论