三維圖形的繪製?

最常用的三維繪圖有三維曲線圖、三維網絡圖和三維曲面圖這3中基本類型,相應的MATLAB指令分別為plot3、mesh和surf。

方法/步驟

曲線圖繪製:plot3指令使用示例

在命令窗口中輸入以下代碼:

>> theta = 0: 0.01*pi: 2*pi;

>> x = sin(theta);

>> y = cos(theta);

>> z = cos(4*theta);

>> figure

運行結果如下:

三維圖形的繪製

三維圖形的繪製

>> theta = 0: 0.02*pi: 2*pi;

>> x = sin(theta);

>> y = cos(theta);

>> z = cos(4*theta);

>> plot3(x,y,z,'rd','MarkerSize',10,'LineWidth',2)

三維圖形的繪製

網格圖繪製

繪製三維網格圖的過程如下:

(1)確定自變量x和y的取值範圍間隔如下:

x = x1:dx:x2,y = y1:dy:y2

(2)構成xoy平面上的自變量採樣“格點”矩陣:

法1:利用“格點”矩陣原理生成矩陣。

x = x1:dx:x2;y = y1:dy:y2;

X = ones(size(y))*x;

Y = y*ones(size(x));

法2:利用meshgrid指令生成“格點”矩陣。

x = x1:dx:x2;y = y1:dy:y2;

[X,Y] = meshgrid(x,y);

(3)計算在自變量採樣“格點”上的函數值:Z=f(X,Y)。

代碼如下:

>> X = -10:0.1:10;Y = -10:0.1:10;

>> [X,Y] = meshgrid(X,Y);

>> Z = -X.^2 - Y.^2 + 200;

>> mesh(X,Y,Z)

三維圖形的繪製

曲面圖的繪製:surf指令與mesh指令對比

代碼如下:

k = 5;

n = 2^k-1;

[x,y,z] = sphere(n);

c = hadamard(2^k);

figure(1)

surf(z);

figure(2)

surf(x,y,z);

axis equal

figure(3)

surf(x,y,z,c);

colormap([1 1 0; 0 1 1])

axis equal

運行結果如下:

三維圖形的繪製

三維圖形的繪製

三維圖形的繪製

光照模型:帶光照的曲面圖

代碼如下:

>> [X,Y,Z] = peaks(30);

>> subplot(1,2,1);

>> surf(X,Y,Z),colormap(copper),title('Default Lighting'),shading interp

>> subplot(1,2,2);surfl(X,Y,Z,[-90 30],[0.55 0.6 2 10]),shading interp

運行結果如下圖所示:

三維圖形的繪製

繪製等值線圖:contour指令使用實例

代碼如下:

>> [X,Y,Z] = peaks(30);

>> figure;

>> subplot(2,2,1);contour(X,Y,Z);axis square

>> subplot(2,2,2);contour(X,Y,Z,10);axis square

>> subplot(2,2,3);contour(X,Y,Z,-10:1:10);axis square

>> subplot(2,2,4);contour(X,Y,Z,'');axis square

運行結果如下:

三維圖形的繪製

用顏色描述第四維:

代碼如下:

>> [X,Y,Z] = peaks(30);

>> R = sqrt(X.^2+Y.^2);

>> subplot(1,2,1);surf(X,Y,Z,Z);

>> axis tight

>> subplot(1,2,2);surf(X,Y,Z,R);

>> axis tight

運行結果如下:

三維圖形的繪製

相關問題答案