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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
% maggie.mf by Raymond Chen (rjc@math.princeton.edu)
% Maggie Simpson.
pictureof(Maggie, 20u#, 20u#, 0);
pickup thinpen;
localpath eye_right;
z.eye_right = (8u, 8u); % base for right eye
eye_right = (superellipse( (3.6u, 0u), (1.5u, 2u),
(-.8u, 0u), (1.5u, -2u), .7) ) shifted z.eye_right;
draw eye_right;
localpath nose;
z.nose = (12u, 4u); % base for nose
z1n = (.8u, .9u); % where nose meets pacifier
z1n.dir = -dir10; % direction through z1n
z2n = (xpart z1n, -2.7u); % bottom turn of pacifier
labelsoffset(z.nose, 1n, 2n, 3n); % Label the points
nose = preclip( (
(-u, 3u) --- (1u, 3u) .. % bridge of nose
(2u, 2u) .. % tip
z1n{z1n.dir} .. % through here
(0u, .8u) .. % return
(-1.7u, -1.4u) .. % back of pacifier
(0u, -3u) .. % bottom of pacifier
z2n .. % turn
tension 2 ..
{z1n.dir}z1n % end of front of pacifier
)shifted z.nose, eye_right);
draw nose;
% The handle of the pacifier
numeric t; t = 1.2u; % handle thickness
penpos1p(t, 0); % hump of the bowl
penpos2p(t, 90); % upper handle
penpos3p(t,-90); % lower handle
z1p = z.nose + (1.3u, -1u);
x2p =
x3p = xpart z.nose + .2u;
y1p = 1/2[y2p, y3p];
y2p - y1p = .8u;
penlabels(1p, 2p, 3p);
overdraw z1p.l{up} .. z2p.l{left} .. z2p.r{right} ..
z1p.r{down} .. z3p.r{left} .. z3p.l{right} .. cycle;
localpath eye_left;
z.eye_left = (12u, 8u);
eye_left = prepostclip( (
(1u, -1.3u){right}..
(2.7u, .5u){up}..
(1u, 2u){left}..
{down}(-.8u, .5u) ) shifted z.eye_left, nose, eye_right);
draw eye_left;
localpath hair;
hair = preclip(
(14u, 7.5u) ::
(16.2u, 8.8u) ::
(15u, 9.1u) ::
(17u, 11u) ::
(14.7u, 11.8u) ::
(15.4u, 14.4u) ::
(13u, 14u) ::
(10.7u, 16.4u) ::
(8.7u, 13.9u) ::
(5.3u, 15.5u) ::
(4u, 12u) ::
(1.4u, 11u) ::
(2.8u, 8u) ::
(1.1u, 6u) ::
(4.2u, 4.5u) ::
(3u, 2.5u) ::
(6u, 2.6u) .. (6u, 1.5u) .. (8u, .7u){right} ..
(10.3u, 1u), eye_left);
z1h = point infinity of hair;
draw hair;
% Maggie's adorable bow
numeric t; t = .7u; % size of knot
def ::: = ..tension 2 .. enddef; % for bow drawing
z.bow = (11u, 13u);
z1b = (-t, t); % 7\ /5
z2b = ( t, t); % | \ / |
z3b = ( t, -t); % | 1--2 |
z4b = (-t, -t); % | | | |
z5b = (3t, 2.5t); % | 4--3 |
z6b = (3t, -2t); % | / \ |
z7b = (-3.5t, 3t); % 8/ \6
z8b = (-3.2t, -2.5t);
overdraw (z2b ::: z5b ::: z6b ::: z3b -- cycle) shifted z.bow; % right bow
overdraw (z1b ::: z7b ::: z8b ::: z4b -- cycle) shifted z.bow; % left bow
overdraw (z1b ::: z2b ::: z3b ::: z4b ::: cycle) shifted z.bow; % the knot
labelsoffset(z.bow, 1b, 2b, 3b, 4b, 5b, 6b, 7b, 8b);
% Maggie's ear
z.ear = (5u, 5u);
draw ( (1.5u, 1u) .. (-.2u, -.4u) .. (1.5u, -1.4u) ) shifted z.ear;
drawtau( z.ear + (.3u, -.5u),
z.ear + (1.3u, .5u),
z.ear + (1u, -1.1u),
z.ear + (1u, .5u) );
% Maggie's chin (and mouth, sucking on the pacifier)
draw postclip(
( (-.4u, .2u) .. (0,0) .. (2u, 1u) ) shifted z1h, nose);
% The front of the Maggie baggie
draw bend(20, z1h, (.3u + xpart z1h, 0));
% The back of the Maggie baggie
draw postclip(
(4.2u, 0u){dir 60} .. {dir 45}(5.5u, 2.5u), hair);
pickup lashpen;
localpath lash;
rlash( (0 u, .8u), (-.6u, 1.8u), 0);
rlash( (1 u, 1.6u), ( .8u, 2.4u), 0);
rlash( (2.5u, 1.5u), (2.7u, 2.2u), 0);
llash( ( .5u, 1.9u), ( .4u, 2.3u), 0);
llash( (1.8u, 1.9u), (1.9u, 2.3u), 0);
llash( (2.5u, 1.5u), (2.7u, 1.8u), 0);
eyepos(Maggie, 9.2u#, 8.1u#, 12.7u#, 8.1u#);
endpicture;
|