




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、上一節(jié)課內(nèi)容回顧2.1 Python概要2.2 Python 快速入門 (1)基本的運算式(int,long,float,complex) (2)基本數(shù)據(jù)類型與操作(String,List,Tupe,Dictionary) (3)函數(shù) def myFunction(.): (4)類 class myClass(.): (5)控制流程 If else; while :; for . in () : (6)模塊 py pyc pyo1上一節(jié)課內(nèi)容回顧2.1 Python安裝在下,有python的安裝文件:python-2.4.2.msi執(zhí)行 python-2.4.2.msi 進行安裝;設置路徑py
2、thon24和python24dlls到PATH中。2.2 Python 相關網(wǎng)站 中文PYTHON論壇 PYTHON主站點 2.3 Python程序的編輯與運行 使用任何文本編輯程序都可編寫python程序。保存為*.py 在DOS提示符下輸入python *.py即可運行,或在IDLE中打開*.py文件,運行即可。另外,如果是2000或xp,可把*.py和python.exe關聯(lián)起來,然后輸入*.py或鼠標直接Click運行。 2上一節(jié)課內(nèi)容回顧關于函數(shù)的缺省參數(shù):def func1(a, b=):b.append(a)return bdef func2(a, b=None):if( b
3、= None ):b=b.append(a)return bprint -函數(shù)func1的結果-print func1(1)print func1(2)print func1(3)printprint -函數(shù)func2的結果-print func2(1)print func2(2)print func2(3)-函數(shù)func1的結果-11, 21, 2, 3-函數(shù)func2的結果-1233上一節(jié)課內(nèi)容回顧def func1(a, b=):函數(shù)func1的參數(shù)b帶有缺省值,這意味著python在生成函數(shù)對象func1時,自動為參數(shù)b生成一個缺省列表對象.這個對象本身是不能改變的,任何時候以缺省參數(shù)
4、調用func1時都是訪問的該列表對象。列表不變,但列表的內(nèi)容卻是可變的。def func2(a, b=None):函數(shù)func2的參數(shù)b帶有缺省值None,這意味著python在生成函數(shù)對象func2時,自動為參數(shù)b生成一個缺省對象None.這個對象本身時不能改變的,任何時候以缺省參數(shù)調用func2時都是訪問的該空對象。4本節(jié)課內(nèi)容VTK: A Tutorial, 介紹VTK的基本內(nèi)容1 What is VTK?2 VTK圖形模型3 VTK可視化模型53.0 VTK安裝在http:/lesson/eiv, 有vtk 5.0版已編譯好的安裝文件:VTK.ZIP把VTK.ZIP解壓到目錄pytho
5、n24下。(2) VTK的主站點 在可在該站點上下載最新版的源代碼、特定平臺的二進制代碼、例子、數(shù)據(jù)和文檔等。 6 VTK 是幾個較為廣泛使用的可視化系統(tǒng)之一。AVS 是商用系統(tǒng),IBM s Data Explorer (DX)原先為商用系統(tǒng),目前已轉為開放源代碼系統(tǒng)并改名為OpenDX.其它還有NAG Explorer 4 and Template Graphics Amira. VTK是一個通用可視化系統(tǒng), 已被許多大學和研究機構采用,作為教學和研究工具。許多公司也在其基礎上開發(fā)了各種可視化系統(tǒng),包括醫(yī)學可視化,體可視化,石油勘探,聲學系統(tǒng),流體系統(tǒng),有限元分析,表面重構等。73.1 Wh
6、at is VTK? 開放源代碼、可移植 (WinTel/Unix)、面向對象的3D計算 機圖形,可視化,和圖像處理系統(tǒng); 以 C +語言實現(xiàn),支持Tcl、Python和Java語言; 支持復雜應用程序開發(fā),應用程序快速原型開發(fā); 支持多種GUI開發(fā)環(huán)境,如Tk 、X/Motif、MFC、wxWidgets 。 提供數(shù)據(jù)表達類型,包括無結構點集,多邊形數(shù)據(jù),圖像,體元,結構 格網(wǎng),正交格網(wǎng),以及無結構格網(wǎng)等. 通過 readers/import以及writers/export和其它程序交換數(shù)據(jù)。 提供數(shù)百個數(shù)據(jù)處理器處理各種數(shù)據(jù),從圖像變換到三角網(wǎng)構建. VTK繪制模式支持2D、多邊形、體元和
7、紋理繪制,以及它們的各 種組合。83.2 VTK結構3.2.1 VTK 在API訪問接口上包括兩個主要部分: C實現(xiàn)的核心層 自動生成的接口層,包括Tcl、Java和Python.9 C實現(xiàn)的核心層:數(shù)據(jù)結構、算法和對計算時間要求高的系統(tǒng)函數(shù)在C核心層中實現(xiàn)。核心層中采用對象工廠和虛擬函數(shù)等提高系統(tǒng)可移植性以及可擴展性。VTK在核心層獨立于任何GUI,不依賴于某一特定的窗口系統(tǒng)。應用程序開發(fā)者能很方便地把VTK插入到自己開發(fā)的系統(tǒng)中。VTK通過抽象的圖像模型實現(xiàn)圖形的可移植性。10 自動生成的接口層:核心層提供速度和效率,接口層提供的是靈活和可擴展能力。例如使用GUI原型開發(fā)工具如Tcl/Tk
8、, Python/Tk,Python/wxPython, 或 Java AWT可進行專業(yè)應用程序的快速開發(fā)。113.2.2 VTK內(nèi)部組成VTK內(nèi)部包括兩個主要的子系統(tǒng) 圖形模型子系統(tǒng)和可視化管道子系統(tǒng)。(1)圖形模型子系統(tǒng)圖形模型是建立在圖形語言(如OPENGL)基礎上的抽象層,提供跨平臺的可移植性。在1993年, 不同的計算機平臺有各自的圖形語言: XGL for Sun, Starbase for Hewl tt-Packard, gl for Silicon Graphics.為了實現(xiàn)圖形的平臺與設備無關,提出了圖形模型.圖形模型中的對象采用電影工業(yè)中的名稱命名。燈光、相機、演員和道具
9、是 用戶創(chuàng)建場景所使用的類。通過抽象圖形模型,3D多邊形繪制(lights,cameras,actors)和體繪制以及其它繪制方式就有了一致的訪問接口。 12 繪制窗口和繪制器:可視化具體的數(shù)據(jù)前,必須在計算機屏幕上打開一個繪制窗口。vtkRenderWindow是一個或多個繪制器在其上進行繪制的窗口的抽象基類。直接調用vtkRenderWindow 可以自動生成所在平臺上與設備相關的窗口子類。vtkRenderWindow是vtkRenderer對象的容器對象。多個vtkRenderer對象可以平鋪在一個vtkRenderWindow 中,從而創(chuàng)建復合的可視化系統(tǒng)。13下面例子把兩個繪制器放
10、在一個繪制窗口中。每一個有不同的背景顏色:from vtk import *renWin =vtkRenderWindow()renWin.SetSize( 600, 300)ren1=vtkRenderer()ren1.SetViewport( 0.0, 0.0, 0.5, 1.0)ren1.SetBackground( 0.8, 0.4, 0.2)renWin.AddRenderer( ren1)ren2 =vtkRenderer()ren2.SetViewport( 0.5, 0.0, 1.0, 1.0)ren2.SetBackground( 0.1, 0.2, 0.4)renWin.A
11、ddRenderer( ren2)renWin.Render()運行14 交互器:一般,我們使用鼠標控制場景中的相機位置和方向,以及其它道具。vtkRenderWindowInteractor提供交互功能。iren=vtkRenderWindowInteractor()iren.SetRenderWindow(renWin)iren.Initialize()iren.Start()15 道具, 映射器,和特性道具是被加到繪制器中創(chuàng)建場景的對象。 vtkProp是所有2D和3D道具的抽象基類,包含可見性、方向、大小和位置信息。道具與映射器及特性對象關聯(lián).映射器引用輸入數(shù)據(jù)對象并知道如何繪制該輸入
12、對象.特性對象包含繪制參數(shù),如顏色和材質等. 16 繪制3D 幾何數(shù)據(jù)vtkActor是在場景中繪制3D幾何數(shù)據(jù)的 vtkProp道具類的子類。演員類對象自動創(chuàng)建缺省的vtkProperty對象,但要求用戶自己創(chuàng)建vtkMapper子類。根據(jù)幾何特性的不同,從vtkDataSetMapper或vtkPolyDataMapper中選擇一個.如果數(shù)據(jù)是用vtkPolyData表示的,包含點,線,和多邊形,則使用 vtkPolyDataMapper,否則使用vtkDataSetMapper。17下例創(chuàng)建一個立方體:cubeData=vtkCubeSource()cubeMapper=vtkPolyD
13、ataMapper()cubeMapper.SetInput(cubeData.GetOutput()cubeActor=vtkActor()cubeActor.SetMapper(cubeMapper)Ren1.AddProp(cubeActor)Ren1.ResetCamera()renWin.Render()運行由于vtkCubeSource對象是多邊形數(shù)據(jù),使用vtkPolyDataMapper繪制數(shù)據(jù),ResetCamera()把相機對準數(shù)據(jù)18 旋轉與改變顏色:cubeActor.RotateX( 30.0)cubeActor.RotateY( 20.0)cubeActor.Get
14、Property().SetColor( 1.0, 0.7, 0.7)renWin Render使用演員的GetProperty()訪問自動創(chuàng)建的特性對象。 運行ch3cubecolor.py19 3D體數(shù)據(jù)繪制vtkImageData是vtkDataSet的子類,可表示1D、2D和3D圖像數(shù)據(jù)。作為vtkDataSet的子類,vtkImageData可用vtkActor表示,并可用 vtkDataSetMapper進行繪制。在3D下, vtkImageData數(shù)據(jù)被看作體元,相應的,它就可用vtkVolume表示,并用 vtkVolumeMapper的子類繪制.VTK目前支持三種類型的體繪制
15、 光線跟蹤,2D紋理映射,以及VolumePro圖形卡.20下例中,首先讀入一個3D結構數(shù)據(jù),然后使用vtkVolumeTextureMapper2D繪制:negReader=vtkSLCReader()negReader.Set( “neghip.slc”)negMapper=vtkVolumeTextureMapper2D()negMapper.SetInput(negReader.GetOutput()體繪制最困難的是定義轉換函數(shù),把標量值轉成顏色和透明度。negOpacityvtkPiecewiseFunction()negOpacity.AddPoint(0 ,0.0)negOpac
16、ity.AddPoint(255, 0.2)negColor=vtkColorTransferFunction()negColor.AddRGBPoint( 64, 1.0, 0.0, 0.0)negColor.AddRGBPoint( 128, 0.0, 0.0, 1.0)negColor.AddRGBPoint( 196, 0.0, 1.0, 0.0)21 創(chuàng)建體元特性和體元道具:negProperty=vtkVolumeProperty()negProperty.SetColor( negColor)negProperty.SetScalarOpacity(negOpacity)negV
17、olume = vtkVolume()negVolume.SetMapper(negMapper)negVolume.SetProperty(negProperty)ren2.AddProp(negVolume)ren2.ResetCamera()renWin.Render() 運行22 幾何與體元的混合:VTK在一個場景中可以混合多個演員和體元進行繪制。下例,多邊形和體元混合在一起。posReader=vtkPolyDataReader()posReader.Set(“poshipsurface.vtk”)posMapper=vtkPolyDataMapper()posMapper.SetI
18、nput(posReader.GetOutput()posActor=vtkActor()posActor.SetMapper( posMapper )ren2.AddProp( posActor )renWin.Render()運行23 2D數(shù)據(jù)繪制除了3D幾何和體元數(shù)據(jù),VTK能夠可視化2D數(shù)據(jù),如幾何,圖像,和文本。演員,映射器,和特性同樣適用于2D數(shù)據(jù)。下例把2D數(shù)據(jù)和3D數(shù)據(jù)混合繪制。vtkActor2D表示場景中的標題, vtkTextMapper繪制文本數(shù)據(jù), vtkActor2D自動創(chuàng)建vtkProperty2D對象。titleMapper=vtkTextMapper()tit
19、leMapper.SetInput(“This is a Pink Cube ”)titleMapper.GetTextProperty().SetJustificationToCentered()titleActor=vtkActor2D()titleActor.SetMapper( titleMapper)titleActor.GetProperty().SetColor( 1, 1, 0)pc=titleActor.GetPositionCoordinate()pc.SetCoordinateSystemToNormalizedViewport()Pc.SetValue( 0.5, 0.
20、92)ren1.AddProp(titleActor)renWin.Render()運行242D數(shù)據(jù)常用于注記,VTK提供了一些對象,能夠把多個2D 演員和映射器組合成一個2D演員。例如, vtkScalarBarActor 把文本和2D多邊形組合成圖例:scalarBar = vtkScalarBarActor()scalarBar.SetLookupTable( negColor )scalarBar.SetTitle(“Density”)sPC=scalarBar.GetPositionCoordinate()sPC.SetCoordinateSystemToNormalizedView
21、port()sPC.SetValue(0.8, 0.1)ren2.AddProp( scalarBar)renWin.Render()運行25 燈光, 相機VTK應用程序不需要顯式創(chuàng)建vtkLight 或 vtkCamera。如果沒有創(chuàng)建,系統(tǒng)會自動創(chuàng)建。從繪制器可以修改位置、焦點以及視場等。相機包含一些方法,通過它們可調整位置,旋轉等,如Azimuth(),Elevation(),Roll(),Pitch(),and Yaw()。cam=ren2.GetActiveCamera()cam.Azimuth( 20.0)cam.Elevation( 10.0)renWin.Render()運行2
22、6燈光缺省是白光,位置和焦點缺省情況下和相機一致。下例加入第二個光源,綠色。light = vtkLight()light.SetFocalPoint( 0.0, 0.0, 0.0)light.SetPosition( 1.0, 0.0, 0.0)light.SetColor( 0.0, 1.0, 0.0)light.SetIntensity( 0.5)ren2.AddLight(light)renWin.Render()運行27(2) VTK可視化管道VTK 數(shù)據(jù)處理管道把數(shù)據(jù)變換成可由圖形子系統(tǒng)繪制的形式,或 變換成其它形式,以待管道的后續(xù)處理。例如,讀入離散點,通過三角化創(chuàng)建多邊形,使用
23、面繪制顯示mesh面等構成一個數(shù)據(jù)處理管道。管道,也叫做可視化網(wǎng)絡,通過連接處理對象和數(shù)據(jù)對象構成。數(shù)據(jù)對象提供對數(shù)據(jù)的訪問,處理對象操作數(shù)據(jù)對象。在實現(xiàn)上,連接通過 SetInput()/GetOutput()方法實施:aFilter.SetInput(bFilter.GetOutput()Filters創(chuàng)建與它的輸出類型一致的內(nèi)部數(shù)據(jù)對象。只有輸出與輸入類型匹配的連接能夠成立。上例中,bFilter的輸出類型和aFilter的輸入類型必須一致。類型檢查可在編譯時或運行時進行。28一旦管道構建起來,F(xiàn)ilters則只有在內(nèi)部狀態(tài)改變了或它的輸入數(shù)據(jù)改變了才能重新執(zhí)行。VTK 采用分布式隱含更
24、新方法控制管道的運行。每個對西那個管理一個內(nèi)部時間標記,只有過時的對象才能重新運算。 29 數(shù)據(jù)對象:VTK一般把數(shù)據(jù)表示成場數(shù)據(jù),數(shù)據(jù)集是帶有拓撲和幾何結構的數(shù)據(jù)對象。除了結構,數(shù)據(jù)集還附帶有屬性數(shù)據(jù)。屬性數(shù)據(jù)包括:標量,矢量,張量,法向,紋理坐標,以及場數(shù)據(jù)。30 處理對象:VTK提供了數(shù)百個處理對象。其中多數(shù)只處理一種數(shù)據(jù)類型(如圖像處理對象)。一些處理對象如vtkContourFilter 接受一種類型的數(shù)據(jù)輸入,輸出另一種類型的數(shù)據(jù)。處理對象一般被稱為Filters。VTK把處理對象分為三類:源處理對象, 過濾器,和映射器。源處理對象沒有VTK數(shù)據(jù)輸入,但產(chǎn)生一到多個輸出,如讀入器。
25、過濾器接受一到多個輸入,產(chǎn)生一到多個輸出。映射器是管道的終點, 它或者和圖形系統(tǒng)耦合在一起,或者把數(shù)據(jù)寫到磁盤或另一管道。31例子:讀取數(shù)字化的多邊形數(shù)據(jù), 然后簡化,用Laplacian 光滑減少面噪聲,生成面法線,修飾表面:讀多邊形數(shù)據(jù):Reader=vtkBYUReader()Reader.SetGeometry( “fran.g ”)創(chuàng)建管道,由decimator,smoother,和 normal generator組成。Deci=vtkDecimatePro()Deci.SetInput(reader.GetOutput()Deci.SetTargetReduction( 0.9)
26、Deci.PreserveTopologyOn()Smoother=vtkSmoothPolyDataFilter()Smoother.SetInput(deci.GetOutput()32Normals=vtkPolyDataNormals()Normals.SetInput(smoother.GetOutput()Normals.SetFeatureAngle( 60 )mapper = vtkPolyDataMapper()Mapper.SetInput(normals.GetOutput()fran = vtkActor()Fran.SetMapper(mapper)Fran.GetP
27、roperty().SetColor( 1, 0.49, 0.25)ptMask = vtkMaskPoints()ptMask.SetInput(normals.GetOutput()ptMask.SetOnRatio( 10)ptMask.RandomModeOn()cone = vtkConeSource()Cone.SetResolution( 6)33Transform=vtkTransform()Transform.Translate( 0.5, 0.0, 0.0)transformF =vtkTransformPolyDataFilter()transformF.SetInput
28、(cone.GetOutput()transformF.SetTransform( transform )Glyph.vtkGlyph3D()Glyph.SetInput(ptMask.GetOutput()Glyph.SetSource(transformF.GetOutput()Glyph.SetVectorModeToUseNormal()Glyph.SetScaleModeToScaleByVector()Glyph.SetScaleFactor(0.004)spikeMapper = vtkPolyDataMapper()spikeMapper.SetInput(glyph.GetOutput()spikeActor = vtkActor()spikeActor.SetMapper(spikeMapper)spikeActor.GetProperty().SetColor( 0, .79, .34)34ren3 =vtkRenderer()renWin2=vtkRenderWindow()renWin2.AddRenderer( re
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 賣屋抵押合同范例
- 2025湖南省安全員-C證考試(專職安全員)題庫及答案
- 2025吉林省建筑安全員-C證考試題庫
- 周口水池止水螺栓施工方案
- 2025年河南省安全員考試題庫
- 巖棉板活動板房施工方案
- 勞務施工合同范本
- 醫(yī)療軟件合同范本
- 廠家招倉庫合作合同范本
- 醫(yī)院編內(nèi)編外 合同范本
- 五年級下冊數(shù)學課內(nèi)每日計算小紙條
- 《傳染病病人的護理》課件
- 2024年度中國寵物行業(yè)研究報告
- 工業(yè)自動化控制系統(tǒng)升級與維護服務合同
- 定崗定編定員實施方案(5篇)
- 藥品經(jīng)營質量管理規(guī)范
- 爆破工程師培訓
- 2024年云南省公務員考試《行測》真題及答案解析
- 教科版初中物理八年級下冊知識梳理
- 《飛科電器公司盈利能力存在的問題及完善對策(7800字論文)》
- 零星維修工程項目施工方案1
評論
0/150
提交評論