matlab问题,语句不用太多,较简单,我是新手,求教。

使用editor区域,建立.m文件,画出一个具有25*25个小平面的surf格式的有颜色的球面,及其在x-z平面、x-y平面的投影,以及球面以x轴为轴线旋转30°的图像;以y轴为轴线旋转45°的图像。画在一个图像内。

%画球

[alpha,beta]=meshgrid(0:2*pi/25:2*pi);

r=3;

center=[4 5 6];

x=r*sin(beta).*cos(alpha)+center(1);

y=r*sin(beta).*sin(alpha)+center(2);

z=r*cos(beta)+center(3);

surf(x,y,z)

xlabel('x');ylabel('y');zlabel('z');

hold on


%画投影

surf(x,y,zeros(size(z)));%xy上的投影

surf(x,zeros(size(y)),z,zeros(26,26));


%计算旋转后的球心,画出旋转后的球

%绕y轴旋转,只是球心变了,相当于以(0,y,0)为球心,y为原来球心的y坐标,sqrt(x^2+y^2)

%为半径旋转相应的角度,因此绕y轴旋转45°后的球心位置是

deg0=acos(center(3)/sqrt(center(1)^2+center(3)^2));%原来球心与yz平面的夹角

deg1=deg0+pi/4;%旋转45°后与yz的夹角

center1(1)=sqrt(center(1)^2+center(3)^2)*sin(deg1);

center1(2)=center(2);

center1(3)=sqrt(center(1)^2+center(3)^2)*cos(deg1);

x1=r*sin(beta).*cos(alpha)+center1(1);

y1=r*sin(beta).*sin(alpha)+center1(2);

z1=r*cos(beta)+center1(3);

surf(x1,y1,z1)


%原点到球心的连线

plot3([0 center(1)],[0 center(2)],[0 center(3)]);

plot3([0 center1(1)],[0 center1(2)],[0 center1(3)]);


%球心绕y轴旋转的轨迹

ry=sqrt(center(1)^2+center(3)^2);

ralpha=0:0.2:2*pi;

xx=ry*sin(ralpha);

yy=ones(size(ralpha))*center(2);

zz=ry*cos(ralpha);

plot3(xx,yy,zz,'-')


不同视角的图形

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜