summaryrefslogtreecommitdiff
path: root/usergrps/uktug/baskervi/4_4/maggie.mf
blob: 700ce386a150470524dec8739b948da348323b46 (plain)
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;