]> mj.ucw.cz Git - ads2.git/blob - 7-geom/7-geom.mp
4337fd0c07fab476c1a27f7a8a1c74ce1c320869
[ads2.git] / 7-geom / 7-geom.mp
1 input lib
2
3 figname("7-geom");
4
5 figtag("male_obaly");
6 beginfig(1);
7         pickup boldpen;
8         labeloffset:=1cm;
9         pair c,pos; c := (0,0); pos := c;
10         drawemptyvertex(c);
11         label.bot(btex $n=1$ etex, pos);
12         c := (2cm,0);
13         pos := pos + c;
14         pair A[];
15         A[0] := (-0.3cm, -0.2cm)+c; A[1] := (0.2cm, 0.3cm)+c;
16         draw A[0]--A[1];
17         drawemptyvertex(A[0]); drawemptyvertex(A[1]);
18         label.bot(btex $n=2$ etex, pos);
19
20         pos := pos + c;
21         A[2] := (+0.3cm, -0.4cm)+c;
22         for i := 0 upto 2: A[i] := A[i] shifted c; endfor
23         draw A[0]--A[1]--A[2]--cycle;
24         for i := 0 upto 2: drawemptyvertex(A[i]); endfor
25         label.bot(btex $n=3$ etex, pos);
26
27         pos := pos + c;
28         A[3] := (A[0]+A[1]+A[2])/3;
29         for i := 0 upto 3: A[i] := A[i] shifted c; endfor
30         draw A[0]--A[1]--A[2]--cycle;
31         for i := 0 upto 2: drawemptyvertex(A[i]); endfor
32         draw vertex(A[3]);
33         
34         c := (1cm,0);
35         pos := pos + c/2;
36         A[3] := A[1]+(0.3cm,-0.2cm);
37         for i := 0 upto 3: A[i] := A[i] shifted c; endfor
38         draw A[0]--A[1]--A[3]--A[2]--cycle;
39         for i := 0 upto 3: drawemptyvertex(A[i]); endfor
40         label.bot(btex $n=4$ etex, pos);
41 endfig;
42
43 figtag("pridani_bodu");
44 beginfig(2);
45         pair A[],B[],C,shift; shift := (4.5cm,0);
46         A[0] := (-1.7cm,1.1cm);
47         A[1] := (-1.2cm,1.2cm);
48         A[2] := (-0.4cm,1cm);
49         A[3] := (0.2cm,0.2cm);
50         A[4] := (0.4cm,-0.7cm);
51         A[5] := (-0.8cm,-1.3cm);
52         A[6] := (-1.4cm,-1.4cm);
53         B[0] := (-1.1cm, 0.7cm);
54         B[1] := (-0.6cm, 0.1cm);
55         B[2] := (-1.3cm, -0.6cm);
56         C := (1cm, 0.1cm);
57
58         % krok 1
59         pickup boldpen;
60         draw A[0] for i := 1 upto 6: --A[i] endfor;
61         for i := 1 upto 5: drawemptyvertex(A[i]); endfor
62         for i := 0 upto 2: draw vertex(B[i]); endfor
63         draw vertex(C);
64         drawarrow (C+(0.5cm,0)--C+(1.5cm,0)) shifted (0, -0.1cm) withpen normalpen;
65         for i:=0 upto 6: A[i] := A[i] shifted shift; endfor
66         for i:=0 upto 2: B[i] := B[i] shifted shift; endfor
67         C := C shifted shift;
68
69         % krok 2
70         draw for i := 0 upto 3: A[i]-- endfor C for i := 4 upto 6: --A[i] endfor;
71         draw C--A[2] dashed evenly withpen normalpen;
72         for i := 1 upto 5: drawemptyvertex(A[i]); endfor
73         for i := 0 upto 2: draw vertex(B[i]); endfor
74         drawemptyvertex(C);
75         drawarrow (C+(0.5cm,0)--C+(1.5cm,0)) shifted (0,-0.1cm) withpen normalpen;
76         for i:=0 upto 6: A[i] := A[i] shifted shift; endfor
77         for i:=0 upto 2: B[i] := B[i] shifted shift; endfor
78         C := C shifted shift;
79
80         % krok 3
81         draw for i := 0 upto 2: A[i]-- endfor C for i := 4 upto 6: --A[i] endfor;
82         for i := 1 upto 2: drawemptyvertex(A[i]); endfor
83         for i := 4 upto 5: drawemptyvertex(A[i]); endfor
84         for i := 0 upto 2: draw vertex(B[i]); endfor
85         draw vertex(A[3]);
86         drawemptyvertex(C);
87 endfig;
88
89 figtag("obalky");
90 beginfig(3);
91         labeloffset := 0.2cm;
92         pickup boldpen;
93         pair A[],B[];
94         A[0] := (-7cm, 0cm);
95         A[1] := (-6.2cm, 0.9cm);
96         A[2] := (-4.6cm,1.5cm);
97         A[3] := (-2.4cm,1.8cm);
98         A[4] := (-0.8cm,1.5cm);
99         A[5] := (0.4cm,0.6cm);
100         A[6] := (0.8cm,-0.10cm);
101         A[7] := (-1.6cm,-1.9cm);
102         A[8] := (-4cm,-2.1cm);
103         A[9] := (-6cm, -1.5cm);
104         A[10] := (-7cm, 0cm);
105         
106         B[0] := (-2.2cm, 0.7cm);
107         B[1] := (-1.2cm, 0.1cm);
108         B[2] := (-2.6cm, -0.6cm);
109         B[3] := (-3.6cm, -0.4cm);
110         B[4] := (-3cm, 0.6cm);
111         B[5] := (-2.6cm, 1cm);
112         B[6] := (-1cm, -1.2cm);
113         B[7] := (-6.5cm, 0.2cm);
114         B[8] := (-5cm, 0.8cm);
115         B[9] := (-6cm, -0.6cm);
116         B[10] := (-5cm, -1.2cm);
117         
118         draw createpath(for i := 0 upto 5: A[i]-- endfor A[6]);
119         draw (for i := 6 upto 9: A[i]-- endfor A[10]) dashed evenly;
120         for i := 0 upto 9: drawemptyvertex(A[i]); endfor
121         for i := 0 upto 10: draw vertex(B[i]); endfor
122
123         label(btex \font\myfont=csr10 \myfont horní obálka etex, ((-7cm+0.8cm)/2,2.2cm));
124         label(btex \font\myfont=csr10 \myfont dolní obálka etex, ((-7cm+0.8cm)/2,-2.5cm));
125         label.lft(btex $L$ etex, A[0]);
126         label.rt(btex $P$ etex, A[6]);
127 endfig;
128
129 figtag("determinant");
130 beginfig(4);
131         labeloffset := 0.1cm;
132         pair A[], shift; shift := (4cm,1cm);
133
134         % det(M) > 0
135         A[0] := (-2cm, 0);
136         A[1] := (0,-1cm);
137         A[2] := (1.5cm, 0cm);
138         A[3] := A[0] + A[2] - A[1];
139         
140         fill A[0]--A[1]--A[2]--A[3]--cycle withcolor 0.8white;
141         draw A[0]--A[1]--A[2]--A[3]--cycle dashed evenly;
142         drawarrow A[0]--0.96[A[0],A[1]] withpen boldpen;
143         drawarrow A[1]--0.96[A[1],A[2]] withpen boldpen;
144         for i:=0 upto 2: draw vertex(A[i]); endfor
145         label.lft(btex $h_{k-1}$ etex, A[0]);
146         label.bot(btex $h_k$ etex, A[1]);
147         label.llft(btex $\vec u$ etex, 0.5[A[0],A[1]]);
148         label.lrt(btex $\vec v$ etex, 0.5[A[1],A[2]]);
149         label.rt(btex $b$ etex, A[2]);
150         label(btex $\det(M) > 0$ etex, 0.5[A[0],A[2]]);
151
152         % det(M) = 0
153         A[0] := (-1cm, -0.5cm) + shift;
154         A[1] := (0, -1cm) + shift;
155         A[2] := (1cm, -1.5cm) + shift;
156         drawarrow A[0]--0.96[A[0],A[1]] withpen boldpen;
157         drawarrow A[1]--0.96[A[1],A[2]] withpen boldpen;
158         for i:=0 upto 2: draw vertex(A[i]); endfor
159         label.lft(btex $h_{k-1}$ etex, A[0]);
160         label.llft(btex $h_k$ etex, A[1]);
161         label.llft(btex $\vec u$ etex, 0.5[A[0],A[1]]);
162         label.llft(btex $\vec v$ etex, 0.5[A[1],A[2]]);
163         label.bot(btex $b$ etex, A[2]);
164         label(btex $\det(M) = 0$ etex, origin) shifted (0,0.3cm) rotated -28 shifted 0.5[A[0], A[2]];
165
166         % det(M) < 0
167         shift := (7.5cm, 1.25cm);
168         A[0] := (-1cm, -0.5cm) + shift;
169         A[1] := (1.5cm, -1cm) + shift;
170         A[2] := (2cm, -2.5cm) + shift;
171         A[3] := A[0] + A[2] - A[1];
172         fill A[0]--A[1]--A[2]--A[3]--cycle withcolor 0.8white;
173         draw A[0]--A[1]--A[2]--A[3]--cycle dashed evenly;
174         drawarrow A[0]--0.96[A[0],A[1]] withpen boldpen;
175         drawarrow A[1]--0.96[A[1],A[2]] withpen boldpen;
176         for i:=0 upto 2: draw vertex(A[i]); endfor
177         label.lft(btex $h_{k-1}$ etex, A[0]);
178         label.urt(btex $h_k$ etex, A[1]);
179         label.top(btex $\vec u$ etex, 0.5[A[0],A[1]]);
180         label.rt(btex $\vec v$ etex, 0.5[A[1],A[2]]);
181         label.rt(btex $b$ etex, A[2]);
182         label(btex $\det(M) < 0$ etex, 0.5[A[0],A[2]]);
183 endfig;
184
185 figtag("rybi_motivace");
186 beginfig(5);
187         u := 0.3cm;
188         def draw_fish(expr pos,size,rot) =
189                 draw ((-1.3u*size,0){dir 60}..{right}(u*size,-u*size/4)) rotated rot shifted pos;
190                 draw ((-1.3u*size,0){dir -50}..{right}(u*size,u*size/4)) rotated rot shifted pos;
191                 draw ((u*size,-u*size/4)--(u*size,u*size/4)) rotated rot shifted pos;
192                 draw (-1u*size,u*size/15) rotated rot shifted pos withpen pencircle scaled (u/8);
193                 for i:=1 upto 3: draw (dirs((u*size,-u*size/4+i*u*size/8), 180, u*size/6)) rotated rot shifted pos; endfor
194         enddef;
195         
196         pair A[],B[];
197         A[0] := (-7cm, 0cm);
198         A[1] := (-6.2cm, 0.9cm);
199         A[2] := (-4.6cm,1.5cm);
200         A[3] := (-2.4cm,1.8cm);
201         A[4] := (-0.8cm,1.5cm);
202         A[5] := (0.4cm,0.6cm);
203         A[6] := (0.8cm,-0.10cm);
204         A[7] := (-1.6cm,-1.9cm);
205         A[8] := (-4cm,-2.1cm);
206         A[9] := (-6cm, -1.5cm);
207         A[10] := (-7cm, 0cm);
208         
209         B[0] := (-2.2cm, 0.7cm);
210         B[1] := (-1.2cm, 0.1cm);
211         B[2] := (-2.6cm, -0.6cm);
212         B[3] := (-3.6cm, -0.4cm);
213         B[4] := (-3cm, 0.6cm);
214         B[5] := (-2.6cm, 1cm);
215         B[6] := (-1cm, -1.2cm);
216         B[7] := (-6.5cm, 0.2cm);
217         B[8] := (-5cm, 0.8cm);
218         B[9] := (-6cm, -0.6cm);
219         B[10] := (-5cm, -1.2cm);
220
221         for i:=0 upto 9: draw_fish(A[i], 1, 0); endfor;
222         for i:=0 upto 10: draw_fish(B[i], 1, 0); endfor;
223         draw createpath(for i:=0 upto 9: A[i]-- endfor cycle) scaled 1.13 shifted (0.4cm,0) withpen boldpen;
224 endfig;
225 end