作业帮 > 数学 > 作业

维维安尼体绘图function vivana(dt)if nargin==0,dt=10;endtheta=(-180:

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/05/03 02:31:19
维维安尼体绘图
function vivana(dt)
if nargin==0,dt=10;end
theta=(-180:5:180)*pi/180;
fai=(-90:5:90)*pi/180;
X=cos(theta)'*cos(fai);
Y=cos(theta)'*sin(fai);
Z=sin(theta)'*ones(size(fai));
colormap([0 0 1])
mesh(X,Y,Z),axis off
view(150,24)
hold on
theta=(360:-dt:0)'*pi/180;
x=.5*cos(theta)+.5;
y=.5*sin(theta);
U=[x;x];V=[y;y];
E=ones(size(x));
W=[-E;1.2*E];
for p=10:fix(360/dt)+1
II=1:p;
u=U(:,II);
v=V(:,II);
w=W(:,II);
mesh(u,v,w),pause(.5)
end
出错提醒:Index exceeds matrix dimensions.
Error in ==> vivana at 21
u=U(:,II);
----
本来是要画维维安尼体,结果只画个球.另
function vivana
theta=(360:-10:0)'*pi/180;
x1=.5*cos(theta)+.5;
y1=.5*sin(theta);
x2=cos(theta);
y2=sin(theta);
t=linspace(0,1,11);
x=x1*t+x2*(1-t);
y=y1*t+y2*(1-t);
z=sqrt(1+eps-x.^2-y.^2);
X=[x;x];Y=[y;y];Z=[z;-z];
mesh(X,Y,Z),hold on
colormap([0 0 1])
z1=sqrt(1+eps-x1.^2-y1.^2);
X1=[x1;x1];Y=[y1;y1];Z=[z1;-z1];
mesh(X1.Y1,Z1)
axis off
view(130,30)
以上显示维维安尼体是直径为1的如果直径为2的怎改,想把缺口转到外面怎改.
你的我没有看懂,我的是这样画的
R=2;
a=linspace(-pi,pi,80);
r=linspace(0,R,10)';
x=0.5*r*(1+cos(a));
y=0.5*r*sin(a);
z=sqrt(R^2-x.*x-y.*y);
mesh(x,y,z)
colormap([0,0,1])
hold on;
mesh(x,y,-z)
colormap([0,0,1])
hold on;
x1=0.5*R*(1+cos(a));
y1=0.5*R*sin(a);
X1=[x1;x1];
Y1=[y1;y1];
z1=[-1;1]*sqrt(R^2-x1.*x1-y1.*y1);
mesh(X1,Y1,z1)