Matlab——圖形繪制——三維立體圖形 剔透玲瓏球 動態圖——彗星狀軌跡圖


三維繪圖函數

三維繪制工具

函數view

 

 

 

實例:三維螺旋線

>> t=0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
grid %添加網格

 

 plot3可以畫出空間中的曲線

>> t=linspace(0,20*pi, 501);
plot3(t.*sin(t), t.*cos(t), t); %注意用點乘 .*

 

也可以同時畫出兩條空間中的曲線

>> t=linspace(0,10*pi,501);
>> plot3(t.*sin(t),t.*cos(t),t,t.*sin(t),t.*cos(t),-t);

正弦曲線圖

x=linspace(0,3*pi); % 0 到 3pi 間100 個數據點
z1=sin(x);
z2=sin(2*x);
z3=sin(3*x);
y1=zeros(100); % 含有100 個數據的 0 數組
y3=zeros(100);
y2=y3/2;
plot3(x,y1,z1,x,y2,z2,x,y3,z3);

 

 立體網狀圖

實例:

>> x=linspace(-2, 2, 25); %在x軸上取25點
y=linspace(-2, 2, 25); %在y軸上取25點
[xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩陣
zz=xx.*exp(-xx.^2-yy.^2); %計算函數值,zz也是21x21的矩陣
mesh(xx, yy, zz); %畫出立體網狀圖

 曲面圖

 

>> x=linspace(-2, 2, 25); %在x軸上取25點
y=linspace(-2, 2, 25); %在y軸上取25點
[xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩陣
zz=xx.*exp(-xx.^2-yy.^2); %計算函數值,zz也是21x21的矩陣
surf(xx, yy, zz);%畫出立體曲面圖

 

 

 peaks函數

>> z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ...
- 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ...
- 1/3*exp(-(x+1).^2 - y.^2);
>> peaks z

 

 

 也可以對peaks函數取點,再以各種不同的方法進行繪圖

meshz 可將曲面加上圍裙

[x,y,z]=peaks;
meshz(x,y,z);

waterfall 可在x 方向或y 方向產生水流效果:

[x,y,z]=peaks;
waterfall(x,y,z);

產生在y方向的水流效果:

[x,y,z]=peaks;
waterfall(x',y',z');

meshc 同時畫出網狀圖與等高線:

[x,y,z]=peaks;
meshc(x,y,z);

surfc 同時畫出曲面圖與等高線:

[x,y,z]=peaks;
surfc(x,y,z);

 

 contour3 畫出曲面在三度空間中的等高線

contour3(peaks, 20);

contour 畫出曲面等高線在XY 平面的投影 

contour(peaks, 20);

 

 

 剔透玲瓏球

[X0,Y0,Z0]=sphere(30); %產生單位球面的三維坐標
X=2*X0;Y=2*Y0;Z=2*Z0; %產生半徑為2 的球面的三維坐標
surf(X0,Y0,Z0); %畫單位球面
shading interp %采用插補明暗處理
hold on; mesh(X,Y,Z);hold off %畫外球面
hidden off %產生透視效果
axis off %不顯示坐標軸

 

 

動態圖形動畫效果——彗星狀軌跡圖

 

R0=1; %以地球半徑為一個單位
a=12*R0;b=9*R0;T0=2*pi; %T0是軌道周期
T=5*T0;dt=pi/100;t=[0:dt:T]';
f=sqrt(a^2-b^2); %地球與另一焦點的距離
th=12.5*pi/180; %衛星軌道與x-y平面的傾角
E=exp(-t/20); %軌道收縮率
x=E.*(a*cos(t)-f);y=E.*(b*cos(th)*sin(t));z=E.*(b*sin(th)*sin(t));
plot3(x,y,z,'g') %畫全程軌線
[X,Y,Z]=sphere(30);X=R0*X;Y=R0*Y;Z=R0*Z; %獲得單位球坐標
grid on,hold on,surf(X,Y,Z),shading interp %畫地球
x1=-18*R0;x2=6*R0;y1=-12*R0;y2=12*R0;z1=-6*R0;z2=6*R0;
axis([x1 x2 y1 y2 z1 z2]) %確定坐標范圍
view([117 37]),comet3(x,y,z,0.02),hold off %設視角、畫運動軌線

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM