三維可視化課程試驗-TVTK部分_第1頁
三維可視化課程試驗-TVTK部分_第2頁
三維可視化課程試驗-TVTK部分_第3頁
三維可視化課程試驗-TVTK部分_第4頁
三維可視化課程試驗-TVTK部分_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

TVTK部分第一節(jié)創(chuàng)建一個基本三維對象CubeSource對象?>fromtvtk.apiimporttvtk>?s=tvtk?CubeSource(x_length=l.y_length=2.0jjlength=3,@)?>print(s)vtkCubeSource(0g0928E98EA6AA①Debug:OffModifiedTimes96ReferenceCount:2RegisteredEventsiRegisteredObservers:vtkObserver(明電O028E9A6FC3F0)Event:33EventName:ModifiedEvent三維對象變量s包含了構(gòu)建三維長方體的所有信息Tvtk庫的基本三維對象三維對象說明:CubeSource立方體三維對象數(shù)據(jù)源ConeSource圓錐三維對象數(shù)據(jù)源CylinderSource圓柱三維對象數(shù)據(jù)源ArcSource圓弧三維對象數(shù)據(jù)源ArrowSource箭頭三維對象數(shù)據(jù)源示例:顯示一個長方體fromtvtk.apiimporttvtk創(chuàng)建一個長方體數(shù)據(jù)源,并且同時設(shè)置其長跑商s=tvtk,CubeSource(x_length=l*0>y_length^2,9,z_length=3*e)ft使用PolygtmMmppwr將數(shù)據(jù)整換為圖形數(shù)據(jù)m=tvtk,PolyDataMapper(inputconnection=s*outputport)#制建一a=tvtk*Actor(mapper=m)創(chuàng)建一個Rend””,Actor添加進(jìn)去r=tvtk*Renderer<backgrounds(0,%0))r*add_actor(a)制比一個RcridorWindoH(窗口)/符R白添加進(jìn)上w=tvtk.RenderWindowtsizest^SQ,369))w.addrenderer(r)^^RenderWlndowinteractor(皆口的交互工具)1=tvtk.RenderWindowInteractor(render_window=w)#開啟交互一i.initialize()i.start()■VisualizationToolkit?第二節(jié)TVTK的管線理解TVTK的管線TVTK對象說明:CubeSource通過程序內(nèi)部計算輸出一組描述長方體的數(shù)據(jù)(PolyData)PolyDataMapperPolyData通過該映射器將數(shù)據(jù)映射為圖形數(shù)據(jù)(mapper)用ivtk工具觀察管線使用ivtk顯示立方體的程序:fromtvtk,apiimporttvtk,fromtvtk*toolsimportivtkfrompyface,apiimportGUIs=tvtk.CubeSource(x_lengty_length=240,z_length-3*0)m=tvtk.PolyDataMapper(input_connection=s.output_port)a=tvtk.Actor(mapper=m)#創(chuàng)建一個特Crust(PythonShell)的街口gui=GUI()win=ivtkiIVTKWithCrustAndBrowser()win*open()win.scene.add_actor(a}#開始界面消息循環(huán)gui?start_event_loop()

程序運行結(jié)果:4TVTKSceneFileEditView7口Win32OpenGLRend...7Rendererv口actor7fc<PolyData...口LcmjIcu,,.&PtjlyD?r周OpenGLR-7QpenGLCann.^Matrix4xdlMatrix4x4匐用星國:國國孽身4目圖Python3,fi,0(v3,6rej41d^79263all,Dec13招:電S:1打IMSC匐用星國:國國孽身4目圖(AMD&4)]onWin32Type"help1',"copyrieht",''credits''ortalicenseH-Formgrein-Forfliation.?>光源

場景由EditpropertiesSctutLi(htiitBackground:ForegroundsParallelprojectionZ0££場景由EditpropertiesSctutLi(htiitBackground:ForegroundsParallelprojectionZ0££terttnrtndtrinfJpegquality:Jpegprogressive:95(127,127,127)355,255,255)Magjii£1catio>n"1第三節(jié)Mayavi庫的使用Mayavi庫的基本元素Mayavi.mlab中的部分函數(shù)類別及說明:繪圖函數(shù):barchar、contour3d、contour_surf、flow、imshow、mesh、plot3d、points3d、quiver3d、surf、triangular_mesh圖形控制函:clf、closedraw、figure、gcf、savefigscreenshotsync_camera圖形修飾函數(shù):colorbar、scalarbarxlabel、ylabel、zlabel相機(jī)控制函數(shù):move、pitch、roll、view、yaw其他函數(shù):animate、axesget_engine、show、set_engineMlab管線控制:Open、set_vtk_src、adddataset、scalar_cut_planeMayaviAPI中的部分函數(shù)類別及說明:管線基礎(chǔ)對象:SceneSourceFilter、ModuleManager>Module>PipelineBaseEngine主視窗和UI對象:DecoratedSceneMayaviSceneSceneEditorMlabSceneModel、EngineView、EngineRichView繪圖實例>?*=[[-1—1;工廠工廠1],[-師],1,-[廠1]]?尸屋-1廠1廠1廠工廠Tl/l.lJ.T,1]]>>frommayaviimportmlab>>s=mlab.meshCXjyjZ)>>>運行結(jié)果:MMayaviScene1—□XA因因苗倒國演:」g4;OkJO實例二:fromnumpyimportp$,mgridfrommayavii-portmlab好建立費用dphitdtheta■pi/aSS.eipi/250.9[phi.thMa]=mgrld[?:p$+dph”1+5;dphi刈2*pi*dthtt**l.Sidhthvta]m0>4jml>3jm2=2;m3=3jm4=6;m5?2jmSS6;m7=4;r=sin(m0*phi)**ml+[cos(ni2*phi)**m3+sin(m4*the-ta)**m5+cos(mS*theta)**m7x-r,sln(phi)*cos(the-t^)N■r*ECis(phi)i=r*Sinfphi)thtta)tt對謨鬢落里忖三雄可視出s餐mlab^vneshtx^Y,工)mlabushowO4MayaviScene1一口X第四節(jié)基于Numpy數(shù)組的繪圖函數(shù)mlab對Numpy建立可視化過程過程:1、建立數(shù)據(jù)源2、使用Filter(可選)3、添加可視化模塊3D繪圖函數(shù)-Points3d中的參數(shù)與說明:OpcityVtk:對象的整體透明度,該值為float型,默認(rèn)為1.0;reset_zoom:對新加入場景數(shù)據(jù)的放縮進(jìn)行重置。默認(rèn)為True;8;resolution:符號的分辨率,如球體的細(xì)分?jǐn)?shù),該值為整型,默認(rèn)為scale_factor:符號放縮的比例;scale_mode:符號的放縮模式,如vector>scalarnone;transparent:根據(jù)標(biāo)量值確定actor的透明度;vmax:對colormap放縮的最大值;vmin:對colormap放縮的最小值;8;3D繪圖函數(shù)-surf程序代碼:importnumpyasnpfrommayaviimportmlabdeff(x,y):returnnp.sin(x-y)+np.cos(x+y)x,y=np,mgrid[-7?:7.05:0,1,-5,:5,05:0,05]s=mlab*surf(x^y』f)mlab*show()代碼運行結(jié)果:3D繪圖函數(shù)-contour3d函數(shù)形式:contour3d(scalars,…)contour3d(x,y,z,scalars;-)網(wǎng)格上的數(shù)據(jù)用三維數(shù)據(jù)表示,X,丫,Z是三維坐標(biāo)改變物體的外觀FileEdrtFormatSkinOptions癡rxfc*Helpimpartnumpyasnpfrommayaviimportmlab#速立數(shù)據(jù)Xjy=np.mgrid[-10:10:200jj-10:10:266g]z=lee*np.sin(x*y)/(x*y)#對數(shù)據(jù)進(jìn)行可視化mlab*figure(bgcolor=(lja1))|surf=mlab.surfCZjcolormaps'ccol1)#更新視網(wǎng)并顯示出來mlab,show()Ut:&0*0程序運行結(jié)果:4.4Ut:&0*0程序運行結(jié)果:4.4鼠標(biāo)選取操作鼠標(biāo)選取:on_mouse_pick(callback,type=Type:'point','cell'orButton:'Left','Middle'or'Right'on_mouse_pick(callback,type=Type:'point','cell'orButton:'Left','Middle'or'Right''point',Button='Left',Remove=False)'world'Remove值為True則callbactk函數(shù)不起作用第五節(jié)Mayavi可視化實例實例1:Dragon繪制importtarfile件讀取tar壓縮文件dragon_tar_file=tarfile.open(1dragon,tar.gz1)try:os.mkdir('dragon_datat)except:passdragon_tar_file>extractall(1dragon_data1)dragon_tar_file*close()實例運行結(jié)果:二MayaviScene1一□X?茵置由圉笛窗宵圖北M小片實例二:Canyon地形可視化1.處理地形數(shù)據(jù):importnumpyasnpdata=np*fromstring(hgtj1>i2')data.shape=(3601j3601)data=data,astype(npafloat32)data=data[:1000j900:1900]data[data==-32768]=data[data>?].min().渲染地形數(shù)據(jù).清空內(nèi)存、創(chuàng)建窗口程序運行結(jié)果:第六節(jié)Tra依基礎(chǔ)Trait屬性的功能Trait庫為Python對象的屬性增加了類型定義功能。同時還提供了以下功能:.初始化:每個Trait屬性都有自己的默認(rèn)值;.驗證:Trait屬性有明確的類型定義,滿足定義的值才能賦值給屬性;.代理:Trait屬性值可以代理給其他對象的屬性;.監(jiān)聽:Trait屬性值發(fā)生變化時,運行事先指定的函數(shù);.可視化:擁有Trait屬性的對象,可生成編輯Trait屬性的界面;Event和button屬性Event屬性功能:當(dāng)任何值對Event屬性賦值時;不存儲屬性值,所賦值將會被忽略;如果試圖獲取屬性值會產(chǎn)生異常。button屬性:具備Event事件處理功能通過TraitsUI庫,自動生成界面中的按鈕控件TraitsUI與Mayavi應(yīng)用實例建立mayavi窗口步驟1、建立從HasTraits繼承的類建立MlabSceneModel場景實例scene建立View視圖定義—init__函數(shù),生成數(shù)據(jù)2、建立類的實例,調(diào)用con巾gure_traits()方法實例:>園因國圖國國鯉目「永兇kJ6.4基于交互控制的Mayavi窗口框架步驟1、定義從HasTraits繼承的類定義窗口中的變量定義監(jiān)聽函數(shù)、更新視圖繪制定義視圖的布局2、調(diào)用configure_traits()第七節(jié)ScipySciPy擬合與優(yōu)化-optimizeoptimize模塊提供了許多數(shù)值優(yōu)化算法,可以實現(xiàn).非線性方程組求解.數(shù)據(jù)擬合.函數(shù)最小值SciPy插?-interpolate模塊提供了許多對數(shù)據(jù)進(jìn)行插值運算的函數(shù):.B樣條曲線插值.外推.Spline擬合(UnivariateSpline插值運算).二維插值運算等SciPy線性代數(shù)-linalgNumpy和SciPy^B提供了線性代數(shù)函數(shù)庫linalg,SciPy更為全面:.解線性方程組.最小二乘解.特征值和特征向量.奇異值分解Scipy可視化實例---凸包的二維/三維可視化凸包:指N維空間中的一個區(qū)域,該區(qū)域中任意兩點之間的線段都完全被包含在該區(qū)域之中,二維平面上的凸多邊形就是典型的凸包。程序代碼:>>importnumpyasnp>>np,random.seed(42)>>points2d=np.random*rand(10j2)>>fromsc

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論