球顶锥体(Spherical cone)是由一个圆锥面和一个球面所围成的立体。
由于这种立体酷似一个蛋卷冰淇淋,故球顶锥体也被称为“冰淇淋”(Ice cream)。
常见的球顶锥体有两种:;(1)球面经过圆锥面的顶点;(2)球面的球心与圆锥面的顶点重合 。
(1)球面经过圆锥面
圆锥面 phi=alpha 与球面 r=2acos(phi) (球面经过圆锥面的顶点)所围成的球顶锥体
(见同济大学《高等数学》(下册105页)) :

with(plots):alpha:=Pi/4:a:=1:
r0:=(theta,phi)->2*a*cos(phi):
zhuimian:=plot3d([r*sin(alpha)*cos(t),r*sin(alpha)*sin(t),r*cos(alpha)],t=0..2*Pi,r=0..r0(t,alpha),color=green):
qiumian:=plot3d([r0(t,s)*sin(s)*cos(t),r0(t,s)*sin(s)*sin(t),r0(t,s)*cos(s)],t=0..2*Pi,s=0..alpha,color=yellow):
display(zhuimian,qiumian,axes=normal,scaling=constrained,lightmodel=light1,orientation=[20,60]);

半顶角不同的圆锥面形成的球顶锥体:
with(plots):a:=1:
r0:=(theta,phi)->2*a*cos(phi):
K:=60: for i from 1 to K do alpha:=i*(0.99*Pi/2)/K:
zhuimian[i]:=plot3d([r*sin(alpha)*cos(t),r*sin(alpha)*sin(t),r*cos(alpha)],t=0..2*Pi,r=0..r0(t,alpha),color=green):
qiumian[i]:=plot3d([r0(t,s)*sin(s)*cos(t),r0(t,s)*sin(s)*sin(t),r0(t,s)*cos(s)],t=0..2*Pi,s=0..alpha,color=red) od:
zhuimian:=display(seq(zhuimian[i],i=1..K),insequence=true):
qiumian:=display(seq(qiumian[i],i=1..K),insequence=true):
display(zhuimian,qiumian,axes=normal,tickmarks=[2,2,2],scaling=constrained,orientation=[20,60]);
(2)球面的球心与圆锥面的顶点重合
圆锥面 phi=alpha 与球面 r=a (球心在原点)所围成的球顶锥体:
with(plots):alpha:=Pi/5:a:=1:
r0:=(theta,phi)->a:
zhuimian:=plot3d([r*sin(alpha)*cos(t),r*sin(alpha)*sin(t),r*cos(alpha)],t=0..2*Pi,r=0..r0(t,alpha),color=green):
qiumian:=plot3d([r0(t,s)*sin(s)*cos(t),r0(t,s)*sin(s)*sin(t),r0(t,s)*cos(s)],t=0..2*Pi,s=0..alpha,color=yellow):
display(zhuimian,qiumian,axes=normal,scaling=constrained,lightmodel=light1,orientation=[20,60]);
with(plots):a:=1:
r0:=(theta,phi)->a:
K:=60: for i from 1 to K do alpha:=i*(Pi/2)/K:
zhuimian[i]:=plot3d([r*sin(alpha)*cos(t),r*sin(alpha)*sin(t),r*cos(alpha)],t=0..2*Pi,r=0..r0(t,alpha),color=yellow):
qiumian[i]:=plot3d([r0(t,s)*sin(s)*cos(t),r0(t,s)*sin(s)*sin(t),r0(t,s)*cos(s)],t=0..2*Pi,s=0..alpha,color=red) od:
zhuimian:=display(seq(zhuimian[i],i=1..K),insequence=true):
qiumian:=display(seq(qiumian[i],i=1..K),insequence=true):
display(zhuimian,qiumian,axes=normal,tickmarks=[2,2,2],scaling=constrained,orientation=[20,60]);

with(plots):a:=1:
r0:=(theta,phi)->a:
K:=100: for i from 1 to K do alpha:=i*Pi/K:
zhuimian[i]:=plot3d([r*sin(alpha)*cos(t),r*sin(alpha)*sin(t),r*cos(alpha)],t=0..2*Pi,r=0..r0(t,alpha),color=yellow):
qiumian[i]:=plot3d([r0(t,s)*sin(s)*cos(t),r0(t,s)*sin(s)*sin(t),r0(t,s)*cos(s)],t=0..2*Pi,s=0..alpha,color=green,style=wireframe) od:
zhuimian:=display(seq(zhuimian[i],i=1..K),insequence=true):
qiumian:=display(seq(qiumian[i],i=1..K),insequence=true):
display(zhuimian,qiumian,axes=normal,tickmarks=[2,2,2],scaling=constrained,orientation=[20,60]);
倒过来看:
评论