Commit | Line | Data |
---|---|---|
46d528a4 | 1 | numeric paperh, paperw; |
46d528a4 MW |
2 | numeric fine; |
3 | numeric margin; | |
4 | ||
5 | paperh := 297 mm; | |
6 | paperw := 210 mm; | |
46d528a4 MW |
7 | fine := 1/4 pt; |
8 | margin := 20 mm; | |
9 | ||
50222964 MW |
10 | numeric page; page := 0; |
11 | ||
12 | def squares(expr hsqsz, vsqsz) = | |
13 | page := page + 1; | |
14 | beginfig(page); | |
15 | numeric w, h; | |
16 | numeric ox, oy, lx, ly; | |
17 | ||
18 | w = floor((paperw - 2 margin)/hsqsz); | |
19 | h = floor((paperh - 2 margin)/vsqsz); | |
20 | ox = (paperw - w * hsqsz)/2; lx = ox + w * hsqsz; | |
21 | oy = (paperh - h * vsqsz)/2; ly = oy + h * vsqsz; | |
46d528a4 | 22 | |
50222964 MW |
23 | pickup pencircle scaled fine; |
24 | for i = ox step hsqsz until lx: | |
25 | draw (i, oy) .. (i, ly); | |
26 | endfor | |
27 | for i = oy step vsqsz until ly: | |
28 | draw (ox, i) .. (lx, i); | |
29 | endfor | |
30 | endfig; | |
31 | enddef; | |
32 | ||
33 | def hexes(expr hexsz) = | |
34 | page := page + 1; | |
35 | beginfig(page); | |
36 | numeric ox, oy, lx, ly; | |
37 | numeric w, h; | |
38 | numeric v; | |
39 | numeric a, b, c, d, e; | |
40 | ||
41 | v = hexsz * sind 60; | |
42 | w = floor((paperw - 2 margin)/(3 hexsz) - 1/2); | |
43 | h = floor((paperh - 2 margin)/(2 v) - 1/2); | |
44 | ox = (paperw - (w + 1/2) * 3 hexsz)/2; lx = ox + w * 3 hexsz; | |
45 | oy = (paperh - (h + 1/2) * 2 v)/2; ly = oy + h * 2 v; | |
46 | ||
47 | pickup pencircle scaled fine; | |
48 | for i = ox step 3 hexsz until lx: | |
49 | a := i + 1/2 hexsz; b := i + 2 hexsz; c := i + 3/2 hexsz; | |
50 | for j = oy step 2 v until ly: | |
51 | d := j + v; e := j + 2 v; | |
52 | draw (a, e) -- (i, d) -- (a, j) -- (c, j) -- (b, d) -- (c, e); | |
53 | if i < lx: | |
54 | draw (b, d) -- (b + hexsz, d); | |
55 | fi | |
56 | endfor | |
57 | draw (a, e) -- (c, e); | |
58 | endfor | |
59 | endfig; | |
60 | enddef; |