> restart:with(plots):
h:=6:
r:=3:
alpha:=arctan(r/h):
hs:=3.5:
rs:=(h-hs)*sin(alpha):
n:=20:
coco:=seq(spacecurve([[-r*cos(t),-r*sin(t),2*h],[r*cos(t),r*sin(t),0]],numpoints=2),t=seq(k*2*Pi/n,k=1..n)),spacecurve([r*cos(t),r*sin(t),0],t=0..2*Pi):
demico:=plot3d(h-sqrt(x**2+y**2)/tan(alpha),x=-4..4,y=-4..0,style=patchnogrid),plot3d(h+sqrt(x**2+y**2)/tan(alpha),x=-4..4,y=-4..4,style=patchnogrid):
sphere:=plot3d([rs*cos(phi)*cos(theta),rs*cos(phi)*sin(theta),hs+rs*sin(phi)],theta=0..2*Pi,phi=-Pi/2..Pi/2,style=patchnogrid):
hc:=hs+rs*sin(alpha):
plan1:=plot3d(hc,x=-4..4,y=-4..4,grid=[12,12],style=wireframe,color=blue):
beta:=1.4:
plan2:=plot3d(hs-rs/cos(beta)+tan(beta)*x,x=-4..4,y=-4..4,style=wireframe,grid=[20,13],color=grey):
xd:=fsolve(hs-rs/cos(beta)+tan(beta)*x=hc,x):
rc:=rs*cos(alpha):
CercleContact:=spacecurve([rc*cos(theta),rc*sin(theta),hs+rs*sin(alpha)],theta=0..2*Pi,thickness=2,color=black):
directrice:=spacecurve([[xd,-4,hc],[xd,4,hc]],color=black,thickness=3):
foyer:=pointplot3d([rs*sin(beta),0,hs-rs*cos(beta)],symbol=circle,thickness=3,color=black):
xp:=unapply(r*cos(t)*(1-zz/h),t):
yp:=unapply(r*sin(t)*(1-zz/h),t):
zp:=unapply(solve(zz=hs-rs/cos(beta)+tan(beta)*xp(t),zz),t):
a:=1.2:
ptcourant:=spacecurve([[rs*sin(beta),0,hs-rs*cos(beta)],[subs(zz=zp(a),xp(a)),subs(zz=zp(a),yp(a)),zp(a)],[xd,subs(zz=zp(a),yp(a)),hc]],color=black):
hyperbole:=spacecurve([subs(zz=zp(t),xp(t)),subs(zz=zp(t),yp(t)),zp(t)],t=0..2*Pi,thickness=3,color=red):

> display([demico,coco,sphere,directrice,plan1,plan2,CercleContact,hyperbole,foyer,ptcourant],scaling=constrained,view=[-3..3,-3..3,1..2*h],lightmodel=light2,orientation=[70,106]);

[Maple Plot]

>