% file recycle.mf, for recycling logo % a quick hack (November 92) % % this code is totally unsupported! % % Ian Green (img@ai.ed.ac.uk) % Mathematical Reasoning Group % Department of AI, University of Edinburgh % % See copyright notice at the end of this file please. % mode_setup; %mode:=smoke; tracingonline :=1; def openit = openwindow currentwindow from origin to (screen_rows,screen_cols) at (-50,600) enddef; beginchar("A",1in#,1in# *.48/.52,0); interim autorounding:=0; interim smoothing:=0; if odd(w-h): h:=h-1; fi thick := .02*w; curve := .05*w; %.07*(h-baseline); ss := .3w; % main thickness of arrow; hs := (8*thick+ss); % distance accorss tips of arrowhead forsuffixes $ = a,b,c: transform $; forsuffixes e=l,r: path $e,$'e;endfor endfor; penpos.a1(thick,90); penpos.a2(thick,90); penpos.a3(thick,30); penpos.a6(whatever,120); penpos.a9(thick,-150); penpos.a10(thick,-150); penpos.a12(thick,-90); penpos.a13(thick,-30); penpos.a14(thick,-30); penpos.a16(thick,60); penpos.a18(thick,150); penpos.a19(whatever,120); penpos.a20(thick,150); %top edge y.a1r = h; x.a1 = x.a9r = .5*w; y.a7r = y.a6r; y.a6l = thick+y.a6r = y.a7l; pickup pencircle scaled .05pt; z.a9r = z.a19l; % known intersection % define curves at top z.a1 - z.a12 = z.a2 - z.a1; y.a13 = y.a10 = y.a20 = y.a3; z.a2 - z.a12 = z.a3 - z.a10 = z.a20 - z.a13; z.a3 - z.a2 = (curve,0) + ((curve,0)rotated -60); z.a20 - z.a2 =(-curve,0) + ((curve,0)rotated -120); z.a13 - z.a12 = (z.a3 - z.a2) rotated -120; %construct an imaginary point to ensure that the fold % is in the correct place. this gives a9 z.a20l - z.a9r = (t2,0) rotated 60; z.a10r - z.a9r = (t2,0) rotated 120; z.a20l - z.a17l = (whatever,0) rotated 60; %bottom edge, rotation point z21 = (.5w,.5h); z.a6r = (.5[z.a10,z.a3]) + (whatever,0) rotated -60; z.a6r - z21 = (whatever,0) rotated 30; y.a16l = y.a6r + (2 * thick); z.a13l - z.a15l = (d1,0) rotated 60; z.a13r - z.a15r = (d1-thick,0) rotated 60; z.a17l - z.a15l = (ss,0) rotated -30; z.a17r - z.a15r = (ss-(2 * thick),0) rotated -30; z.a16l = 0.5[z.a17l,z.a15l]; z.a9r = whatever[z.a17l,z.a20l]; z.a19r - z.a17r = whatever * (z.a19l - z.a17l); z.a4r - z.a8r = (ss,0) rotated 30; z.a5r - z.a7r = (hs,0) rotated 30; z.23 = 0.5[z.a5r,z.a7r]; z.24 = 0.5[z.a10,z.a3]; z.23 = z.24 + (whatever,0) rotated -60; z.a8r - z.a9r = (whatever,0) rotated -60; z.a4r - z.a3r = (whatever,0) rotated -60; z.a8l = z.a9l + (whatever,0) rotated -60; z.a4l = z.a3l + (whatever,0) rotated -60; z.a8r = os[z.a7r, z.a5r]; z.a4r = os[z.a5r, z.a7r]; z.a5r - z.a4r = (whatever,0) rotated 30; % long base of arrow head: known points! z.a6r - z.a5r = (whatever,0) rotated -120; z.a4l - z.a8l = (whatever,0) rotated 30; z.a4l - z.a5l = z.a7l - z.a8l; z.a8r - z.a7r = z.a5r - z.a4r; z.a0 = z.a7r + (thick/(sind(30)/cosd(30)),0); z.a7l - z.a0 = (whatever,0) rotated 30; z.a5l = z.a7l + whatever * (z.a5r - z.a7r); z.a5l = z.a5r + (thick,0) rotated(60+90) + whatever * (z.a5r - z.a6r); fill z.a12l -- z.a1r -- z.a1l -- z.a12r --cycle; fill z.a1r --- z.a2r ... z.a3r --- z.a4r -- z.a5r -- z.a6r -- z.a7r -- z.a8r -- z.a9r --- z.a10r ... z.a12r ... z.a13r -- z.a15r -- z.a15r -- z.a17r -- z.a19r -- z.a19l -- z.a17l-- z.a15l -- z.a15l --- z.a13l ... z.a12l ... z.a10l --- z.a9l -- z.a8l -- z.a7l -- z.a6l -- z.a5l -- z.a4l -- z.a3l ... z.a2l --- z.a1l -- cycle; % i like this bit b = identity %shifted (0,whatever) rotatedaround (z21,-120); c = identity %shifted (whatever,0) rotatedaround (z21,-240); for n = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19: forsuffixes e = l,,r: forsuffixes $ = b,c: z.$[n]e = z.a[n]e transformed $; endfor endfor endfor; fill z.b12l -- z.b1r -- z.b1l -- z.b12r --cycle; fill z.b1r --- z.b2r ... z.b3r --- z.b4r -- z.b5r -- z.b6r -- z.b7r -- z.b8r -- z.b9r --- z.b10r ... z.b12r ... z.b13r -- z.b15r -- z.b15r -- z.b17r -- z.b19r -- z.b19l -- z.b17l-- z.b15l -- z.b15l --- z.b13l ... z.b12l ... z.b10l --- z.b9l -- z.b8l -- z.b7l -- z.b6l -- z.b5l -- z.b4l -- z.b3l ... z.b2l --- z.b1l -- cycle; fill z.c12l -- z.c1r -- z.c1l -- z.c12r --cycle; fill z.c1r --- z.c2r ... z.c3r --- z.c4r -- z.c5r -- z.c6r -- z.c7r -- z.c8r -- z.c9r --- z.c10r ... z.c12r ... z.c13r -- z.c15r -- z.c15r -- z.c17r -- z.c19r -- z.c19l -- z.c17l-- z.c15l -- z.c15l --- z.c13l ... z.c12l ... z.c10l --- z.c9l -- z.c8l -- z.c7l -- z.c6l -- z.c5l -- z.c4l -- z.c3l ... z.c2l --- z.c1l -- cycle; for n = 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23: forsuffixes e = l,,r: forsuffixes $ = a,b,c: labels($[n]e); endfor endfor endfor endchar; bye % Copyright (C) 1993 Ian Green % % 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.