15 |
(gridp(x,y) + 45*(s,t)) |
(gridp(x,y) + 45*(s,t)) |
16 |
enddef; |
enddef; |
17 |
|
|
18 |
vardef Tlev(expr lev) = |
vardef Tlev(expr lev, lightat) = |
19 |
|
string texstr; |
20 |
|
texstr := "$T_{("; |
21 |
if lev = 0: |
if lev = 0: |
22 |
TEX( "$T_n$") |
texstr := texstr & "n"; |
23 |
else: |
else: |
24 |
TEX( "$T_{n-"&(decimal lev)&"}$") |
texstr := texstr & "n-"&(decimal lev); |
25 |
fi |
fi |
26 |
|
texstr := texstr & "),\," & (decimal xpart lightat) & ",\," & (decimal ypart lightat) & "}$"; |
27 |
|
TEX( texstr ) |
28 |
enddef; |
enddef; |
29 |
|
|
30 |
cornermeas = 5pt; |
cornermeas = 5pt; |
31 |
|
|
32 |
def stlabel(expr ind, x, y, side) = |
def stlabel(expr ind, x, y, side) = |
33 |
(TEX("$\eqalign{(s_"&(decimal ind)&"0 + " & (decimal x) & "/" & (decimal side) &",\cr " & |
(TEX("$\eqalign{(s_"&(decimal ind)&" + " & (decimal x) & "/" & (decimal side) &",\cr " & |
34 |
"t_"&(decimal ind)&"0 + " & (decimal y) & "/" & (decimal side) &")}$" |
"t_"&(decimal ind)&" + " & (decimal y) & "/" & (decimal side) &")}$" |
35 |
) scaled .8) |
) scaled .8) |
36 |
enddef; |
enddef; |
37 |
|
|
38 |
vardef drawlev(expr lev, side, xoffs, yoffs) = |
vardef drawlev(expr lev, side, xoffs, yoffs) = |
39 |
for x := 0 upto side-1: |
for x := 0 upto side-1: |
40 |
for y := 0 upto side-1: |
for y := 0 upto side-1: |
41 |
addto currentpicture also Tlev(lev) shifted gridp(xoffs+x,yoffs+y); |
label(Tlev(lev, (x, y)) scaled 2, gridp(xoffs+x,yoffs+y)); |
|
|
|
|
draw |
|
|
gridc(xoffs+x,yoffs+y, -1, -1) -- |
|
|
gridc(xoffs+x,yoffs+y, -1, 1) -- |
|
|
gridc(xoffs+x,yoffs+y, 1, 1) -- |
|
|
gridc(xoffs+x,yoffs+y, 1, -1) -- cycle; |
|
|
|
|
|
dotlabel.urt( |
|
|
stlabel(0, x, y, side), |
|
|
gridc(xoffs+x,yoffs+y, -1, -1) |
|
|
); |
|
|
dotlabel.ulft( |
|
|
stlabel(1, x+1, y, side), |
|
|
gridc(xoffs+x,yoffs+y, 1, -1) |
|
|
); |
|
|
dotlabel.lrt( |
|
|
stlabel(2, x, y+1, side), |
|
|
gridc(xoffs+x,yoffs+y, -1, 1) |
|
|
); |
|
|
dotlabel.llft( |
|
|
stlabel(3, x+1, y+1, side), |
|
|
gridc(xoffs+x,yoffs+y, 1, 1) |
|
|
); |
|
|
|
|
42 |
endfor; |
endfor; |
43 |
endfor; |
endfor; |
44 |
enddef; |
enddef; |
45 |
|
|
46 |
beginfig(1); |
beginfig(1); |
47 |
|
|
48 |
maxx = 7; |
maxx = 9; |
49 |
|
|
50 |
for x := 0 upto maxx: |
for x := 0 upto maxx: |
51 |
draw gridedge(x,0) -- gridedge(x,4); |
draw gridedge(x,0) -- gridedge(x,4); |
57 |
|
|
58 |
drawlev(2, 4, 0, 0); |
drawlev(2, 4, 0, 0); |
59 |
drawlev(1, 2, 5, 0); |
drawlev(1, 2, 5, 0); |
60 |
% drawlev(0, 1, 8, 0); |
drawlev(0, 1, 8, 0); |
61 |
|
|
62 |
endfig; |
endfig; |
63 |
|
|
64 |
size = 15pt; |
size = 15pt; |
65 |
|
|
66 |
def drawgrid(expr x, y, side, light) = |
def drawgrid(expr x, y, side, light, lightat) = |
67 |
|
|
68 |
fill (x,y)--(x+side*size,y)-- |
fill (x,y)--(x+side*size,y)-- |
69 |
(x+side*size,y+side*size)--(x,y+side*size)--cycle |
(x+side*size,y+side*size)--(x,y+side*size)--cycle |
70 |
withcolor 0.5 * white; |
withcolor 0.5 * white; |
71 |
|
|
72 |
if light: |
if light: |
73 |
fill (x,y)--(x+size,y)-- |
fill ((x,y)--(x+size,y)-- |
74 |
(x+size,y+size)--(x,y+size)--cycle |
(x+size,y+size)--(x,y+size)--cycle) shifted (lightat * size) |
75 |
withcolor white; |
withcolor white; |
76 |
fi; |
fi; |
77 |
|
|
84 |
|
|
85 |
enddef; |
enddef; |
86 |
|
|
87 |
vardef drawmipmaps(expr x, y, lightlevel) = |
vardef drawmipmaps(expr x, y, lightlevel, lightat) = |
88 |
|
|
89 |
label.top(Tlev(lightlevel), (x + 2*size,y + 2*size)); |
label.top(Tlev(lightlevel,lightat), (x + 2*size,y + 2*size)); |
90 |
drawgrid(x, y, 1, lightlevel=0); |
drawgrid(x, y, 1, lightlevel=0, lightat); |
91 |
drawgrid(x, y - 3*size, 2, lightlevel=1); |
drawgrid(x, y - 3*size, 2, lightlevel=1, lightat); |
92 |
drawgrid(x, y - 8*size, 4, lightlevel=2); |
drawgrid(x, y - 8*size, 4, lightlevel=2, lightat); |
93 |
|
|
94 |
enddef; |
enddef; |
95 |
|
|
96 |
beginfig(2); |
beginfig(2); |
97 |
|
|
98 |
drawmipmaps(0,0,2); |
drawmipmaps(0,0,0, (0,0)); |
99 |
drawmipmaps(5*size,0,1); |
drawmipmaps(5.5*size,0,1, (1,0)); |
100 |
drawmipmaps(10*size,0,0); |
drawmipmaps(11*size,0,2, (1,2)); |
101 |
|
|
102 |
|
|
103 |
endfig; |
endfig; |