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
61
62
63
64
65
|
% This is
% pkblackfield.mf
%
% Copyright (C) 1989-92 by Elmar Bartel.
%
% This program is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 1, or (at your option)
% any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program; if not, write to the Free Software
% Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
%
def MakeBlackField =
if unknown BlackField:
pair ua[],ub[],la[],lb[],ul,lr,ma,mb;
numeric n,part;
n=7; part=6;
pickup pencircle scaled (qs/(part*n));
bot lft ma = (0,0);
top rt mb = (w,w);
draw ma--mb;
top lft ul = (0,h);
bot rt lr = (w,0);
numeric xdelta,ydelta;
xdelta= floor((xpart(lr) - xpart(ma)) / n);
ydelta= floor((ypart(ul) - ypart(ma)) / n);
for i=1 upto n:
lft ua[i] = (0,ypart(ma)+(i*ydelta));
top ub[i] = (xpart(mb)-(i*xdelta),h);
draw ua[i]..ub[i];
endfor;
for i=1 upto n:
bot la[i] = (xpart(ma)+(i*xdelta),0);
rt lb[i] = (w,ypart(mb)-(i*ydelta));
draw la[i]..lb[i];
endfor;
picture BlackField;
cullit;
BlackField:= currentpicture;
else:
currentpicture:= BlackField;
fi;
enddef;
beginchar(144,qs#,qs#,0); "Empty black field";
MakeBlackField;
endchar;
|