% 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;