⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 表面图形.m

📁 包括表面图形等matlab函数
💻 M
字号:
% 实例23:视角的调整

function shili23
h0=figure('toolbar','none',...
    'position',[200 150 450 350],...
    'name','实例23');
x=-5:0.5:5;
[x,y]=meshgrid(x);
r=sqrt(x.^2+y.^2)+eps;
z=sin(r)./r;
subplot(2,2,1)
surf(x,y,z)
xlabel('X-axis')
ylabel('Y-axis')
zlabel('Z-axis')
title('Figure1')
view(-37.5,30)

subplot(2,2,2)
surf(x,y,z)
xlabel('X-axis')
ylabel('Y-axis')
zlabel('Z-axis')
title('Figure2')
view(-37.5+90,30)

subplot(2,2,3)
surf(x,y,z)
xlabel('X-axis')
ylabel('Y-axis')
zlabel('Z-axis')
title('Figure3')
view(-37.5,60)

subplot(2,2,4)
surf(x,y,z)
xlabel('X-axis')
ylabel('Y-axis')
zlabel('Z-axis')
title('Figure4')
view(180,0)

% 实例24:向量场的绘制

function shili24
h0=figure('toolbar','none',...
    'position',[200 150 450 350],...
    'name','实例24');
subplot(2,2,1)
z=peaks;
ribbon(z)
title('Figure1')

subplot(2,2,2)
[x,y,z]=peaks(15);
[dx,dy]=gradient(z,0.5,0.5);
contour(x,y,z,10)
hold on
quiver(x,y,dx,dy)
hold off
title('Figure2')

subplot(2,2,3)
[x,y,z]=peaks(15);
[nx,ny,nz]=surfnorm(x,y,z);
surf(x,y,z)
hold on
quiver3(x,y,z,nx,ny,nz)
hold off
title('Figure3')

subplot(2,2,4)
x=rand(3,5);
y=rand(3,5);
z=rand(3,5);
c=rand(3,5);
fill3(x,y,z,c)
grid on
title('Figure4')

% 实例25:灯光定位

function shili25
h0=figure('toolbar','none',...
    'position',[200 150 450 250],...
    'name','实例25');
vert=[1 1 1;1 2 1;
    2 2 1;2 1 1;
    1 1 2;1 2 2;
    2 2 2;2 1 2];
fac=[1 2 3 4;2 6 7 3;
    4 3 7 8;1 5 8 4;
    1 2 6 5;5 6 7 8];
grid off
sphere(36)
h=findobj('type','surface');
set(h,'facelighting','phong',...
    'facecolor',...
    'interp',...
    'edgecolor',[0.4 0.4 0.4],...
    'backfacelighting',...
    'lit')
hold on
patch('faces',fac,'vertices',vert,...
    'facecolor','y');
light('position',[1 3 2]);
light('position',[-3 -1 3]);
material shiny
axis vis3d off
hold off

% 实例26:柱状图

function shili26
h0=figure('toolbar','none',...
    'position',[200 50 450 450],...
    'name','实例26');
subplot(2,1,1)
x=[5 2 1
    8 7 3
    9 8 6
    5 5 5
    4 3 2];
bar(x)
xlabel('X轴');
ylabel('Y轴');
title('第一子图');

subplot(2,1,2)
y=[5 2 1
    8 7 3
    9 8 6
    5 5 5
    4 3 2];
barh(y)
xlabel('X轴');
ylabel('Y轴');
title('第二子图');

% 实例27:设置照明方式

function shili27
h0=figure('toolbar','none',...
    'position',[200 150 450 350],...
    'name','实例27');
subplot(2,2,1)
sphere
shading flat
camlight left
camlight right
lighting flat
colorbar
axis off
title('Figure1')

subplot(2,2,2)
sphere
shading flat
camlight left
camlight right
lighting gouraud
colorbar
axis off
title('Figure2')

subplot(2,2,3)
sphere
shading interp
camlight right
camlight left
lighting phong
colorbar
axis off
title('Figure3')

subplot(2,2,4)
sphere
shading flat
camlight left
camlight right
lighting none
colorbar
axis off
title('Figure4')

% 实例28:羽状图

function shili28
h0=figure('toolbar','none',...
    'position',[200 150 450 350],...
    'name','实例28');
subplot(2,1,1)
alpha=90:-10:0;
r=ones(size(alpha));
m=alpha*pi/180;
n=r*10;
[u,v]=pol2cart(m,n);
feather(u,v)
title('羽状图')
axis([0 20 0 10])

subplot(2,1,2)
t=0:0.5:10;
x=0.05+i;
y=exp(-x*t);
feather(y)
title('复数矩阵的羽状图')

% 实例29:立体透视(1)

function shili29
h0=figure('toolbar','none',...
    'position',[200 150 450 250],...
    'name','实例29');
[x,y,z]=meshgrid(-2:0.1:2,...
    -2:0.1:2,...
    -2:0.1:2);
v=x.*exp(-x.^2-y.^2-z.^2);
grid on
for i=-2:0.5:2;
    h1=surf(linspace(-2,2,20),...
        linspace(-2,2,20),...
        zeros(20)+i);
    rotate(h1,[1 -1 1],30)
    dx=get(h1,'xdata');
    dy=get(h1,'ydata');
    dz=get(h1,'zdata');
    delete(h1)
    slice(x,y,z,v,[-2 2],2,-2)
    hold on
    slice(x,y,z,v,dx,dy,dz)
    hold off
    axis tight
    view(-5,10)
    drawnow
end

% 实例30:立体透视(2)

function shili30
h0=figure('toolbar','none',...
    'position',[200 150 450 250],...
    'name','实例30');
[x,y,z]=meshgrid(-2:0.1:2,...
    -2:0.1:2,...
    -2:0.1:2);
v=x.*exp(-x.^2-y.^2-z.^2);
[dx,dy,dz]=cylinder;
slice(x,y,z,v,[-2 2],2,-2)
for i=-2:0.2:2
    h=surface(dx+i,dy,dz);
    rotate(h,[1 0 0],90)
    xp=get(h,'xdata');
    yp=get(h,'ydata');
    zp=get(h,'zdata');
    delete(h)
    hold on
    hs=slice(x,y,z,v,xp,yp,zp);
    axis tight
    xlim([-3 3])
    view(-10,35)
    drawnow
    delete(hs)
    hold off
end

% 实例31:表面图形

function shili31
h0=figure('toolbar','none',...
    'position',[200 150 550 250],...
    'name','实例31');
subplot(1,2,1)
x=rand(100,1)*16-8;
y=rand(100,1)*16-8;
r=sqrt(x.^2+y.^2)+eps;
z=sin(r)./r;
xlin=linspace(min(x),max(x),33);
ylin=linspace(min(y),max(y),33);
[X,Y]=meshgrid(xlin,ylin);
Z=griddata(x,y,z,X,Y,'cubic');
mesh(X,Y,Z)
axis tight
hold on
plot3(x,y,z,'.','Markersize',20)

subplot(1,2,2)
k=5;
n=2^k-1;
theta=pi*(-n:2:n)/n;
phi=(pi/2)*(-n:2:n)'/n;
X=cos(phi)*cos(theta);
Y=cos(phi)*sin(theta);
Z=sin(phi)*ones(size(theta));
colormap([0 0 0;1 1 1])
C=hadamard(2^k);
surf(X,Y,Z,C)
axis square

% 实例32:沿曲线移动的小球

h0=figure('toolbar','none',...
    'position',[198 56 408 468],...
    'name','实例32');
h1=axes('parent',h0,...
    'position',[0.15 0.45 0.7 0.5],...
    'visible','on');
t=0:pi/24:4*pi;
y=sin(t);
plot(t,y,'b')
n=length(t);
h=line('color',[0 0.5 0.5],...
    'linestyle','.',...
    'markersize',25,...
    'erasemode','xor');
k1=uicontrol('parent',h0,...
    'style','pushbutton',...
    'position',[80 100 50 30],...
    'string','开始',...
    'callback',[...
        'i=1;',...
        'k=1;,',...
        'm=0;,',...
        'while 1,',...
        'if k==0,',...
        'break,',...
        'end,',...
        'if k~=0,',...
        'set(h,''xdata'',t(i),''ydata'',y(i)),',...
        'drawnow;,',...
        'i=i+1;,',...
        'if i>n,',...
        'm=m+1;,',...
        'i=1;,',...
        'end,',...
        'end,',...
        'end']);
k2=uicontrol('parent',h0,...
    'style','pushbutton',...
    'position',[180 100 50 30],...
    'string','停止',...
    'callback',[...
        'k=0;,',...
        'set(e1,''string'',m),',...
        'p=get(h,''xdata'');,',...
        'q=get(h,''ydata'');,',...        
        'set(e2,''string'',p);,',...
        'set(e3,''string'',q)']);
k3=uicontrol('parent',h0,...
    'style','pushbutton',...
    'position',[280 100 50 30],...
    'string','关闭',...
    'callback','close');
e1=uicontrol('parent',h0,...
    'style','edit',...
    'position',[60 30 60 20]);
t1=uicontrol('parent',h0,...
    'style','text',...
    'string','循环次数',...
    'position',[60 50 60 20]);
e2=uicontrol('parent',h0,...
    'style','edit',...
    'position',[180 30 50 20]);
t2=uicontrol('parent',h0,...
    'style','text',...
    'string','终点的X坐标值',...
    'position',[155 50 100 20]);
e3=uicontrol('parent',h0,...
    'style','edit',...
    'position',[300 30 50 20]);
t3=uicontrol('parent',h0,...
    'style','text',...
    'string','终点的Y坐标值',...
    'position',[275 50 100 20]);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -