clear;clc;
r=1;%r的值自己改
%柱面部分
t=linspace(0,2*pi,37);
q=linspace(-1,1,11);
[tt,qq]=meshgrid(t,q);
x=r/2*(cos(tt)+1);
y=r/2*sin(tt);
z=r*sqrt((1-cos(tt))/2).*qq;
mesh(x,y,z)
hold on
%球面部分
p=acos(sin(tt/2)).*qq;
xx=r*sin(tt/2).*cos(p);
yy=r*sin(tt/2).*sin(p);
zz=r*cos(tt/2);
mesh(xx,yy,zz)
axis equal
————————————————
另一种方法
clear;clc;
r=1;%r的值自己改
t=linspace(0,1);q=linspace(-1,1);
[x,y,z]=meshgrid(t,q/2,q);
c=cat(4,x.^2+y.^2+z.^2-r^2,x.^2+y.^2-r*x);
v=max(c,[],4);
isosurface(x,y,z,v,0);
axis equal;grid on;