图5.3-8 镂方孔的曲面
【例5.3-8】
clf,x=[-8:0.1:8];y=x;[X,Y]=meshgrid(x,y);ZZ=X.^2-Y.^2; ii=find(abs(X)>6|abs(Y)>6); ZZ(ii)=zeros(size(ii));
surf(X,Y,ZZ),shading interp;colormap(copper) light('position',[0,-15,1]);lighting phong material([0.8,0.8,0.5,10,0.5])
图5.3-9 经裁切处理后的图形
5.4
5.4.1
高维可视化
二维半图指令pcolor, contour, contourf
【例5.4-1】
clf;clear;[X,Y,Z]=peaks(40); n=6; subplot(1,2,1), pcolor(X,Y,Z) shading interp
zmax=max(max(Z));zmin=min(min(Z)); caxis([zmin,zmax]) colorbar hold on
C=contour(X,Y,Z,n,'k:'); clabel(C) hold off
subplot(1,2,2)
[C,h]=contourf(X,Y,Z,n,'k:'); clabel(C,h) colormap(cool) set(gcf,'Color','w')
16
5.963.88-2.38-0.2931.79-4.46-2.38-0.2931.79图 5.4-1 “二维半”指令的演示
5.4.2
【例5.4-2】
四维表现
clf
x=3*pi*(-1:1/15:1);y=x;[X,Y]=meshgrid(x,y); R=sqrt(X.^2+Y.^2)+eps;Z=sin(R)./R; [dzdx,dzdy]=gradient(Z);
dzdr=sqrt(dzdx.^2+dzdy.^2); dz2=del2(Z); subplot(1,2,1),surf(X,Y,Z,abs(dzdr)) shading faceted;
colorbar('SouthOutside') brighten(0.6); colormap hsv
title('No. 1 surf(X,Y,Z,abs(dzdr))') subplot(1,2,2);surf(X,Y,Z,abs(dz2)) shading faceted
colorbar('NorthOutside')
title('No. 2 surf(X,Y,Z,abs(dz2))')
17
图 5.4-2 色彩分别表现函数的径向导数和曲率特征
【例5.4-3】
clf
[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-2:.16:2); v =x.*exp(-x.^2-y.^2-z.^2);
xs = [-0.7,0.7]; ys = 0; zs =0; slice(x,y,z,v,xs,ys,zs) colorbar
shading interp colormap hsv
xlabel('x'),ylabel('y'),zlabel('z') title('The color-to-v(x,y,z) mapping') view([-22,39]) alpha(0.3)
图 5.4-3 切片图
18
【例 5.4-4】
shg;n=2;t=n*pi*(0:0.000005:1);x=sin(t);y=cos(t); plot(x,y,'g');axis square hold on
comet(x,y,0.0001) hold off
图5.4-4 用于色图变幻演示的图形
【例 5.4-5】
ezsurf('x*y','circ');shading flat;view([-18,28]) C=summer; CC=[C;flipud( C )]; colormap(CC) spinmap(30,4)
【例5.4-6】 (1)
clf
x=3*pi*(-1:0.05:1);y=x;[X,Y]=meshgrid(x,y); R=sqrt(X.^2+Y.^2)+eps; Z=sin(R)./R; h=surf(X,Y,Z);colormap(jet);axis off n=12;mmm=moviein(n); for i=1:n rotate(h,[0 0 1],25); mmm(:,i)=getframe; end close
(2)
shg,axis off
movie(mmm,5,10)
【例 5.4-7】 (1)
t1=(0:1000)/1000*10*pi;x1=cos(t1);y1=sin(t1);z1=-t1;
t2=(0:10)/10;x2=x1(end)*(1-t2);y2=y1(end)*(1-t2);z2=z1(end)*ones(size(x2)); t3=t2;z3=(1-t3)*z1(end);x3=zeros(size(z3));y3=x3; t4=t2;x4=t4;y4=zeros(size(x4));z4=y4; x=[x1 x2 x3 x4]; n=length(x);
if nargin<2
19
ki=fix(n/2); end
y=[y1 y2 y3 y4];z=[z1 z2 z3 z4]; shg
plot3(x,y,z,'Color',[1,0.6,0.4],'LineWidth',2.5) axis off
h=line('xdata',x(1),'ydata',y(1),'zdata',z(1),'Color',[1 0 0],'Marker', '.',
'MarkerSize',40,'EraseMode','xor'); KK=K*n;
text(-1,-0.85,-36,'倒计数') KK=KK-1;
htext=text(-1,-1,-40,int2str(KK)); %
i=2;j=1;
while 1 set(h,'xdata',x(i),'ydata',y(i),'zdata',z(i));
drawnow; % <23> pause(0.0005) %
i=i+1;
KK=KK-1;
set(htext,'string',int2str(KK)) % <27> if nargin==2 && nargout==1 %
if(i==ki&&j==1);f=getframe(gcf);end %
<29>
end if i>n
i=1;j=j+1;
if j>K;break;end end end
(2)
shg
K=2;f=anim_zzy1(2,450);
(3)
image(f.cdata),axis off
图5.4-5 红球沿下旋螺线运动的瞬间照片
20
<24>