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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
/* -*-ePiX-*- */
#include "epix.h"
using namespace ePiX;
const int M(8);
double MAX(1.5), Bd(2);
P F(double x, double y) // fake pole
{
return P(x, y, x/(0.01+x*x+y*y));
}
P pt1(-MAX,-MAX), pt2(MAX, MAX);
domain R(pt1, pt2, mesh(2*M,2*M), mesh(6*M,6*M));
int main()
{
picture(P(-Bd,-Bd), P(Bd,Bd), "2.5x2.5in");
begin();
label(P(xmax(), 2.5), P(-2,-2),
"$z=\\mathrm{Re}\\,\\displaystyle\\frac{1}{x+iy}$", bl);
camera.at(P(6,8,5));
clip_box(P(-Bd,-Bd,-Bd), P(Bd,Bd,0));
plain(Magenta());
fill(White());
surface(F, R); // bottom half
grid(pt1, pt2, M, M); // axes
pen(White(0.75), "0.15pt");
plot(F,R); // simulate transparency
clip_box(P(-Bd,-Bd,-Bd), P(Bd,Bd,2*Bd));
plain(Magenta());
// axes and labels
arrow(P(-Bd,0,0), P(Bd,0,0));
label(P(Bd,0), P(-4,-2), "$x$", l);
arrow(P(0,-Bd,0), P(0,Bd,0));
label(P(0,Bd), P( 2,-2), "$y$", br);
arrow(P(0, 0, 0), P(0,0,2.5));
label(P(0,0,2.5), P(0,4), "$z$", t);
clip_box(P(-Bd,-Bd,0),P(Bd,Bd,Bd));
surface(F,R); // top half
bbold(Red());
plot(F, R.resize1(0.25,MAX).slice2(0));
pst_format();
end();
}
|