- 积分
- 12
- 注册时间
- 2008-1-3
- 仿真币
-
- 最后登录
- 1970-1-1
|
本帖最后由 xiezhh 于 2009-2-25 09:41 编辑
用平面从不同方向截马鞍面,观察交线形状,从而更清楚的了解马鞍面。生成的动画比较大,就不上传了。
这是原创,我在2008a中已测试过。
%平面截双曲抛物面(马鞍面)
clear
clc
mov=avifile('平面截双曲抛物面(马鞍面).avi','fps',3);
a=4;
b=4;
X=linspace(-12,12,30);
Y=linspace(-12,12,30);
[X,Y]=meshgrid(X,Y);
Z=X.^2/a^2-Y.^2/b^2;
figure(1)
surf(X,Y,Z)
T=[ 1.1832 -0.8084 0 -0.1874
0.1903 0.4799 0.9511 -0.8106
0.5858 1.4770 -0.3090 11.2109
0 0 0 1.0000];
view(T)
hold on
quiver3(0,0,0,-1,0,0,20,'k','filled','LineWidth',2);
quiver3(0,0,0,0,-1,0,30,'k','filled','LineWidth',2);
quiver3(0,0,0,0,0,1,15,'k','filled','LineWidth',2);
text(0,-2,15,'Z')
text(0,-30,1,'Y')
text(-20,0,1.5,'X')
axis equal
axis off
%colormap gray
[X,Y]=meshgrid(-13:0.5:13,-13:0.5:13);
Z=-9*ones(size(X));
h=surf(X,Y,Z);
shading interp
alpha(0.6);
%axis([-17,17,-17,17,-10,10])
title('平面截双曲抛物面(马鞍面)的演示动画')
h1=plot3(0,-12,-9,'-k');
h2=plot3(0,12,-9,'-k');
x=-12:0.5:12;
for z=-9:0.1:0
set(h, 'xdata' ,X, 'ydata' ,Y, 'zdata' ,z*ones(size(X)));
xx=x;
zz=z*ones(size(xx));
yy1=-b*sqrt(xx.^2/a^2-zz);
yy2=b*sqrt(xx.^2/a^2-zz);
set(h1, 'xdata' ,xx, 'ydata' ,yy1, 'zdata' ,zz);
set(h2, 'xdata' ,xx, 'ydata' ,yy2, 'zdata' ,zz);
drawnow; % 刷新屏幕
pause(0.05)
f=getframe(gcf);
mov=addframe(mov,f);
end
for z=0:0.1:9
set(h, 'xdata' ,X, 'ydata' ,Y, 'zdata' ,z*ones(size(X)));
yy=x;
zz=z*ones(size(yy));
xx1=-a*sqrt(yy.^2/b^2+zz);
xx2=a*sqrt(yy.^2/b^2+zz);
set(h1, 'xdata' ,xx1, 'ydata' ,yy, 'zdata' ,zz);
set(h2, 'xdata' ,xx2, 'ydata' ,yy, 'zdata' ,zz);
drawnow; % 刷新屏幕
pause(0.05)
f=getframe(gcf);
mov=addframe(mov,f);
end
delete(h2);
delete(h);
[X,Z]=meshgrid(-13:0.5:13,-9:0.5:9);
Y=-12*ones(size(X));
h=surf(X,Y,Z);
shading interp
alpha(0.6);
xx=-12:0.1:12;
for y=-12:0.1:12
set(h, 'xdata' ,X, 'ydata' ,y*ones(size(X)), 'zdata' ,Z);
yy=y*ones(size(xx));
zz=xx.^2/a^2-yy.^2/b^2;
set(h1, 'xdata' ,xx, 'ydata' ,yy, 'zdata' ,zz);
drawnow; % 刷新屏幕
pause(0.05)
f=getframe(gcf);
mov=addframe(mov,f);
end
delete(h);
[Y,Z]=meshgrid(-13:0.5:13,-9:0.5:9);
X=-12*ones(size(Y));
h=surf(X,Y,Z);
shading interp
alpha(0.6);
yy=-12:0.1:12;
for x=-12:0.1:12
set(h, 'xdata' ,x*ones(size(Y)), 'ydata' ,Y, 'zdata' ,Z);
xx=x*ones(size(yy));
zz=xx.^2/a^2-yy.^2/b^2;
set(h1, 'xdata' ,xx, 'ydata' ,yy, 'zdata' ,zz);
drawnow; % 刷新屏幕
pause(0.05)
f=getframe(gcf);
mov=addframe(mov,f);
end
delete(h1);
delete(h);
hold off
mov=close(mov); |
评分
-
2
查看全部评分
-
|