demos: Fix and cleanup GP_BackendInit() + docs.
[gfxprim/pasky.git] / doc / coordinates.mp
blobc048e6e3ed486f1b51c491de69c52ebe70f08b8b
1 def draw_grid = 
2         % Draw grid
3         for i=0 upto h:
4                 draw (0, i * u) -- (w * u, i * u);
5         endfor
7         for i=0 upto w:
8                 draw (i * u, 0) -- (i * u, h * u);
9         endfor
11         % Draw frame
12         pair A, B, C, D;
13         
14         A = (0, 0);
15         B = (w * u, 0);
16         C = (w * u, h * u);
17         D = (0, h * u);
19         drawarrow D -- A withpen pencircle scaled 4;
20         draw A -- B withpen pencircle scaled 2;
21         draw B -- C withpen pencircle scaled 2;
22         drawarrow D -- C withpen pencircle scaled 4;
23 enddef;
25 vardef pixel_coord(expr x, y) = 
26         px := u/2 + x * u;
27         py := h * u - u/2 - u * y;
28         (px,py)
29 enddef;
31 def fill_pixel(expr x, y, col) =
32         fill unitsquare scaled u shifted pixel_coord(x - 0.5, y + 0.5) withcolor col
33 enddef;
35 beginfig(1)
36         u = 48;
37         w = 11;
38         h = 6;
39         
40         % Draw labels
41         dotlabel.top(btex (0, 0) etex, pixel_coord(0, 0));
42         dotlabel.top(btex (w-1, h-1) etex, pixel_coord(w-1, h-1));
43         dotlabel.urt(btex (1.5, 2) etex, pixel_coord(1.5, 2));
44         
45         % Draw line
46         lxs = 5;
47         lxe = 9;
48         ly = 3;
50         for i = lxs upto lxe:
51                 fill_pixel(i, ly, (0.6, 0.6, 1));
52         endfor
54         dotlabel.top(btex (5, 3) etex, pixel_coord(lxs, ly));
55         dotlabel.top(btex (9, 3) etex, pixel_coord(lxe, ly));
56         
57         draw_grid;
58 endfig;
60 beginfig(2)
61         u := 48;
62         w := 11;
63         h := 6;
64         
65         % Draw labels
66         dotlabel.top(btex (0, 0) etex, pixel_coord(0, 0));
67         
68         for i = 2 upto 9:
69                 for j = 1 upto 4:
70                         fill_pixel(i, j, (0.6, 1, 0.6));
71                 endfor
72         endfor
74         % Draw rectangle
75         dotlabel.top(btex (2, 1) etex, pixel_coord(2, 1));
76         dotlabel.top(btex (9, 4) etex, pixel_coord(9, 4));
78         draw_grid;
79 endfig;
81 end