- 詳解MATLAB圖像函數及其應用
- 張倩 占君 陳珊編著
- 1861字
- 2018-12-27 18:13:03
2.3 流場圖繪制
流體運動所占據的空間稱為流場。流場圖能以更加立體的方式顯示多維數據之間的內在聯系和變化趨勢。本節介紹了4個流場圖繪制函數。
2.3.1 coneplot——流錐圖
【功能】 繪制流錐圖。
【語法介紹】
● coneplot(X,Y,Z,U,V,W,Cx,Cy,Cz) 用圓錐體繪制速度向量圖,圓錐體指向速度向量的方向,其長度與速度向量的大小成比例。(X(i),Y(i),Z(i))定義三維向量場的坐標;(U(i),V(i),W(i))定義三維向量場。數組X,Y,Z,U,V,W的大小、單調性和三維特征必須相同(如由meshgrid產生);(Cx,Cy,Cz)定義向量場中圓錐體的位置。
● coneplot(U,V,W,Cx,Cy,Cz) 等 價 于 coneplot(X,Y,Z,U,V,W,Cx,Cy,Cz),其 中, [X,Y,Z]=meshgrid(1:n,1:m,1:p),[m,n,p]=size(U)。
● coneplot(...,s) 設定圓錐體的顯示比例s,以使它們能夠匹配圖形的大小。默認值s=1;若s=0,則不自動設置圓錐體的比例。
● coneplot(...,color) 在向量場中進行color數組的插值,然后根據插值確定圓錐體的顏色。數組color的維數必須與數組U,V,W的維數相同。
● coneplot(...,'quiver') 繪制箭頭代替繪制圓錐體。
● coneplot(...,'method') 指定圓錐的位置插值的方法。method取值為linea(r 線性插值)、cubic(三次插值)和nearest(最小距離插值),默認為線性插值。
● coneplot(X,Y,Z,U,V,W,'nointerp') 不將圓錐的位置插值到區域中。
● coneplot(axes_handle,...) 在句柄為axes_handle的軸上繪制流錐圖。
● h=coneplot(...) 返回繪制圓錐體的陰影對象句柄給h。
【實例】 繪制流錐圖。
>> %導入數據 load wind xmin = min(x(:)); xmax = max(x(:)); ymin = min(y(:)); ymax = max(y(:)); zmin = min(z(:)); %繪制流錐圖 daspect([2,2,1]) %設置坐標軸數據比例 xrange = linspace(xmin,xmax,8); yrange = linspace(ymin,ymax,8); zrange = 3:4:15; [cx cy cz]=meshgrid(xrange,yrange,zrange); %生成單調的網格數據 hcones=coneplot(x,y,z,u,v,w,cx,cy,cz,5); %繪制流錐圖,如圖2.93所示

圖2.93 繪制流錐圖
set(hcones,'FaceColor','red','EdgeColor','none') %添加立體邊框 hold on wind_speed = sqrt(u.^2 + v.^2 + w.^2); hsurfaces = slice(x,y,z,wind_speed,[xmin,xmax],ymax,zmin); set(hsurfaces,'FaceColor','interp','EdgeColor','none') hold off %設置坐標軸 axis tight; view(30,40); axis off camproj perspective; camzoom(1.5) %給場景添加燈光 camlight right; lighting phong set(hsurfaces,'AmbientStrength',.6) set(hcones,'DiffuseStrength',.8)
2.3.2 streamline——流線圖
【功能】 繪制流線圖。
【語法介紹】
● streamline(X,Y,Z,U,V,W,startx,starty,startz) 繪制三維數組U,V,W的流線圖。(X,Y,Z)是單調的網格數據(如由 meshgrid 函數生成的數據),表示(U,V,W)的坐標;(startx,starty,startz)定義流線的起點位置。
● streamline(U,V,W,startx,starty,startz) 等價于streamline(X,Y,Z,U,V,W,startx,starty,startz),其中,[X,Y,Z]=meshgrid(1:N,1:M,1:P),[M,N,P]=size(U),即[M,N,P]為U的大小。
● streamline(X,Y,Z) 繪制流線圖。參量X,Y,Z由stream3函數產生(stream3函數用于產生三維流線數據)。
● streamline(X,Y,U,V,startx,starty) 繪制矩陣 U,V 的流線圖。(X,Y)為(U,V)的坐標;(startx,starty)定義流線的起點位置。
● streamline(U,V,startx,starty) 等價于 streamline(X,Y,U,V,startx,starty),其中,[X,Y]=meshgrid(1:N,1:M),[M,N]=size(U),即[M,N]為矩陣U的大小。
● streamline(X,Y) 繪制流線圖。參量X,Y由stream2函數產生(stream2函數用于產生二維流線數據)。
● streamline(...,options) 參量option為繪制流線時所用的選項,為標量或二元向量,當option為標量時,表示流線的步長。當option為二元向量時,表示流線的步長和最大值。
● streamline(axes_handle,...) 在句柄為axes_handle的軸上繪制流線圖。
● h=streamline(...) 返回流線句柄向量h,向量中的每個元素代表一個流線。
【實例】 繪制流線圖。
>>%導入數據 load wind [sx,sy,sz]=meshgrid(80,20:10:50,0:5:15); %生成單調的網格數據 %繪制流線圖,如圖2.94所示 h = streamline(x,y,z,u,v,w,sx,sy,sz); set(h,'Color','red')

圖2.94 繪制流線圖
2.3.3 streamtube——流管圖
【功能】 繪制三維流管圖。
【語法介紹】
● streamtube(X,Y,Z,U,V,W,startx,starty,startz) 繪制三維數組 U,V,W 的流管圖。(X,Y,Z)是單調的網格數據(如由 meshgrid 函數生成的數據),表示(U,V,W) 的坐標;(startx,starty,startz)定義流管的起點位置。
● streamtube(U,V,W,startx,starty,startz) 等價于streamtube (X,Y,Z,U,V,W,startx,starty,startz),其中,[X,Y,Z]=meshgrid(1:N,1:M,1:P),[M,N,P]=size(U),即[M,N,P]為數組U的大小。
● streamtube(vertices,X,Y,Z,divergence) 假設預先計算流管向量和差異。vertices為流管頂點的坐標數組,由stream3函數生成(stream3函數用于產生三維流線數據),X,Y,Z和divergence均為三維數組。
● streamtube(vertices,divergence) 假設定義(U,V,W)的坐標的數據(X,Y,Z)由下面的語句定義:[X,Y,Z]=meshgrid(1:N,1:M,1:P),其中,[M,N,P]=size(divergence),即[M,N,P]為數組divergence的大小。其他參量及結果同上。
● streamtube(vertices,width) 參量width表示圓管的寬度。width與數組vertices同維或width是一個標量。
● streamtube(vertices) 自動選擇圓管的寬度。
● streamtube(...,[scale n]) 按scale參數定義流管的寬度,默認值scale=1。當scale=0時自動定義寬度。n為沿圓管周邊分布的點數,默認值n=20。
● streamtube(axes_handle,...) 在句柄為axes_handle的軸上繪制流管圖。
● h=streamtube(...,z) 返回流管圖表面對象的句柄給向量h。
【實例1】 繪制流管圖。
>> %導入數據 load wind [sx sy sz]=meshgrid(80,20:10:50,0:5:15); %生成單調的網格數據 daspect([1 1 1]) %設置坐標軸數據比例 %繪制流管圖,如圖2.95所示 streamtube(x,y,z,u,v,w,sx,sy,sz); %定義坐標軸和光照 axis tight shading interp; camlight; lighting gouraud

圖2.95 繪制流管圖
【實例2】 繪制流管圖,向量數據由stream3提供。
>> %導入數據 load wind [sx sy sz]=meshgrid(80,20:10:50,0:5:15); %生成單調的網格數據 daspect([1 1 1]) %設置坐標軸數據比例 %生成向量數據 verts = stream3(x,y,z,u,v,w,sx,sy,sz); div = divergence(x,y,z,u,v,w); %繪制流管圖,如圖2.96所示 streamtube(verts,x,y,z,-div); %定義坐標軸和光照 axis tight shading interp camlight lighting gouraud

圖2.96 繪制流管圖,向量數據由stream3提供
2.3.4 streamribbons——流帶圖
【功能】 繪制三維流帶圖。
【語法介紹】
● streamribbon(X,Y,Z,U,V,W,startx,starty,startz) 繪制三維數組 U,V,W 的流帶圖。(X,Y,Z)是單調的網格數據(如由 meshgrid 函數生成的數據),表示(U,V,W)的坐標;(startx,starty,startz)定義流帶的起點位置。
● streamribbon(U,V,W,startx,starty,startz) 等價于 streamribbon(X,Y,Z,U,V,W,startx,starty, startz),其中,[X,Y,Z]=meshgrid(1:N,1:M,1:P),[M,N,P]=size(U),即[M,N,P]為矩陣U的大小。
● streamribbon(vertices,X,Y,Z,cav,speed) 假設預先計算流帶方向數組 vertices、卷曲角速率cav和流速speed。參量vertices通常由stream3函數生成(stream3函數用于產生三維流線數據)。X,Y,Z,cav和speed均為三維數組。
● streamribbon(vertices,cav,speed) 假設定義(U,V,W)的坐標的數據(X,Y,Z)由下面的語句定義:[X,Y,Z]=meshgrid(1:N,1:M,1:P),其中,[M,N,P]=size(cav)。
● streamribbon(vertices,twistangle) 定義流帶的扭曲方向數組 twistangle。vertices 和twistangle維數相同。
● streamribbon(...,width) 設置流帶的寬度為width。
● streamribbon(axes_handle,...) 在句柄為axes_handle的軸上繪制流帶圖。
● h=streamribbon(...) 返回流帶圖表面對象的句柄給向量h。
【實例】 繪制流帶圖。
>> %導入數據 load wind [sx sy sz]=meshgrid(80,20:10:50,0:5:15); %生成單調的網格數據 daspect([1 1 1]) %設置坐標軸數據比例 %繪制流帶圖,如圖2.97所示 streamribbon(x,y,z,u,v,w,sx,sy,sz); % 定義坐標軸和光照 axis tight shading interp; camlight; lighting gouraud

圖2.97 繪制流帶圖
- UG NX10.0從新手到高手
- AutoCAD 2018實用教程(第5版)
- 中文版3ds Max 2012實用教程(第2版)
- 板繪教室:SAI零基礎日系動漫插畫入門教程
- Maya 2020 超級學習手冊
- SVG動畫
- Mastering Zabbix
- PPT設計與制作實戰教程
- WordPress MU 2.8: Beginner's Guide
- Python氣象應用編程
- MooTools 1.2 Beginner's Guide
- Web Host Manager Administration Guide
- 夢幻森林Procreate童話風插畫繪制專業技法
- 傳奇:ZBrush數字雕刻大師之路(第2版)
- 技藝非凡Photoshop+SAI繪畫創作技法揭秘