matlab學習筆記8 基本繪圖命令-三維繪圖

一塊兒來學matlab-matlab學習筆記8

基本繪圖命令_6 三維繪圖

以爲有用的話,歡迎一塊兒討論相互學習~Follow Me

參考書籍
《matlab 程序設計與綜合應用》張德豐等著 感謝張老師的書籍,讓我領略到matlab的便捷
《MATLAB技術大全》葛超等編著 感謝葛老師的書籍,讓我領略到matlab的高效git

三維繪圖命令

三維繪圖命令plot3

  • plot3命令將繪製二維圖形的函數plot的特性擴展到三維空間圖形。函數格式除了包括第三維的信息(如Z方向)以外,與二維函數plot相同。其調用格式以下。
    • plot3(x,y,z):當x,y和z是相同的向量時,則繪製以x,y和z元素爲座標的三維曲線;當x,y和z是同型矩陣時,則繪製以x,y和z元素爲座標的三維曲線,且曲線的條數等於矩陣的列數。
    • plot3(x,y,z,'s'):s是指定繪製三維曲線的線型、數據點形和顏色的字符串,省略s時,將自動選擇線型、數據點形和顏色。
  • 使用plot3繪製三維螺旋曲線圖
t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t,'g*')
grid

在這裏插入圖片描述

繪製空間曲面

  • 三維空間曲面能夠繪製出在某一區間內完整的曲面,而不是單根曲線。三維網格圖是將鄰近的網格頂點(x,Y)對應曲面上的點(X,Y,Z)用線條鏈接起來造成的。利用mesh和surf繪製三維網線圖和曲面圖。其中mesh(X,Y,Z)是繪製網格曲面,surf(X,Y,Z)是繪製光滑曲面。
    • mesh(x,y,z,c):繪製由x、y和z指定的參數曲面。x和y必須爲向量。若x和y的長度爲m和n,則z必須爲m×n的矩陣,c是顏色映射數組,決定圖形的顏色。
    • mesh(z)和mesh(x,y,z):繪製三維網格圖。當只有參數z時,以z矩陣的行下標做爲x座標軸,把z的列下標看成座標軸;x和y分別爲x和y座標軸的自變量。當有x,y和z參數時,繪製出由座標(x,y,z)肯定的三維網格圖形
    • surf(x,y,z,c):完整地畫出由c指定用色的曲面圖,在完整調用格式中,4個輸入量必須是維數相同的矩陣。它們要求x和y是自變量「格點」矩陣;z是格點上的函數矩陣;c是指定各點用色的矩陣,能夠默認。默認時,默認着色矩陣是z,即c=z。
  • 畫三維函數立體網狀圖
x=linspace(-2, 2, 20);      % 在x軸上取20點
y=linspace(-2, 2, 20);      %在y軸上取20點
[xx,yy]=meshgrid(x, y);     % xx和yy都是21x21的矩陣
zz=xx.*exp(-xx.^2-yy.^2);   % 計算函數值,zz也是21x21的矩陣
mesh(xx, yy, zz);          % 畫出立體網狀圖

在這裏插入圖片描述

  • 使用surf命令將以上立體網格圖改成三維曲面圖
x=linspace(-2, 2, 20);      % 在x軸上取20點
y=linspace(-2, 2, 20);      %在y軸上取20點
[xx,yy]=meshgrid(x, y);     % xx和yy都是21x21的矩陣
zz=xx.*exp(-xx.^2-yy.^2);   % 計算函數值,zz也是21x21的矩陣
surf(xx, yy, zz);          % 畫出立體曲面圖

在這裏插入圖片描述

高級三維繪圖改進命令

在這裏插入圖片描述

peaks % 最原始版本圖形 F1
[x,y,z]=peaks;
figure;
meshz(x,y,z);  % 畫上一個參考平面 F2
figure;
waterfall(x,y,z); % 瀑布流水形狀網線圖 F3
figure;
meshc(x,y,z); % 網格線和等高線 F4
figure;
surfc(x,y,z); % 同時畫出曲面圖和等高線圖 F5
  • F1
    在這裏插入圖片描述
  • F2
    在這裏插入圖片描述
  • F3
    在這裏插入圖片描述
  • F4
    在這裏插入圖片描述
  • F5
    在這裏插入圖片描述

高級三維繪圖改進命令

在這裏插入圖片描述

p=peaks;    %peaks 爲系統提供的多峯函數
subplot(2,2,1);
mesh(peaks,p);
view(-37.5,30);  %指定子圖 1 的視點
title('azimuth=-37.5,elevation=30');
subplot(2,2,2);
mesh(peaks,p);
view(-17,60);   %指定子圖 2的視點
title('azimuth=-17,elevation=60');
subplot(2,2,3);
mesh(peaks,p);
view(-90,0);    %指定子圖 3 的視點
title('azimuth=-90,elevation=0');
subplot(2,2,4);
mesh(peaks,p);
view(-7,-10);    %指定子圖 4的視點
title('azimuth=-7,elevation=10')

在這裏插入圖片描述

三維圖形的光照控制

在這裏插入圖片描述

x= -1.5:0.2:1.5;y=-1:0.2:1;
[X,Y]=meshgrid(x,y);
Z=sqrt(4-X.^2/9-Y.^2/4);
view(45,45)
subplot(2,2,1);surfl(X,Y,Z, [0,45],[.1  .6  .4  10]);
shading interp
subplot(2,2,2);surfl(X,Y,Z, [20,45],[.3  .6  .4  10]);
shading interp
subplot(2,2,3);surfl(X,Y,Z, [40,45],[.6  .6  .4  10]);
shading interp
subplot(2,2,4);surfl(X,Y,Z, [60,45],[.9  .6  .4  10]);  
shading interp

在這裏插入圖片描述

  • matlab提供了燈光設置的函數,其調用格式爲: light('Color',選項1,'Style',選項2,'Position',選項3)
[x,y,z]=sphere(20);
subplot(1,2,1);
surf(x,y,z);

在這裏插入圖片描述

[x,y,z]=sphere(20);
subplot(1,2,1);
surf(x,y,z);
axis equal; % 橫軸縱軸的座標定標係數設爲相同值

在這裏插入圖片描述

[x,y,z]=sphere(20);
subplot(1,2,1);
surf(x,y,z);
axis equal; % 橫軸縱軸的座標定標係數設爲相同值
light('Posi',[1,1,1]);

在這裏插入圖片描述

[x,y,z]=sphere(20);
subplot(1,2,1);
surf(x,y,z);
axis equal; % 橫軸縱軸的座標定標係數設爲相同值
light('Posi',[-1,-1,0]);

在這裏插入圖片描述

  • 光滑表示
[x,y,z]=sphere(20);
subplot(1,2,1);
surf(x,y,z);
axis equal; % 橫軸縱軸的座標定標係數設爲相同值
light('Posi',[-1,-1,0]);
shading interp;

在這裏插入圖片描述

  • 三維點圖
plot3(0,1,1,'*');
text(0,1,1,' light');

在這裏插入圖片描述

  • 三維圖片拼接
    在這裏插入圖片描述
[x,y,z]=sphere(20);
subplot(1,2,1);
surf(x,y,z);
axis equal; % 橫軸縱軸的座標定標係數設爲相同值
light('Posi',[-1,-1,0]); % 燈光位置
shading interp; % 光滑
hold on;
plot3(0,1,1,'p');
text(0,1,1,' light');
subplot(1,2,2);
surf(x,y,z);
axis equal;
light('Posi',[1,0,1]); % 燈光位置
shading interp; % 光滑
hold on;
plot3(1,0,1,'p');
text(1,0,1,' light');

柱面和球面的表達

  1. 繪製柱面的cylinder命令:[X,Y,Z]=cylinder(r,n)表示生成半徑爲r,高度爲1的矩陣x,y,z,利用這三個矩陣能夠繪製出半徑爲r,高度爲1的柱體,圓柱體的圓周有指定的n個距離相同的點。
figure
subplot(2,2,1)
[x,y,z]=cylinder(3,2)
surf(x,y,z)
subplot(2,2,2)
[x,y,z]=cylinder(3,3)
surf(x,y,z)
subplot(2,2,3)
[x,y,z]=cylinder(3,4)
surf(x,y,z)
subplot(2,2,4)
t=0:pi/10:2*pi;
[X,Y,Z]=cylinder(2+cos(t),30);
surf(X,Y,Z)

在這裏插入圖片描述

  1. 繪製球面的sphere命令:[x,y,z]=sphere(n)表示生成三個階數爲(n+1) * (n+1) 的矩陣x,y,z,利用這是三個矩陣能夠繪製出圓心位於原點,半徑爲1的單位球體。
figure
subplot(2,2,1)
[x,y,z]=sphere(100)
surf(x,y,z)
subplot(2,2,2)
[x,y,z]=sphere(100)
plot3(x,y,z)
subplot(2,2,3)
[x,y,z]=sphere(100)
surfl(x,y,z)
subplot(2,2,4)
[x,y,z]=sphere(100)
mesh(x,y,z)

在這裏插入圖片描述

相關文章
相關標籤/搜索