1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
// Contributed by Philippe Ivaldi.
// http://www.piprime.fr/
import graph3 ;
import contour;
size (6cm,0);
currentprojection=orthographic(1,1,1) ;
real rc=1, hc=2, c=rc/hc;
draw(shift(hc*Z)*scale(rc,rc,-hc)*unitcone,blue);
triple Os=(0.5,0.5,1);
real r=0.5;
draw(shift(Os)*scale3(r)*unitsphere,red);
real a=1+1/c^2;
real b=abs(Os)^2-r^2;
real f(pair z)
{
real x=z.x, y=z.y;
return a*x^2-2*Os.x*x+a*y^2-2*Os.y*y-2*Os.z*sqrt(x^2+y^2)/c+b;
}
real g(pair z){return (sqrt(z.x^2+z.y^2))/c;}
draw(lift(g,contour(f,(-rc,-rc),(rc,rc),new real[]{0})),linewidth(2bp)+yellow);
axes3("$x$","$y$","$z$",Arrow3);
|