message "This is dbnsymb.mf, made on Tue Dec 16 11:23:25 2003"; %%% First we include the grafbase.mf macro package, from %%% CTAN/graphics/mfpic. Then the font characters in order. %%% %%% File: grafbase.mf %%% message "mfpic version 0.2.10.2 alfa, Tue 23 Jan 1996"; message ""; % nonstopmode; % Don't complain when variables get too large. interim warningcheck := 0; % Determine whether Metafont or MetaPost is being used. % MetaPost has colors. boolean metapost; metapost = if known blue: true else: false fi; if metapost: % ensure that Plain MetaPost is loaded. if unknown base_name: input mfplain; elseif not string base_name: input mfplain; elseif base_name <> "mfplain": input mfplain; fi else: % METAFONT % ensure that Plain Metafont is loaded. if unknown base_name: input plain; elseif not string base_name: input plain; elseif base_name <> "plain": input plain; fi fi % Only for MetaPost: if metapost: % Dubious, but one of the most common printer modes. mode = cx; fi % intercept the mode variable, before mode_setup can set proof mode. if unknown mode: errhelp ("Please use \mode=localfont; or a mode known on your system."); errmessage ("Unknown METAFONT mode"); fi mode_setup; % Font identifier, and font coding scheme. % NB: These become ALL-CAPITALS in the PL (and TFM) files. font_identifier := "MFpic graphics"; font_coding_scheme := "Arbitrary"; % Design size: this is somewhat arbitrary, but it needs to be large. interim designsize := 128pt#; %% Global Variables. if not boolean debug: boolean debug; fi if not known debug: debug := false; fi % message "DEBUG " & if debug: "ON" else: "OFF" fi; if debug: message "DEBUG: pixels_per_inch = " & decimal pixels_per_inch; fi % when the numeric variable `grafbase' is known, % then grafbase.mf has been input. % (idea taken from DEK's cmbase.mf) if known grafbase: errhelp ("Please make sure that grafbase.mf is loaded only once."); errmessage ("You have loaded grafbase.mf more than once"); else: boolean grafbase; grafbase := true; fi % METAFONT title string t, and message t. vardef mftitle expr t = t; message t; enddef; % character size variables, and their default values. numeric unitlen, xscale, yscale; numeric xneg, xpos, yneg, ypos; unitlen := 1 pt#; xscale := 7.227; % (xscale * unitlen) = 1/10 inch yscale := 7.227; % (yscale * unitlen) = 1/10 inch xneg := 0; xpos := 10; yneg := 0; ypos := 10; % degrees for angles. In METAFONT, one degree is the unit of angle. deg := 1; % Drawing Pen. % pen width for drawing, in _pixel_ coordinates. newinternal penwd; % pen for drawing. pen drawpen; % Hatching Pen. % pen width for hatching, in _pixel_ coordinates. numeric hatchwd; hatchwd := 1pt; % pen for hatching. pen hatchpen; hatchpen := pencircle scaled hatchwd yscaled aspect_ratio; % Storing a Path. def store (suffix fs) expr f = hide ( if (not path f) and (not pair f) : errhelp (""); errmessage ("Second argument to `store' must be a path or pair expression"); fi if not path fs: path fs; fi fs := f; ) enddef; % Clipping. % clipping state. boolean ClipOn; % clip by default: this helps Metafont and TeX. ClipOn := true; ClipOn := false; % clipping paths. path ClipPath[]; numeric ClipPath; ClipPath = 0; % initially no clipping paths, and no candidates known. %% Frank Michielsen's macros, slightly modified. % These are: list, pathlength, timelist, dashlist, dotlist. % Global Parameters: segmentsplit, dashsize, dashgap, dashstart, % dashfinish, dotgap. def list (suffix v) (text lst) = begingroup v := 0; for item= lst: incr v; v[v]:= item; endfor; endgroup enddef; if unknown segmentsplit: segmentsplit:= 5; fi def pathlength (expr p) = begingroup save l; l:= 0; for i= 1 upto length(p): for j= 1 upto segmentsplit: l:= l + length( (point ((i-1) + j/segmentsplit) of p) - (point ((i-1) + (j-1)/segmentsplit) of p) ); endfor endfor l endgroup enddef; def timelist (suffix tlst) (suffix llst) (expr p) = begingroup save t,sl,tl,ct; numeric ct,t,t[],sl[],tl[]; t[0]:= 0; for i= 1 upto length(p): for j= 1 upto segmentsplit: t[ (i-1)*segmentsplit + j ]:= i-1 + j/segmentsplit; endfor endfor; t:= length(p) * segmentsplit; % sl = segment-length % tl = total-length tl[0]:= 0; for i= 1 upto t: sl[i]:= length( point t[i] of p - point t[i-1] of p); tl[i]:= tl[i-1] + sl[i]; endfor % ct = current time ct:= 0; for i= 1 upto llst: % convert negative lengths to beginning of path if llst[i] <= 0: tlst[i]:= 0; ct:= 0; % convert too large lengths to end of path elseif llst[i] >= tl[t]: tlst[i]:= t; % find the startpoint [[tc]] of the sub-segment % which contains the specified point and solve by % linear interpolation. elseif llst[i] < tl[ct]: forever: ct:= ct - 1; exitif llst[i] >= tl[ct]; endfor tlst[i]:= ct + (llst[i] - tl[ct])/sl[ct+1]; else: % llst[i] >= tl[ct] forever: ct:= ct + 1; exitif tl[ct] > llst[i]; endfor ct:= ct - 1; tlst[i]:= ct + (llst[i] - tl[ct])/sl[ct+1]; fi tlst[i]:= tlst[i]/segmentsplit; endfor tlst:= llst; endgroup enddef; if unknown dashsize: dashsize := 3pt; fi if unknown dashgap: dashgap := 1dashsize; fi if unknown dashfinish: dashfinish := .5; fi if unknown dashstart: dashstart := .5; fi def dashlist (suffix dp) (expr p) = begingroup save l,x,n,dsh,spc,scl,llst; numeric lt,n,dsh,spc,scl,llst,llst[],tlst,tlst[]; lt:= pathlength(p); n:= ( lt - (dashstart + dashfinish -1)*dashsize )/(dashsize+ dashgap); % if the path is too short, we do not dash it. if n < 1: dp[1]:= p; dp:=1; % otherwise we must adjust the dashsize and dashgap to make it fit else: n:= round(n); scl:= lt/( (dashstart + dashfinish + n -1)*dashsize + n*dashgap ); dsh:= scl*dashsize; spc:= scl*dashgap; % and generate a list which contains the subdivision of the path llst[1]:= 0; llst[2]:= dashstart*dsh; for i=2 upto n: llst[2i-1]:= llst[2i -2] + spc; llst[2i]:= llst[2i-1] + dsh; endfor; llst[2n+1]:= llst[2n] + spc; llst[2n+2]:= llst[2n+1] + dashfinish*dsh; llst:= 2n+2; % then convert the list of pathlengths to a list of pathtimes timelist(tlst)(llst)(p); % and keep only the subpaths corresponding to the dashes for i=1 upto n+1: dp[i]:= subpath(tlst[2*i-1],tlst[2*i]) of p; endfor dp:= n+1; fi; endgroup enddef; if unknown dotgap: dotgap:= 3pt; fi def dotlist (suffix dp) (expr p) = begingroup save lt,sl,n,tlst,llst; numeric tlst,tlst[],llst,llst[]; lt:= pathlength(p); n:= lt/dotgap; n:= round(n); if n = 0: llst[1]:= lt/2; llst:= 1; else: sl:= lt/n; llst[1]:= 0; for i= 2 upto n+1: llst[i]:= llst[i-1] + sl; endfor llst:= n+1; fi timelist(tlst)(llst)(p); for i=1 upto n+1: dp[i]:= point tlst[i] of p; endfor dp:= n+1 endgroup; enddef; % That was Frank Michielsen's contribution. %% Utility Macros. % (Reference for map macro: Abelson & Sussman, % _Structure & Interpretation of Computer Programs_, % page 250.) % Generate new text list by applying proc to each item in given % text list. The new list must be separated by commas, since I % wish to use it as the list in a `for' loop; this requirement % is difficult to reconcile with other needs. % NOTE WELL: Text arguments are particularly pernicious, % because they can inadvertently include a local name % used in the body of the macro. Also, METAFONT then gives % rather uninformative error messages. def map (text proc) (text list) = for a=list: , proc (a) endfor enddef; % apply procedure proc to each member of array p[] with p members. def maparr (text proc) (suffix p) = for i=1 upto p: proc (p[i]); endfor enddef; % convert text pairs list t to array p. % best used inside a vardef. % note: t must be a comma-separated list, % because the `for' needs it. def textpairs (suffix p) (text t) = save p; pair p[]; p:=0; for a=t: p[incr p] := a; endfor enddef; % chpair : `change pair'. % apply macro proc (which maps numeric -> numeric) % to each part of pair p, return resultant pair. vardef chpair (text proc) (expr p) = (proc (xpart p), proc (ypart p)) enddef; vardef floorpair (expr p) = chpair (floor) (p) enddef; vardef ceilingpair (expr p) = chpair (ceiling) (p) enddef; vardef hroundpair (expr p) = chpair (hround) (p) enddef; % Return the pair comprising the minimum x and minimum y coordinates % of all pairs in the array p[], where p itself is a numeric count of % the members in p[]. vardef minpair (suffix p) = save P_; pair P_; save x_, y_; numeric x_, y_; P_ := p1; for i=2 upto p: x_ := min (xpart P_, xpart p[i]); y_ := min (ypart P_, ypart p[i]); P_ := (x_, y_); endfor P_ enddef; % Similarly, but for the maximum coordinates. vardef maxpair (suffix p) = save P_; pair P_; save x_, y_; numeric x_, y_; P_ := p1; for i=2 upto p: x_ := max (xpart P_, xpart p[i]); y_ := max (ypart P_, ypart p[i]); P_ := (x_, y_); endfor P_ enddef; %% Coordinate Conversion. % (affine transformation) % graph -> sharp % xneg, xpos, yneg, ypos are in _graph_ coordinates. % plain MF's beginchar defines the _sharp_ values charwd and charht % as well the _pixel_ quantities w and h. % (Reference: _The METAFONTbook_, page 275, definition of beginchar.) % _graph_ and _sharp_ coordinates coincide iff ztr is the identity % transform. transform ztr, invztr; % currenttransform (.t_) takes care of the aspect ratio. % (Also, I may try coordinate transformations of currenttransform. % Consider bcoords ... ecoords.) def setztr = if debug: message " DEBUG "; message "charwd = " & decimal charwd & "pt#"; message "charht = " & decimal charht & "pt#"; message "w = " & decimal w & " pixels"; message "h = " & decimal h & " pixels"; message "xneg = " & decimal xneg; message "xneg = " & decimal xpos; message "yneg = " & decimal yneg; message "yneg = " & decimal ypos; message "xscale = " & decimal xscale; message "yscale = " & decimal yscale; message "unitlen = " & decimal unitlen & "pt#"; message "hppp = " & decimal hppp; message " GUBED "; fi ztr := identity shifted (-(xneg,yneg)) xscaled (xscale*unitlen*hppp) yscaled (yscale*unitlen*hppp); invztr := inverse ztr; if debug: message " DEBUG "; message "ztr: "; show ztr; message " GUBED "; fi enddef; % zconv converts a variety of expressions from graph -> sharp coords. % The expressions include pairs, paths, and transforms. % This is an affine transform. % Clipping greatly complicates zconv, because of the many cases. % Another disadvantage is that a clipped point distorts paths. boolean SimpleZconv; SimpleZconv = true; if SimpleZconv: vardef zconv (expr a) = a transformed ztr enddef; else: % Complicated zconv. vardef zconv (expr a) = if ClipOn: % Clipping on the character boundary, if I know how. if pair a: if (xpart a < xneg) or (xpart a > xpos) or (ypart a < yneg) or (ypart a > ypos): origin else: % A pair that is within the outer boundary. a transformed ztr fi else: % Not a pair. (Paths should also be clipped, but how?) a transformed ztr fi else: % No clipping. a transformed ztr fi enddef; fi % SimpleZconv. % invzconv converts a variety of expressions from sharp -> graph coords. % The expressions include pairs, paths, and transforms. % This is an affine transform. vardef invzconv (expr a) = a transformed invztr enddef; % vconv converts a vector v from graph -> sharp coords. % This is a linear (ie, vector) transform. vardef vconv (expr v) = (v transformed ztr) - (origin transformed ztr) enddef; % invvconv converts a vector from sharp -> graph coords. % This is a linear (ie, vector) transform. vardef invvconv (expr v) = (v transformed invztr) - (origin transformed invztr) enddef; %% Initial Setup. % active_plane is the active drawing plane. % currentpicture is unknown at this stage % (because it's set in beginchar), % so use a def, not a picture assignment. def active_plane = currentpicture enddef; def initpic = setztr; def active_plane = currentpicture enddef; % Set drawpen to standard shape and size. interim penwd := 0.5pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; % Sets currentpen to drawpen. pickup drawpen; if ClipOn: ClipPath := 1; % Specified character boundary. ClipPath[1] := rect (origin, (w,h)); fi if debug: message " DEBUG "; message "Drawing Nominal Bounding Box Around MF Picture"; safedraw rect (origin, (w,h)); message " GUBED "; fi enddef; %% Compatibility with older graphbase.mf (for fig2dev's genmf.c) def mfpicenv = enddef; def endmfpicenv = enddef; def bounds (expr a,b,c,d) = xneg := a; xpos := b; yneg := c; ypos := d; enddef; %% Character Wrapper. def beginmfpic (expr ch) = beginchar (ch, (xpos-xneg)*xscale*unitlen, (ypos-yneg)*yscale*unitlen, 0); initpic; enddef; def endmfpic = if debug: message " DEBUG "; message "TFM charwd = " & decimal charwd & "pt#"; message "TFM charht = " & decimal charht & "pt#"; message " GUBED "; fi endchar; enddef; %% Extra Trigonometric and Hyperbolic Functions. % tand, cotd, acos, asin; % exp, ln, cosh, sinh, acosh, asinh. % NOTE: acos and asin return angle in degrees. def tand (expr x) = (sind (x) / cosd (x)) enddef; def cotd (expr x) = (cosd (x) / sind (x)) enddef; def acos (expr x) = angle ((x, 1+-+x)) enddef; def asin (expr y) = angle ((1+-+y, y)) enddef; def exp primary X = (mexp (256 * X)) enddef; def ln primary X = (mlog (X) / 256) enddef; vardef cosh primary X = save temp; temp = exp X; (temp + 1/temp) / 2; enddef; vardef sinh primary X = save temp; temp = exp X; (temp - 1/temp) / 2; enddef; def acosh (expr y) = ln (y + (y+-+1)) enddef; def asinh (expr y) = ln (y + (y++1)) enddef; %% Coordinate Systems and Transformations. % Coordinate Nesting. % Make this local, by using a (global) transform stack; % and transparent to METAFONT syntax, by using hide. % (For a primary expression, would use gobble instead of hide.) transform T_stack[]; T_stack := 0; def T_push (expr T) = T_stack[incr T_stack] := T; enddef; def T_pop (suffix $) = if T_stack > 0: $ := T_stack[T_stack]; T_stack := T_stack - 1; fi enddef; def bcoords = hide (T_push (ztr)) enddef; def ecoords = hide (T_pop (ztr)) enddef; % Coordinate Changes. % Example: `apply_t (rotated theta);' % where Transformer is `rotated theta'. def apply_t (text Transformer) = ztr := identity Transformer transformed ztr; % currenttransform := identity Transformer transformed currenttransform; enddef; let xslant = slanted; % (x+sy, y). def yslant primary s = % (x, y+sx). transformed begingroup transform T_; origin transformed T_ = origin; (1,0) transformed T_ = (1,s); (0,1) transformed T_ = (0,1); T_ endgroup enddef; def zslant primary p = % (xu+yv, xv+yu), where p = (u,v). transformed begingroup transform T_; xpart T_ = ypart T_ = 0; xxpart T_ = yypart T_ = xpart p; xypart T_ = yxpart T_ = ypart p; T_ endgroup enddef; def xyswap = % swap X and Y axes. zslant (0,1) enddef; def boost primary X = % boosts for special relativity. zslant (cosh X, sinh X) enddef; % Path Rotation. % Rotate path f about point p by angle th, % where f and p are in _graph_ coordinates, % and th is in _sharp_ coordinates. vardef rotatedpath (expr p,th) expr f = f transformed ztr rotatedaround (p transformed ztr, th) transformed invztr enddef; %% Bitmaps, Clipping and Rendering. % Bitmap to Bitmap --- Bitwise Operations. % NB: `cull' is *unknown* to METAPOST, plain METAPOST, and mfplain. if metapost: % p being a pair. def keeping p = enddef; % v being a picture. def cull expr v = enddef; fi % Change a picture u to {0,1} (`monochrome') form. % Apply this before the other monochrome operations. def mono (suffix u) = cull u keeping (1, infinity); enddef; % bitwise and. def andto (suffix u) (expr v) = addto u also v; cull u keeping (2,2); enddef; primarydef u picand v = begingroup picture t; t=u+v; cull t keeping (2,2); t endgroup enddef; % inclusive or. def orto (suffix u) (expr v) = addto u also v; cull u keeping (1,2); enddef; primarydef u picor v = begingroup picture t; t=u+v; cull t keeping (1,2); t endgroup enddef; % exclusive or. def xorto (suffix u) (expr v) = addto u also v; cull u keeping (1,1); enddef; primarydef u picxor v = begingroup picture t; t=u+v; cull t keeping (1,1); t endgroup enddef; % (nonsymmetric) difference. def subto (suffix u) (expr v) = addto u also -v; cull u keeping (1,1); enddef; primarydef u picsub v = begingroup picture t; t=u-v; cull t keeping (1,1); t endgroup enddef; % Contour to Bitmap --- Clipping and Filling. % (safely filled) interior of contour c, % where c is in _pixel_ coordinates; % adapted from _The METAFONTbook_'s "safefill". % plain.mf defines `.t_' as `transformed currenttransform'; % currenttransform compensates for the aspect ratio of _pixels_, % and is set in mode_setup, which is called near the top of % grafbase.mf; see above. % (Reference: _The METAFONTbook_, page 269.) vardef interior expr c = save vs; picture vs; vs=nullpicture; interim turningcheck := 0; addto vs contour (c.t_) withpen nullpen; cull vs dropping (0,0); vs enddef; % (safely filled) interiors of contours cc[], % where cc[] are in _pixel_ coordinates; vardef interiors suffix cc = save vss; picture vss; vss=nullpicture; for i=1 upto cc: orto (vss, interior cc[i]); endfor vss enddef; % derived bitmap operations. % clip picture vt to interior of cycle c, % where c is in _pixel_ coordinates. def clipto (suffix vt) expr c = mono (vt); andto (vt, interior c); enddef; % clip picture vt to interiors of cycles in path array cc, % where c is in _pixel_ coordinates. def clipsto (suffix vt, cc) = mono (vt); andto (vt, interiors cc); enddef; % clip copy of picture vt to interior of cycle c, % where c is in _pixel_ coordinates, % return result (which is a `subpicture' of vt). vardef clip (suffix vt) expr c = mono (vt); vt picand (interior c) enddef; % fill region inside c in picture vt, % where c is in _pixel_ coordinates. vardef picfill (suffix vt) expr c = mono (vt); orto (vt, interior c); enddef; % unfill region inside c in picture vt, % where c is in _pixel_ coordinates. vardef picunfill (suffix vt) expr c = mono (vt); subto (vt, interior c); enddef; % (return) reverse video of vt inside c, % where c is in _pixel_ coordinates. vardef picneg (suffix vt) expr c = mono (vt); (interior c) picsub vt enddef; % Rendering Paths --- Drawing and Filling. % draw path f in picture v using pen q, % where f is in _pixel_ coordinates. def shpath (suffix v) (expr q) (expr f) = interim turningcheck := 0; addto v doublepath (f.t_) withpen q; enddef; % draw path d safely, return picture of drawing, % where d is in _pixel_ coordinates. % (Courtesy of Uwe Bonnes.) numeric minpenwd; minpenwd := 0.01pt; vardef picpath expr d = save vs; picture vs; vs=nullpicture; if penwd > minpenwd: shpath (vs, drawpen) (d); mono (vs); fi vs enddef; % drawing a path d safely in picture vt, % where d is in _pixel_ coordinates. def picdraw (suffix vt) expr d = addto vt also (picpath d); enddef; % drawing a path d safely, % where d is in _pixel_ coordinates. def safedraw expr d = picdraw (active_plane) d; if ClipOn: clipsto (active_plane, ClipPath); fi enddef; % filling a region, the interior of c, safely, % where c is in _pixel_ coordinates. def safefill expr c = if cycle c: picfill (active_plane) c; if ClipOn: clipsto (active_plane, ClipPath); fi else: % so we can see something safedraw c; fi enddef; % erasing a region (the interior of c) safely, % where c is in _pixel_ coordinates. % - really works this time - def safeunfill expr c = if cycle c: picunfill (active_plane) c; if ClipOn: clipsto (active_plane, ClipPath); fi else: % so we can see something safedraw c; fi enddef; % draw path f and return path f, % where f is in _graph_ coordinates. vardef drawn expr f = safedraw zconv (f); f enddef; % fill contour c and return contour c, % where c is in _graph_ coordinates. vardef filled expr c = safefill zconv (c); c enddef; % unfill contour c and return contour c, % where c is in _graph_ coordinates. vardef unfilled expr c = safeunfill zconv (c); c enddef; %% Shading and Hatching. % Shading % - expressed mainly in _pixel_ coordinates. % A closed path representing one dot of unit size % (one pixel across is recommended). path dotpath; % Initially, set dotpath to a circle. dotpath := fullcircle; % Return picture that renders specified apath path to specified scale. % We use ceiling to ensure visibility. vardef setdot (expr apath) (expr scale) = if cycle apath: interior else: if debug: errhelp ("I hope you don't mind"); errmessage ("setdot with open `boundary', drawing curve instead"); fi picpath fi (apath scaled ceiling (scale)) enddef; % Picture containing one dot. picture onedot; % Initially, set onedot to picture of initial dotpath scaled 0.5pt. onedot := setdot (dotpath, 0.5pt); % Draw picture w at position p in picture v, % where p is in _pixel_ coordinates. def picdot (suffix v) (expr w) (expr p) = addto v also (w shifted (hroundpair (p.t_))); enddef; % Draw the onedot picture % at position p (in _pixel_ coordinates) % in active drawing plane. def pixdot (expr p) = picdot (active_plane, onedot, p); enddef; % Draw the onedot picture % at position p (in _graph_ coordinates) % in active drawing plane. def ourdot (expr p) = pixdot (zconv (p)); enddef; % Whether to show bounding boxes (for debugging purposes). boolean showbbox; showbbox := false; % Calculate tight bounding box points (ll, ur) for path g. % g is in _pixel_ coordinates. vardef tightbbox (expr g) (suffix ll, ur) = % vertical tangent: def vtang (expr x) = (x, -infinity)--(x, infinity) enddef; % horizontal tangent: def htang (expr y) = (-infinity, y)--(infinity, y) enddef; % xlimit(x) = true iff vtang(x) does not intersect path g: vardef xlimit (expr x) = (xpart (g intersectiontimes (vtang(x))) < 0) enddef; % ylimit(y) = true iff htang(y) does not intersect path g: vardef ylimit (expr y) = (xpart (g intersectiontimes (htang(y))) < 0) enddef; save minx, maxx, miny, maxy; numeric minx, maxx, miny, maxy; minx := (solve xlimit (-infinity, xpart point 1 of g)); maxx := (solve xlimit ( infinity, xpart point 1 of g)); miny := (solve ylimit (-infinity, ypart point 1 of g)); maxy := (solve ylimit ( infinity, ypart point 1 of g)); ll := (minx, miny); ur := (maxx, maxy); if showbbox: safedraw (rect (ll, ur)); fi enddef; % calculate tight bounding box points (ll, ur) for path array g. % g is in _pixel_ coordinates. vardef tbbox (suffix g) (suffix ll, ur) = save gll, gur; pair gll, gur; for i=1 upto g: tightbbox (g[i], gll[i], gur[i]); endfor gll = gur = g; ll := minpair (gll); ur := maxpair (gur); if showbbox: safedraw (rect (ll, ur)); fi enddef; % calculate loose bounding box points (ll, ur) for path g. % g is in _pixel_ coordinates. vardef bbox (expr g) (suffix ll, ur) = ur := ll := point 0 of g; save p; pair p[]; for i=0 upto length g: p1 := point i of g; p2 := precontrol i of g; p3 := postcontrol i of g; p := 4; p4 := ll; ll := minpair (p); p4 := ur; ur := maxpair (p); endfor if showbbox: safedraw (rect (ll, ur)); fi enddef; % shade interior of path f with dots, % of pre-specified shape and size (see setdot macro), % spaced sp apart, % where f is in _graph_ coordinates, % and sp is in _pixel_ coordinates. % Return f. vardef shade (expr sp) expr f = save g; path g; g := zconv (f); if not cycle g: % so we can see something safedraw g; message "attempt to shade open curve; drawing curve instead"; elseif sp<=0: safefill g; else: save ll, ur; pair ll, ur; bbox (g, ll, ur); ll := sp * (ceilingpair (ll/sp)); save mn; pair mn; mn := floorpair ((ur-ll)/sp); m := xpart mn; n := ypart mn; twosp := 2*sp; save p; pair p[]; p2 := ll; picture v; v := nullpicture; for i=0 upto m: p3 := p2 if odd i: + (0,sp) fi; for j=0 upto n: if (not odd (i+j)): picdot (v, onedot, p3); p3 := p3 + (0,twosp); fi endfor p2:=p2+(sp,0); endfor addto active_plane also clip(v) g; fi f enddef; % Given: % a picture variable v_c, % an affine transform CT, % a spacing sp, % and an upright box (with edges xa, xb, ya, yb) % specified in the coordinate system that CT determines. % Then: % hatch the interior of the box in the picture, % using lines that in that coordinate system are horizontal % and spaced sp units apart. % Notes: % 1. sp must be strictly positive. % 2. CT, xa, xb, ya, yb, and sp are in _pixel_ coordinates. % 3. xa, xb, ya, and yb are the left, right, bottom and top % edges of the box. vardef thatchf (suffix v_c) (expr CT, sp, xa, xb, ya, yb) = % Number of hatch lines. save m; numeric m; m := ceiling (abs (yb - ya) / sp); save p; pair p[]; % In Pixel Coords. % Hatch lines have same alignment, spacing and orientation. % Displacement from one hatch line to the next. p1 := sp * up; % Y coordinate of first hatch line. save yc; numeric yc; yc := sp * ceiling (ya/sp); % Endpoints of first hatch line. p2 := (xa, yc); p3 := (xb, yc); for i=1 upto m: % The next source line does all the drawing. shpath (v_c, hatchpen) ((p2--p3) transformed CT); p2 := p2+p1; p3 := p3+p1; endfor enddef; % Hatch interior of path f % with lines at angle theta, % spaced sp apart. % where f is in _graph_ coordinates, % and sp is in _pixel_ coordinates. vardef thatch (expr sp, theta) expr f = % g is in _pixel_ coordinates. save g; path g; g := zconv (f); if not cycle g: % so we can see something message "attempt to hatch open curve; drawing curve instead"; safedraw g; elseif sp<=0: safefill g; else: save v_c; picture v_c; v_c := nullpicture; save CT; transform CT; CT := identity rotated theta; save ll, ur; pair ll, ur; bbox (g transformed inverse CT, ll, ur); save xa, xb, ya, yb; numeric xa, xb, ya, yb; (xa, ya) = ll; (xb, yb) = ur; % Hatch interior of bounding box. thatchf (v_c, CT, sp, xa, xb, ya, yb); % Clip to interior of path g. addto active_plane also clip(v_c) g; % v_c; fi f enddef; % Hatch interior of path f with horizontal lines spaced sp apart. % where f is in _graph_ coordinates, % and sp is in _pixel_ coordinates. vardef hhatch (expr sp) expr f = thatch (sp, 0 deg) f enddef; % Hatch interior of path f with vertical lines spaced sp apart. % where f is in _graph_ coordinates, % and sp is in _pixel_ coordinates. vardef vhatch (expr sp) expr f = thatch (sp, 90 deg) f enddef; % Left-hatch interior of path f with lines spaced sp apart, % where f is in _graph_ coordinates, % and sp is in _pixel_ coordinates. % Return f. vardef lhatch (expr sp) expr f = thatch (sp, -45 deg) f enddef; % Right-hatch interior of path f with lines spaced sp apart, % where f is in _graph_ coordinates, % and sp is in _pixel_ coordinates. % Return f. vardef rhatch (expr sp) expr f = thatch (sp, 45 deg) f enddef; % Cross-hatch interior of path f with lines spaced sp apart, % where f is in _graph_ coordinates, % and sp is in _pixel_ coordinates. vardef xhatch (expr sp) expr f = lhatch (sp) rhatch (sp) f enddef; %% Tiles. % environment for a tile `atile', drawn with unit length % `unit', with width `width' units and height `height' units. % If `clipon' is true, clip the drawing to the tile's % (width x height) boundary. def tile (suffix atile) (expr unit, width, height, clipon) = picture atile.pic; atile.pic=nullpicture; % for reference by `tess' macro: numeric atile.wd, atile.ht; atile.wd=width; atile.ht=height; begingroup save active_plane; def active_plane = atile.pic enddef; save wtr; transform wtr; wtr = identity scaled unit; save ClipOn; boolean ClipOn; if clipon: ClipOn := true; save ClipPath; path ClipPath[]; ClipPath = 1; ClipPath[1] = ((0,0)--(width,0)--(width,height)--(0,height)--cycle) transformed wtr; else: ClipOn := false; fi enddef; def endtile = endgroup enddef; % test whether atile is really a tile. def is_tile (suffix atile) = ((picture atile.pic) and (numeric atile.wd) and (numeric atile.ht) and (boolean atile.clipon)) enddef; % tesselation of interior of closed path c, % using tile `atile'. % c is in _graph_ units. % return c. vardef tess (suffix atile) expr c = save g; path g; g := zconv (c); if cycle g: save ll, ur; pair ll, ur; bbox (g, ll, ur); save a, b; numeric a, b; if not is_tile (atile): errhelp ("Please check the faulty definition of the `tile'"); errmessage ("tess given invalid tile"); fi a = atile.wd; b = atile.ht; save m[], n[]; numeric m[], n[]; m1 = floor ((xpart ll) / a); m2 = ceiling ((xpart ur) / a); n1 = floor ((ypart ll) / b); n2 = ceiling ((ypart ur) / b); save vs; picture vs; vs := nullpicture; % fill vs with rectangular tesselation large enough % to cover interior of g: for i=m1 upto m2: for j=n1 upto n2: addto vs also (atile.pic shifted (i*a, j*b); endfor endfor % trim tesselation to interior of g: clipto (vs) g; addto active_plane also vs; else: % so we can see something safedraw g; message "attempt to tesselate open curve; drawing curve instead"; fi c enddef; %% Dots and Dashes. % Draw dashed curve along path f; % f is in _graph_ coordinates; % return f. vardef dashed (expr dlen, dgap) expr f = save dashsize; numeric dashsize; dashsize := dlen; save dashgap; numeric dashgap; dashgap := dgap; save g; path g; g := zconv (f); save dp; numeric dp; path dp[]; dashlist (dp) (g); for i=1 upto dp: safedraw dp[i]; endfor f enddef; % Draw dotted curve along path f; % f is in _graph_ coordinates; % return f. vardef dotted (expr dsize, dgap) expr f = save dotgap; numeric dotgap; dotgap := dgap; save g; path g; g := zconv (f); save dp; numeric dp; pair dp[]; dotlist (dp) (g); onedot := setdot (dotpath, dsize); for i=1 upto dp: pixdot (dp[i]); endfor f enddef; %% Points. % ptwd is a numeric scale factor, % b is a pair; % return a path representing % a point % with diameter ptwd % located at b. % All quantities are in _pixel_ units. vardef bpoint (expr ptwd, b) = fullcircle scaled ptwd shifted b enddef; % Draw discs with _pixel_ diameter ptwd % at the _graph_ locations listed in the text t. % If filled is true, make the discs black, % otherwise make them white with a black boundary. vardef pointd (expr ptwd, filled) (text t) = save f; path f; % in _graph_ coords. for a=t: f := bpoint (ptwd, zconv (a)); if filled: safefill f; else: safeunfill f; safedraw f; fi endfor enddef; %% Arrows. % arrowheads are in _pixel_ coordinates. newinternal hdwdr, hdten; interim hdwdr := 1; interim hdten := 1; boolean hfilled; hfilled := false; % wr is in _pixel_ coordinates; % tens is a pure number; % fil is _boolean_. def headshape (expr wr, tens, fil) = interim hdwdr := wr; interim hdten := tens; hfilled := fil; enddef; % initial arrowhead shape. headshape (1, 1, false); % front, back and hdwdr are in _pixel_ coords. vardef head (expr front, back, hdwdr, tens, filled) = save p, side; pair p[], side; side := (hdwdr/2) * ((front-back) rotated 90); p1 := back + side; p2 := back - side; save f; path f; f := p1..tension tens..{front-back}front{back-front}..tension tens..p2; if filled: safefill (f--cycle); fi safedraw f; enddef; % hlen, hrot and hback are in _pixel_ coords. % f is in _graph_ coords. % return f. vardef headpath (expr hlen, hrot, hback) expr f = save g; path g; g := zconv (f); save P; pair P[]; P2 := point (length g) of g; P1 := direction (length g) of g; if P1 <> (0,0) : P3 := ((unitvector (P1)) rotated hrot); P4 := P2 - (hback * P3); P5 := P4 - (hlen * P3); head (P4, P5, hdwdr, hdten, hfilled); if debug: message " DEBUG "; message "P1 to P5 :"; show P1, P2, P3, P4, P5; message " GUBED "; fi fi f enddef; % hlen is in _pixel_ coordinates; % f is in _graph_ coords. def arrowdraw (expr hlen) (expr f) = safedraw zconv (f); store (trash) headpath (hlen, 0, 0pt) f; enddef; %% Axes, Axis Tic Marks, and Grid. % hlen is in _pixel_ coords. % axes are described by xneg, xpos, yneg and ypos, % which are in _graph_ coords. def axes (expr hlen) = arrowdraw (hlen) ((0,yneg) .. (0,ypos)); arrowdraw (hlen) ((xneg,0) .. (xpos,0)); enddef; % Axis Tic Marks are at right angles to axes, % and have length len. % len is in _pixel_ Y coords. % t is a list of _graph_ X coords. vardef xmarks (expr len) (text t) = % P is position on axis, tic is tic mark. save tic, P; pair tic, P; tic := (len/2) * unitvector (vconv (right)) rotated 90; for a=t: P := zconv (a * right); safedraw (((-tic)..tic) shifted P); endfor enddef; % len is in _pixel_ X coords. % t is a list of _graph_ Y coords. vardef ymarks (expr len) (text t) = save tic, P; pair tic, P; tic := (len/2) * unitvector (vconv (up)) rotated 90; for a=t: P := zconv (a * up); safedraw (((-tic)..tic) shifted P); endfor enddef; % Grid. % Draw dots at each grid coordinate. % xspace, yspace = spacings between grid coordinates, in _graph_ coords. vardef grid (expr xspace, yspace) = for x=xneg step xspace until xpos: for y=yneg step yspace until ypos: ourdot ((x, y)); endfor endfor enddef; %% Upright Rectangles. % coordinate-independent. vardef rect (expr ll, ur) = ll--(xpart ll,ypart ur)-- ur--(xpart ur,ypart ll)--cycle enddef; %% Path Construction. % coordinate-independent. % general path construction vardef mkpath (expr smooth,cyclic) (suffix pts) = if smooth: mksmooth (cyclic, pts) else: mkpoly (cyclic, pts) fi enddef; %% Polylines, including Polygons. % coordinate-independent. % polyline construction % pts is both an array of pairs or paths, % and a count of its members (from 1 to pts). vardef mkpoly (expr cyclic) (suffix pts) = for i=1 upto pts-1: pts[i]-- endfor pts[pts] if cyclic: --cycle fi enddef; vardef polyline (expr cyclic) (text t) = textpairs (p,t); mkpoly (cyclic, p) enddef; %% Smooth Curves. % coordinate-independent. % smooth path construction vardef mksmooth (expr cyclic) (suffix pts) = if cyclic: pts[1]{pts[2]-pts[pts]} else: pts[1] fi for i=2 upto pts-1: ..pts[i]{pts[i+1]-pts[i-1]} endfor if cyclic: ..pts[pts]{pts[1]-pts[pts-1]}..cycle else: ..pts[pts] fi enddef; vardef curve (expr cyclic) (text t) = textpairs (p,t); mksmooth (cyclic, p) enddef; % quadratic B-splines. % p[] == B-spline control points, % p in number. vardef openqbs (text t) = textpairs (p,t); for i=1 upto p-2: 0.5[p[i],p[i+1]] ..controls 1/6[p[i+1],p[i]] and 1/6[p[i+1],p[i+2]].. endfor 0.5[p[p-1],p[p]] enddef; vardef closedqbs (text t) = textpairs (p,t); p[p+1]:=p1; p[p+2]:=p2; for i=1 upto p: 0.5[p[i],p[i+1]] ..controls 1/6[p[i+1],p[i]] and 1/6[p[i+1],p[i+2]].. endfor cycle enddef; % cubic B-splines. vardef mkopencbs (suffix b) = for i=1 upto b-3: (b[i]+4b[i+1]+b[i+2])/6 ..controls 1/3[b[i+1],b[i+2]] and 2/3[b[i+1],b[i+2]].. endfor (b[b-2]+4b[b-1]+b[b])/6 enddef; vardef opencbs (text t) = textpairs (b,t); mkopencbs (b) enddef; vardef mkclosedcbs (suffix b) = b[b+1]:=b1; b[b+2]:=b2; for i=1 upto b: (b[i]+4b[i+1]+b[i+2])/6 ..controls 1/3[b[i+1],b[i+2]] and 2/3[b[i+1],b[i+2]].. endfor cycle enddef; vardef closedcbs (text t) = textpairs (b,t); mkclosedcbs (b) enddef; %% Path Closure. % coordinate-independent. %% QUESTION: How to close open paths while retaining their original shape? % path f closed by line segment. vardef lclosed expr f = f if not cycle f: --cycle fi enddef; % close path f in manner of mksmooth. vardef sclosed expr f = if cycle f: f else: save n; numeric n; n := length f; % number of Bezier segments in f if n <= 1: % single Bezier segment (n=1), or single point (n=0) f..cycle else: % (n >= 2) (point 0 of f){(point 1 of f)-(point infinity of f)} ..(subpath (1,n-1) of f) ..(point infinity of f){(point 0 of f)-(point (n-1) of f)} ..cycle fi fi enddef; % path f closed by bezier. vardef bclosed expr f = f if not cycle f: ..cycle fi enddef; % conversion of Bezier segment key points, z, % to cubic B-spline control points, b. def ztob (suffix z, b) = save b; pair b[]; b := 4; b1 = 6z1-7z2+2z3; b2 = 2z2- z3; b3 = - z2+2z3; b4 = 2z2-7z3+6z4; enddef; % closure of path f by a cubic B-spline. vardef cbclosed expr f = if cycle f: f else: save p; pair p[]; p1 := point 0 of f; p2 := postcontrol 0 of f; p3 := precontrol 1 of f; p4 := point 1 of f; ztob (p,a); n := length f; p1 := point (n-1) of f; p2 := postcontrol (n-1) of f; p3 := precontrol infinity of f; p4 := point infinity of f; ztob (p,b); b1 := b3; b2 := b4; b3 := a1; b4 := a2; f..mkopencbs(b)..cycle fi enddef; %% Circles and Ellipses. % coordinate-independent. vardef ellipse (expr center, radx, rady, angle) = save t; transform t; t:=identity xscaled (2*radx) yscaled (2*rady) rotated angle shifted center; fullcircle transformed t enddef; def circle (expr center,rad) = ellipse (center,rad,rad,0) enddef; %% Circular Arcs. % coordinate-independent. % center-point-sweep form of arc vardef arc (expr center, from, sweep) = save f; path f; f := from; if (center<>from) and (sweep<>0): n := ceiling (abs(sweep)/45) + 1; if n<3: n := 3; fi theta := sweep/(n-1); save p,q; pair p,q; p := from; for i=2 upto n: p := p rotatedabout (center, theta); q := (p-center) rotated 90; if theta<0: q := -q; fi f := f..p{unitvector q}; endfor fi f enddef; % (0.5)[from,to] is mid point of chord across arc. % cotd (sweep/2) is the displacement of ... def arccenter (expr from, to, sweep) = ((0.5)[from,to] if (sweep mod 360) <> 0: + ((cotd (sweep/2)) * ((to-from) rotated 90) / 2) fi) enddef; % point-point-sweep form of arc vardef arcpps (expr from, to, sweep) = save center; pair center; center := arccenter (from,to,sweep); arc (center, from, sweep) enddef; % modified polar -- % center, angle, angle, radius vardef arcplr (expr center, frtheta, totheta, rad) = save from; pair from; from:=center+rad*(dir frtheta); arc (center, from, totheta-frtheta) enddef; % center-point-sweep form def arccps (expr center, from, theta) = (arc (center, from, theta)) enddef; % point-point-point form vardef arcppp (expr first, second, third) = save sweep; numeric sweep; sweep:=2*(angle(third-second)-angle(second-first)); sweep:=sweep mod 720; if sweep > 360: sweep:=sweep-720; fi critical:=5; if abs(sweep) <= critical: % center may blow out save p; pair p[]; p:=3; p1:=first; p2:=second; p3:=third; mksmooth (false,p) else: save m, d, center; pair m[], d[], center; m1:=(0.5)[first,second]; d1:=(second-first) rotated 90; m2:=(0.5)[second,third]; d2:=(third-second) rotated 90; center = m1+whatever*d1 = m2+whatever*d2; arc (center,first,sweep) fi enddef; %% Polar Coordinates. % coordinate-independent. % polar to rectangular conversion: (r,th) -> (x,y) = r * dir (th). vardef polar (expr p) = (xpart p) * dir (ypart p) enddef; %% Turtle. % coordinate-independent. % Argument t is a list of graph coord. pairs. % First item in list t is starting point, % rest are successive moves. vardef turtle (text t) = save p; pair p[]; p:=0; for a=t: p[incr p] := if p<>1: p[p-1] + fi a; endfor mkpoly (false, p) enddef; %% Sectors. % coordinate-independent. vardef sector (expr center, rad, frtheta, totheta) = save from; pair from; if debug: message " DEBUG "; message "sector's center, rad, frtheta, totheta: "; show center, rad, frtheta, totheta; message " GUBED "; fi from:=center+rad*(dir frtheta); if debug: message " DEBUG "; message "sector's from: "; show from; message " GUBED "; fi center -- arc (center,from,totheta-frtheta) -- cycle enddef; %% Utility Functions. % coordinate-independent. % the identity function. def id (expr x) = x enddef; %% Plotting of functions. % coordinate-independent. % In these macros, if the boolean argument `smooth' then the path % returned will be a B\'ezier, otherwise it will be a polyline. % In mkfcn, for example, the parameter values determining the points % through which the path interpolates begin at bmin, and step by bst % until bmax is reached or exceeded. % mkfcn: convert function `pf : (x, y) = pf (t)' to a path. % pf : numeric -> pair. % domain interpreted as parameter values, % codomain as cartesian coordinate pairs. vardef mkfcn (expr smooth) (expr bmin, bmax, bst) (text pf) = save p; pair p[]; p := 0; for bv = bmin step bst until bmax+(bst/2): p[incr p] := pf (bv); endfor mkpath (smooth, false, p) enddef; let tfcn = mkfcn; % parafcn: like tfcn, but the text argument is a literal pair % expression `(fa(t), fb(t))' in the literal `t'. vardef parafcn (expr smooth) (expr bmin, bmax, bst) (text pf) = save p; pair p[]; p := 0; for t = bmin step bst until bmax+(bst/2): p[incr p] := pf; endfor mkpath (smooth, false, p) enddef; % xfcn: convert function `fx : y = f (x)' to a path. % fx : numeric -> numeric. % domain interpreted as X coordinate, % codomain as Y coordinate. % Return the path. vardef xfcn (expr smooth) (expr xmin, xmax, st) (text fx) = def fp (expr x) = (x, fx(x)) enddef; mkfcn (smooth) (xmin, xmax, st) (fp) enddef; % function: like xfcn, but the text argument is a literal numeric % expression `fx(x)' in the literal `x'. vardef function (expr smooth) (expr xmin, xmax, st) (text fx) = def fp (expr x) = (x, fx) enddef; mkfcn (smooth) (xmin, xmax, st) (fp) enddef; % rfcn: convert function `ft : r = ft (\theta)' to a path. % ft : numeric -> numeric. % domain interpreted as angle in degrees, % codomain as radial distance from origin. vardef rfcn (expr smooth) (expr tmin, tmax, st) (text ft) = def fq (expr t) = (ft(t) * (dir t)) enddef; mkfcn (smooth) (tmin, tmax, st) (fq) enddef; % plrfcn: like rfcn, but the text argument is a literal numeric % expression `ft(t)' in the literal `t' which represents the % angle \theta. vardef plrfcn (expr smooth) (expr tmin, tmax, st) (text ft) = def fq (expr t) = (ft * (dir t)) enddef; mkfcn (smooth) (tmin, tmax, st) (fq) enddef; %% Overlays - taken from MFbook, p 295. (Bruce Leban) picture totalpicture; boolean totalnull, currentnull; def clearit = currentpicture := totalpicture := nullpicture; currentnull := totalnull := true; enddef; def keepit = mono (currentpicture); addto totalpicture also currentpicture; currentpicture := nullpicture; totalnull := currentnull; currentnull := true; enddef; def addto_currentpicture = currentnull := false; addto currentpicture enddef; def mergeit (text do) = if totalnull: do currentpicture elseif currentnull: do totalpicture else: begingroup save v; picture v; v:=currentpicture; mono (v); addto v also totalpicture; do v endgroup fi enddef; def shipit = mergeit (shipout) enddef; def showit_ = mergeit (show_) enddef; def show_ suffix v = display v inwindow currentwindow enddef; %%% %%% end grafbase.mf %%% % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=32; interim hdwdr:=1; interim hdten:=1; % % figs/032doublepoint.fig (char 33) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 0.29pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) filled circle((3.000000,2.820000),0.500000); penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((1.000000, 0.820000), (5.000000, 4.820000)); store (curpath) drawn polyline(false) ((1.250000, 3.820000), (1.000000, 4.820000), (2.000000, 4.570000)); store (curpath) drawn polyline(false) ((1.000000, 4.820000), (5.000000, 0.820000)); store (curpath) drawn polyline(false) ((4.000000, 4.570000), (5.000000, 4.820000), (4.750000, 3.820000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=33; interim hdwdr:=1; interim hdten:=1; % % figs/033overcrossing.fig (char 34) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((1.250000, 3.820000), (1.000000, 4.820000), (2.000000, 4.570000)); store (curpath) drawn polyline(false) ((2.500000, 3.320000), (1.000000, 4.820000)); store (curpath) drawn polyline(false) ((1.000000, 0.820000), (5.000000, 4.820000)); store (curpath) drawn polyline(false) ((4.000000, 4.570000), (5.000000, 4.820000), (4.750000, 3.820000)); store (curpath) drawn polyline(false) ((5.000000, 0.820000), (3.500000, 2.320000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=34; interim hdwdr:=1; interim hdten:=1; % % figs/034undercrossing.fig (char 35) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((1.000000, 4.820000), (5.000000, 0.820000)); store (curpath) drawn polyline(false) ((1.250000, 3.820000), (1.000000, 4.820000), (2.000000, 4.570000)); store (curpath) drawn polyline(false) ((1.000000, 0.820000), (2.500000, 2.320000)); store (curpath) drawn polyline(false) ((3.500000, 3.320000), (5.000000, 4.820000)); store (curpath) drawn polyline(false) ((4.000000, 4.570000), (5.000000, 4.820000), (4.750000, 3.820000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=35; interim hdwdr:=1; interim hdten:=1; % % figs/035fourwheel.fig (char 36) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn circle((3.000000,2.820000),1.414167); store (curpath) drawn polyline(false) ((2.000000, 3.820000), (1.250000, 4.570000)); store (curpath) drawn polyline(false) ((2.000000, 1.820000), (1.250000, 1.070000)); store (curpath) drawn polyline(false) ((4.000000, 1.820000), (4.750000, 1.070000)); store (curpath) drawn polyline(false) ((4.000000, 3.820000), (4.750000, 4.570000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=36; interim hdwdr:=1; interim hdten:=1; % % figs/036pentagon.fig (char 37) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(true) ((3.000000, 4.632500), (1.097500, 3.250833), (1.824167, 1.014167), (4.175833, 1.014167), (4.902500, 3.250833), (3.000000, 4.632500)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=37; interim hdwdr:=1; interim hdten:=1; % % figs/037isolatedchord.fig (char 38) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn arcppp((1.687500,1.820000), (3.000000,3.132500), (4.312500,1.820000)); penwd := 8.77pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((1.000000, 1.820000), (5.000000, 1.820000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=38; interim hdwdr:=1; interim hdten:=1; % % figs/038righttrefoil.fig (char 39) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((3.514167, 3.525000), (3.512500, 3.525000), (3.509167, 3.525833), (3.502500, 3.525833), (3.491667, 3.526667), (3.477500, 3.528333), (3.458333, 3.530000), (3.434167, 3.531667), (3.406667, 3.534167), (3.374167, 3.536667), (3.338333, 3.539167), (3.299167, 3.542500), (3.258333, 3.545000), (3.215833, 3.547500), (3.172500, 3.550000), (3.128333, 3.552500), (3.085000, 3.555000), (3.042500, 3.556667), (3.000833, 3.558333), (2.960833, 3.559167), (2.921667, 3.560000), (2.884167, 3.560833), (2.848333, 3.560833), (2.813333, 3.560000), (2.780000, 3.559167), (2.748333, 3.557500), (2.717500, 3.555000), (2.687500, 3.553333), (2.657500, 3.550000), (2.629167, 3.546667), (2.600833, 3.542500), (2.572500, 3.537500), (2.544167, 3.532500), (2.516667, 3.526667), (2.490000, 3.521667), (2.462500, 3.515000), (2.435833, 3.508333), (2.408333, 3.500833), (2.380833, 3.493333), (2.352500, 3.485000), (2.324167, 3.475833), (2.295833, 3.466667), (2.266667, 3.456667), (2.236667, 3.445833), (2.207500, 3.435000), (2.177500, 3.423333), (2.147500, 3.411667), (2.116667, 3.399167), (2.086667, 3.385833), (2.055833, 3.372500), (2.025833, 3.358333), (1.995000, 3.344167), (1.965000, 3.330000), (1.935833, 3.315000), (1.906667, 3.300000), (1.877500, 3.285000), (1.849167, 3.269167), (1.820833, 3.254167), (1.794167, 3.238333), (1.767500, 3.222500), (1.741667, 3.206667), (1.715833, 3.190833), (1.691667, 3.175833), (1.667500, 3.160000), (1.645000, 3.144167), (1.622500, 3.129167), (1.600833, 3.113333), (1.580000, 3.097500), (1.559167, 3.082500), (1.539167, 3.066667), (1.515833, 3.047500), (1.493333, 3.029167), (1.470833, 3.009167), (1.449167, 2.990000), (1.427500, 2.970000), (1.405833, 2.949167), (1.385000, 2.927500), (1.365000, 2.905833), (1.345000, 2.884167), (1.325000, 2.860833), (1.305833, 2.838333), (1.287500, 2.814167), (1.269167, 2.790000), (1.251667, 2.765833), (1.235000, 2.740833), (1.218333, 2.716667), (1.203333, 2.690833), (1.188333, 2.665833), (1.174167, 2.640833), (1.160833, 2.615833), (1.148333, 2.590833), (1.136667, 2.565833), (1.125833, 2.540833), (1.115833, 2.515833), (1.106667, 2.491667), (1.098333, 2.466667), (1.090000, 2.442500), (1.082500, 2.418333), (1.075833, 2.394167), (1.070000, 2.370000), (1.064167, 2.345000), (1.059167, 2.320000), (1.054167, 2.294167), (1.050000, 2.268333), (1.045833, 2.241667), (1.042500, 2.215000), (1.040000, 2.186667), (1.038333, 2.158333), (1.036667, 2.130000), (1.035833, 2.100000), (1.035000, 2.070000), (1.035833, 2.040000), (1.036667, 2.010000), (1.039167, 1.979167), (1.041667, 1.948333), (1.045000, 1.917500), (1.049167, 1.886667), (1.054167, 1.856667), (1.059167, 1.826667), (1.065833, 1.797500), (1.072500, 1.768333), (1.080833, 1.740000), (1.089167, 1.711667), (1.097500, 1.685000), (1.107500, 1.658333), (1.117500, 1.632500), (1.128333, 1.607500), (1.140000, 1.582500), (1.152500, 1.558333), (1.165000, 1.535000), (1.178333, 1.511667), (1.193333, 1.488333), (1.208333, 1.465000), (1.225000, 1.442500), (1.241667, 1.420000), (1.260000, 1.396667), (1.278333, 1.374167), (1.298333, 1.351667), (1.319167, 1.329167), (1.340000, 1.306667), (1.362500, 1.285000), (1.385000, 1.262500), (1.408333, 1.241667), (1.432500, 1.220000), (1.456667, 1.200000), (1.480833, 1.180000), (1.505000, 1.160833), (1.530000, 1.141667), (1.554167, 1.124167), (1.578333, 1.107500), (1.602500, 1.090833), (1.625833, 1.075833), (1.649167, 1.061667), (1.671667, 1.047500), (1.694167, 1.035000), (1.715833, 1.023333), (1.737500, 1.012500), (1.757500, 1.001667), (1.778333, 0.992500), (1.798333, 0.983333), (1.822500, 0.973333), (1.845833, 0.964167), (1.870000, 0.956667), (1.893333, 0.950000), (1.917500, 0.943333), (1.941667, 0.938333), (1.966667, 0.934167), (1.993333, 0.930833), (2.020833, 0.927500), (2.049167, 0.925833), (2.078333, 0.924167), (2.109167, 0.922500), (2.140000, 0.922500), (2.170833, 0.922500), (2.200833, 0.922500), (2.229167, 0.923333), (2.254167, 0.924167), (2.275833, 0.925000), (2.293333, 0.925833), (2.306667, 0.926667), (2.315000, 0.926667), (2.319167, 0.927500), (2.321667, 0.927500)); store (curpath) drawn polyline(false) ((1.915833, 2.537500), (1.916667, 2.535833), (1.918333, 2.532500), (1.920833, 2.526667), (1.925000, 2.517500), (1.931667, 2.504167), (1.939167, 2.486667), (1.950000, 2.465000), (1.961667, 2.439167), (1.975833, 2.410000), (1.991667, 2.378333), (2.008333, 2.343333), (2.026667, 2.305833), (2.045000, 2.267500), (2.065000, 2.229167), (2.084167, 2.190000), (2.104167, 2.151667), (2.124167, 2.113333), (2.143333, 2.076667), (2.162500, 2.040833), (2.181667, 2.007500), (2.200000, 1.974167), (2.218333, 1.943333), (2.235833, 1.913333), (2.253333, 1.885833), (2.270833, 1.858333), (2.287500, 1.832500), (2.305000, 1.807500), (2.322500, 1.784167), (2.340000, 1.760833), (2.357500, 1.738333), (2.375833, 1.715833), (2.394167, 1.694167), (2.413333, 1.672500), (2.432500, 1.651667), (2.452500, 1.630000), (2.473333, 1.609167), (2.494167, 1.587500), (2.515833, 1.566667), (2.539167, 1.545000), (2.562500, 1.523333), (2.586667, 1.502500), (2.611667, 1.480833), (2.636667, 1.459167), (2.663333, 1.438333), (2.690000, 1.416667), (2.717500, 1.395000), (2.745833, 1.374167), (2.774167, 1.353333), (2.802500, 1.333333), (2.831667, 1.312500), (2.860833, 1.293333), (2.890000, 1.273333), (2.919167, 1.255000), (2.948333, 1.236667), (2.977500, 1.218333), (3.006667, 1.201667), (3.035000, 1.185000), (3.063333, 1.169167), (3.091667, 1.154167), (3.119167, 1.139167), (3.145833, 1.125833), (3.172500, 1.112500), (3.199167, 1.100000), (3.225000, 1.088333), (3.250000, 1.077500), (3.275000, 1.066667), (3.300000, 1.056667), (3.328333, 1.045833), (3.355833, 1.035000), (3.384167, 1.025833), (3.411667, 1.016667), (3.440000, 1.008333), (3.468333, 1.000000), (3.497500, 0.992500), (3.526667, 0.985833), (3.555833, 0.979167), (3.585000, 0.974167), (3.615000, 0.969167), (3.645000, 0.964167), (3.674167, 0.960833), (3.704167, 0.957500), (3.734167, 0.955833), (3.764167, 0.954167), (3.793333, 0.953333), (3.822500, 0.952500), (3.851667, 0.953333), (3.880000, 0.954167), (3.907500, 0.956667), (3.935000, 0.959167), (3.962500, 0.961667), (3.988333, 0.965833), (4.014167, 0.970000), (4.040000, 0.974167), (4.065000, 0.980000), (4.090000, 0.985833), (4.114167, 0.991667), (4.138333, 0.998333), (4.162500, 1.005833), (4.186667, 1.014167), (4.211667, 1.022500), (4.235833, 1.031667), (4.260833, 1.041667), (4.285833, 1.052500), (4.311667, 1.064167), (4.337500, 1.076667), (4.363333, 1.090000), (4.389167, 1.103333), (4.415000, 1.118333), (4.440833, 1.134167), (4.466667, 1.150000), (4.492500, 1.167500), (4.517500, 1.185000), (4.542500, 1.203333), (4.566667, 1.221667), (4.590833, 1.241667), (4.613333, 1.260833), (4.635833, 1.281667), (4.657500, 1.301667), (4.678333, 1.322500), (4.698333, 1.343333), (4.717500, 1.365000), (4.735833, 1.386667), (4.752500, 1.408333), (4.769167, 1.430833), (4.785000, 1.452500), (4.800000, 1.475000), (4.814167, 1.498333), (4.827500, 1.521667), (4.840000, 1.545833), (4.852500, 1.570833), (4.864167, 1.595833), (4.875000, 1.622500), (4.885833, 1.649167), (4.895833, 1.677500), (4.905833, 1.705833), (4.915000, 1.735000), (4.923333, 1.764167), (4.931667, 1.794167), (4.939167, 1.825000), (4.946667, 1.855833), (4.952500, 1.887500), (4.958333, 1.918333), (4.963333, 1.949167), (4.968333, 1.980000), (4.971667, 2.010833), (4.975000, 2.040833), (4.977500, 2.070000), (4.980000, 2.099167), (4.980833, 2.127500), (4.981667, 2.155000), (4.982500, 2.180833), (4.982500, 2.206667), (4.981667, 2.231667), (4.980833, 2.255000), (4.979167, 2.278333), (4.977500, 2.300833), (4.975000, 2.322500), (4.971667, 2.348333), (4.967500, 2.373333), (4.962500, 2.398333), (4.956667, 2.421667), (4.950000, 2.445833), (4.942500, 2.469167), (4.933333, 2.493333), (4.923333, 2.518333), (4.912500, 2.543333), (4.900000, 2.569167), (4.886667, 2.595000), (4.871667, 2.622500), (4.856667, 2.649167), (4.841667, 2.675833), (4.825833, 2.701667), (4.811667, 2.725833), (4.798333, 2.747500), (4.786667, 2.765833), (4.777500, 2.780833), (4.770000, 2.791667), (4.765833, 2.798333), (4.762500, 2.802500), (4.761667, 2.804167)); store (curpath) drawn polyline(false) ((3.570000, 1.647500), (3.570833, 1.649167), (3.573333, 1.651667), (3.576667, 1.657500), (3.582500, 1.665833), (3.590833, 1.677500), (3.602500, 1.693333), (3.615833, 1.713333), (3.631667, 1.736667), (3.650000, 1.763333), (3.670833, 1.792500), (3.692500, 1.825000), (3.715000, 1.859167), (3.739167, 1.894167), (3.763333, 1.930833), (3.786667, 1.967500), (3.810833, 2.003333), (3.833333, 2.040000), (3.855833, 2.075000), (3.876667, 2.109167), (3.896667, 2.142500), (3.915833, 2.175000), (3.933333, 2.205833), (3.950833, 2.236667), (3.966667, 2.265833), (3.980833, 2.294167), (3.995000, 2.321667), (4.007500, 2.349167), (4.020000, 2.375833), (4.030833, 2.403333), (4.041667, 2.429167), (4.051667, 2.456667), (4.061667, 2.483333), (4.070833, 2.510000), (4.079167, 2.535833), (4.087500, 2.562500), (4.095000, 2.589167), (4.102500, 2.616667), (4.109167, 2.645000), (4.115833, 2.673333), (4.122500, 2.701667), (4.129167, 2.731667), (4.135000, 2.761667), (4.140000, 2.792500), (4.145833, 2.824167), (4.150833, 2.855833), (4.155000, 2.887500), (4.159167, 2.920833), (4.163333, 2.953333), (4.166667, 2.986667), (4.170000, 3.020000), (4.173333, 3.053333), (4.175833, 3.085833), (4.177500, 3.119167), (4.179167, 3.152500), (4.180000, 3.185000), (4.181667, 3.217500), (4.181667, 3.249167), (4.181667, 3.280833), (4.181667, 3.311667), (4.180833, 3.341667), (4.180000, 3.371667), (4.178333, 3.400000), (4.176667, 3.429167), (4.175000, 3.456667), (4.172500, 3.484167), (4.170000, 3.510000), (4.167500, 3.536667), (4.164167, 3.561667), (4.160833, 3.586667), (4.155833, 3.616667), (4.150833, 3.645833), (4.145833, 3.675000), (4.139167, 3.703333), (4.132500, 3.732500), (4.125000, 3.760833), (4.117500, 3.790000), (4.109167, 3.818333), (4.100000, 3.846667), (4.090000, 3.875000), (4.079167, 3.903333), (4.068333, 3.930833), (4.056667, 3.959167), (4.044167, 3.986667), (4.030833, 4.013333), (4.017500, 4.040000), (4.003333, 4.065833), (3.989167, 4.090833), (3.974167, 4.115833), (3.959167, 4.140000), (3.943333, 4.163333), (3.927500, 4.185833), (3.911667, 4.207500), (3.895000, 4.228333), (3.879167, 4.249167), (3.861667, 4.268333), (3.845000, 4.287500), (3.827500, 4.305833), (3.810000, 4.324167), (3.791667, 4.341667), (3.773333, 4.359167), (3.754167, 4.375833), (3.734167, 4.393333), (3.714167, 4.410000), (3.693333, 4.426667), (3.670833, 4.442500), (3.648333, 4.459167), (3.625000, 4.475000), (3.600833, 4.490833), (3.575833, 4.505833), (3.550000, 4.521667), (3.523333, 4.535833), (3.496667, 4.550000), (3.469167, 4.564167), (3.440833, 4.576667), (3.412500, 4.589167), (3.384167, 4.600833), (3.355833, 4.611667), (3.326667, 4.622500), (3.298333, 4.631667), (3.269167, 4.640000), (3.240833, 4.647500), (3.212500, 4.654167), (3.185000, 4.660000), (3.156667, 4.665000), (3.129167, 4.669167), (3.102500, 4.672500), (3.075000, 4.675000), (3.048333, 4.675833), (3.021667, 4.676667), (2.994167, 4.676667), (2.966667, 4.675833), (2.939167, 4.674167), (2.911667, 4.671667), (2.883333, 4.668333), (2.854167, 4.663333), (2.825000, 4.658333), (2.795833, 4.652500), (2.765833, 4.646667), (2.735833, 4.639167), (2.705833, 4.630833), (2.675833, 4.621667), (2.645000, 4.612500), (2.615000, 4.602500), (2.585000, 4.591667), (2.555833, 4.580833), (2.526667, 4.569167), (2.498333, 4.557500), (2.470833, 4.545000), (2.444167, 4.532500), (2.418333, 4.520000), (2.393333, 4.506667), (2.369167, 4.494167), (2.345833, 4.480833), (2.323333, 4.468333), (2.302500, 4.455000), (2.282500, 4.442500), (2.263333, 4.430000), (2.245000, 4.416667), (2.227500, 4.404167), (2.205833, 4.388333), (2.186667, 4.371667), (2.167500, 4.355000), (2.150000, 4.338333), (2.132500, 4.320833), (2.115833, 4.301667), (2.100000, 4.282500), (2.083333, 4.261667), (2.067500, 4.239167), (2.050833, 4.215833), (2.035000, 4.190833), (2.019167, 4.165000), (2.003333, 4.138333), (1.987500, 4.111667), (1.972500, 4.085000), (1.959167, 4.060833), (1.947500, 4.038333), (1.937500, 4.019167), (1.929167, 4.003333), (1.923333, 3.991667), (1.920000, 3.984167), (1.917500, 3.980000), (1.916667, 3.978333)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=39; interim hdwdr:=1; interim hdten:=1; % % figs/039OpenHopfUp.fig (char 40) % xscale:=0.292; yscale:=0.292; bounds(1.000,5.000,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((3.000000, 2.132500), (3.000000, 4.820000)); store (curpath) drawn polyline(false) ((2.687500, 4.195000), (3.000000, 4.820000), (3.312500, 4.195000)); store (curpath) drawn polyline(false) ((3.000000, 0.820000), (3.000000, 1.195000)); store (curpath) drawn polyline(false) ((4.250000, 3.507500), (3.500000, 3.507500), (3.875000, 2.820000)); store (curpath) drawn polyline(false) ((2.500000, 3.507500), (2.498333, 3.506667), (2.495000, 3.505833), (2.487500, 3.502500), (2.476667, 3.498333), (2.461667, 3.492500), (2.441667, 3.485000), (2.416667, 3.475000), (2.386667, 3.463333), (2.351667, 3.450000), (2.313333, 3.435000), (2.271667, 3.418333), (2.227500, 3.400000), (2.180833, 3.380833), (2.133333, 3.361667), (2.085833, 3.341667), (2.038333, 3.320833), (1.990833, 3.300833), (1.945833, 3.280833), (1.901667, 3.260833), (1.859167, 3.240833), (1.819167, 3.221667), (1.780833, 3.203333), (1.745000, 3.184167), (1.711667, 3.166667), (1.680000, 3.149167), (1.650833, 3.131667), (1.623333, 3.114167), (1.597500, 3.097500), (1.573333, 3.080833), (1.550833, 3.063333), (1.530000, 3.046667), (1.510833, 3.029167), (1.491667, 3.012500), (1.475000, 2.994167), (1.458333, 2.975833), (1.442500, 2.957500), (1.428333, 2.939167), (1.414167, 2.919167), (1.401667, 2.899167), (1.389167, 2.879167), (1.377500, 2.858333), (1.367500, 2.836667), (1.357500, 2.814167), (1.349167, 2.791667), (1.341667, 2.768333), (1.335000, 2.744167), (1.329167, 2.720000), (1.325000, 2.695833), (1.320833, 2.670833), (1.319167, 2.645833), (1.317500, 2.620000), (1.318333, 2.594167), (1.319167, 2.568333), (1.321667, 2.542500), (1.325833, 2.516667), (1.330833, 2.491667), (1.336667, 2.465833), (1.344167, 2.440833), (1.352500, 2.415833), (1.362500, 2.391667), (1.373333, 2.367500), (1.385000, 2.343333), (1.398333, 2.320833), (1.412500, 2.297500), (1.428333, 2.275833), (1.444167, 2.254167), (1.461667, 2.233333), (1.480000, 2.212500), (1.499167, 2.192500), (1.520000, 2.172500), (1.541667, 2.153333), (1.560833, 2.137500), (1.581667, 2.120833), (1.603333, 2.105000), (1.625833, 2.089167), (1.649167, 2.074167), (1.673333, 2.058333), (1.699167, 2.043333), (1.725833, 2.028333), (1.753333, 2.013333), (1.782500, 1.999167), (1.812500, 1.984167), (1.844167, 1.970000), (1.875833, 1.955833), (1.909167, 1.942500), (1.943333, 1.929167), (1.978333, 1.915833), (2.014167, 1.902500), (2.050833, 1.890000), (2.088333, 1.877500), (2.126667, 1.865833), (2.165833, 1.855000), (2.205000, 1.843333), (2.244167, 1.833333), (2.285000, 1.823333), (2.325000, 1.814167), (2.365833, 1.805000), (2.406667, 1.796667), (2.446667, 1.788333), (2.487500, 1.781667), (2.528333, 1.774167), (2.569167, 1.768333), (2.609167, 1.762500), (2.649167, 1.757500), (2.689167, 1.753333), (2.729167, 1.749167), (2.768333, 1.745833), (2.807500, 1.743333), (2.846667, 1.740833), (2.885000, 1.739167), (2.923333, 1.737500), (2.961667, 1.736667), (3.000000, 1.736667), (3.038333, 1.736667), (3.076667, 1.737500), (3.115000, 1.739167), (3.153333, 1.740833), (3.192500, 1.743333), (3.231667, 1.745833), (3.270833, 1.749167), (3.310833, 1.753333), (3.350833, 1.757500), (3.390833, 1.762500), (3.430833, 1.768333), (3.471667, 1.774167), (3.512500, 1.781667), (3.553333, 1.788333), (3.593333, 1.796667), (3.634167, 1.805000), (3.675000, 1.814167), (3.715000, 1.823333), (3.755833, 1.833333), (3.795000, 1.843333), (3.834167, 1.855000), (3.873333, 1.865833), (3.911667, 1.877500), (3.949167, 1.890000), (3.985833, 1.902500), (4.021667, 1.915833), (4.056667, 1.929167), (4.090833, 1.942500), (4.124167, 1.955833), (4.155833, 1.970000), (4.187500, 1.984167), (4.217500, 1.999167), (4.246667, 2.013333), (4.274167, 2.028333), (4.300833, 2.043333), (4.326667, 2.058333), (4.350833, 2.074167), (4.374167, 2.089167), (4.396667, 2.105000), (4.418333, 2.120833), (4.439167, 2.137500), (4.458333, 2.153333), (4.480000, 2.172500), (4.500833, 2.192500), (4.520000, 2.212500), (4.538333, 2.233333), (4.555833, 2.254167), (4.571667, 2.275833), (4.587500, 2.297500), (4.601667, 2.320833), (4.615000, 2.343333), (4.626667, 2.367500), (4.637500, 2.391667), (4.647500, 2.415833), (4.655833, 2.440833), (4.663333, 2.465833), (4.669167, 2.491667), (4.674167, 2.516667), (4.678333, 2.542500), (4.680833, 2.568333), (4.681667, 2.594167), (4.682500, 2.620000), (4.680833, 2.645833), (4.679167, 2.670833), (4.675000, 2.695833), (4.670833, 2.720000), (4.665000, 2.744167), (4.658333, 2.768333), (4.650833, 2.791667), (4.642500, 2.814167), (4.632500, 2.836667), (4.622500, 2.858333), (4.610833, 2.879167), (4.598333, 2.899167), (4.585833, 2.919167), (4.571667, 2.939167), (4.557500, 2.957500), (4.541667, 2.975833), (4.525000, 2.994167), (4.508333, 3.012500), (4.489167, 3.029167), (4.470000, 3.046667), (4.449167, 3.063333), (4.426667, 3.080833), (4.402500, 3.097500), (4.376667, 3.114167), (4.349167, 3.131667), (4.320000, 3.149167), (4.288333, 3.166667), (4.255000, 3.184167), (4.219167, 3.203333), (4.180833, 3.221667), (4.140833, 3.240833), (4.098333, 3.260833), (4.054167, 3.280833), (4.009167, 3.300833), (3.961667, 3.320833), (3.914167, 3.341667), (3.866667, 3.361667), (3.819167, 3.380833), (3.772500, 3.400000), (3.728333, 3.418333), (3.686667, 3.435000), (3.648333, 3.450000), (3.613333, 3.463333), (3.583333, 3.475000), (3.558333, 3.485000), (3.538333, 3.492500), (3.523333, 3.498333), (3.512500, 3.502500), (3.505000, 3.505833), (3.501667, 3.506667), (3.500000, 3.507500)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=40; interim hdwdr:=1; interim hdten:=1; % % figs/040dbnframe.fig (char 41) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(true) ((1.000000, 4.820000), (5.000000, 4.820000), (5.000000, 0.820000), (1.000000, 0.820000), (1.000000, 4.820000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=41; interim hdwdr:=1; interim hdten:=1; % % figs/041HopfLink.fig (char 42) % xscale:=0.292; yscale:=0.292; bounds(0.600,7.900,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 6.43pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn arcppp((4.812500,1.975833), (1.625000,3.945000), (3.500000,0.945000)); store (curpath) drawn arcppp((3.687500,3.475833), (6.875000,1.600833), (5.000000,4.600833)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=42; interim hdwdr:=1; interim hdten:=1; % % figs/042botright.fig (char 43) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((1.000000, 1.320000), (5.000000, 1.320000)); store (curpath) drawn polyline(false) ((4.000000, 1.820000), (5.000000, 1.320000), (4.000000, 0.820000)); store (curpath) drawn polyline(false) ((3.000000, 4.320000), (3.000000, 1.320000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=43; interim hdwdr:=1; interim hdten:=1; % % figs/043twowheel.fig (char 44) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn circle((3.000000,2.820000),1.000000); store (curpath) drawn polyline(false) ((1.000000, 2.820000), (2.000000, 2.820000)); store (curpath) drawn polyline(false) ((4.000000, 2.820000), (5.000000, 2.820000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=44; interim hdwdr:=1; interim hdten:=1; % % figs/044tetrahedron.fig (char 45) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((3.000000, 4.570000), (1.000000, 1.070000)); store (curpath) drawn polyline(false) ((3.000000, 4.570000), (3.000000, 2.195000), (1.000000, 1.070000)); store (curpath) drawn polyline(false) ((3.000000, 2.195000), (5.000000, 1.070000)); store (curpath) drawn polyline(false) ((1.000000, 1.070000), (5.000000, 1.070000)); store (curpath) drawn polyline(false) ((3.000000, 4.570000), (5.000000, 1.070000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=45; interim hdwdr:=1; interim hdten:=1; % % figs/045stonehenge.fig (char 46) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(true) ((1.250000, 3.820000), (2.250000, 3.820000), (2.250000, 0.820000), (1.250000, 0.820000), (1.250000, 3.820000)); store (curpath) drawn polyline(true) ((1.000000, 4.820000), (5.000000, 4.820000), (5.000000, 3.820000), (1.000000, 3.820000), (1.000000, 4.820000)); store (curpath) drawn polyline(true) ((3.750000, 3.820000), (4.750000, 3.820000), (4.750000, 0.820000), (3.750000, 0.820000), (3.750000, 3.820000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=46; interim hdwdr:=1; interim hdten:=1; % % figs/046lefttrefoil.fig (char 47) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((4.084167, 2.537500), (4.083333, 2.535833), (4.081667, 2.532500), (4.079167, 2.526667), (4.075000, 2.517500), (4.068333, 2.504167), (4.060833, 2.486667), (4.050000, 2.465000), (4.038333, 2.439167), (4.024167, 2.410000), (4.008333, 2.378333), (3.991667, 2.343333), (3.973333, 2.305833), (3.955000, 2.267500), (3.935000, 2.229167), (3.915833, 2.190000), (3.895833, 2.151667), (3.875833, 2.113333), (3.856667, 2.076667), (3.837500, 2.040833), (3.818333, 2.007500), (3.800000, 1.974167), (3.781667, 1.943333), (3.764167, 1.913333), (3.746667, 1.885833), (3.729167, 1.858333), (3.712500, 1.832500), (3.695000, 1.807500), (3.677500, 1.784167), (3.660000, 1.760833), (3.642500, 1.738333), (3.624167, 1.715833), (3.605833, 1.694167), (3.587500, 1.672500), (3.568333, 1.652500), (3.550000, 1.632500), (3.530833, 1.612500), (3.510833, 1.592500), (3.490000, 1.572500), (3.468333, 1.552500), (3.446667, 1.531667), (3.424167, 1.511667), (3.400833, 1.491667), (3.377500, 1.471667), (3.352500, 1.450833), (3.327500, 1.430833), (3.302500, 1.410833), (3.276667, 1.390833), (3.250000, 1.370833), (3.223333, 1.350833), (3.195833, 1.331667), (3.168333, 1.312500), (3.140833, 1.294167), (3.113333, 1.275833), (3.085833, 1.257500), (3.057500, 1.240000), (3.030000, 1.223333), (3.002500, 1.207500), (2.975833, 1.191667), (2.949167, 1.175833), (2.922500, 1.161667), (2.895833, 1.147500), (2.870000, 1.134167), (2.845000, 1.121667), (2.820000, 1.109167), (2.795000, 1.097500), (2.770833, 1.086667), (2.746667, 1.075833), (2.723333, 1.065833), (2.700000, 1.056667), (2.671667, 1.045833), (2.644167, 1.035000), (2.615833, 1.025833), (2.588333, 1.016667), (2.560000, 1.008333), (2.531667, 1.000000), (2.502500, 0.992500), (2.473333, 0.985833), (2.444167, 0.979167), (2.415000, 0.974167), (2.385000, 0.969167), (2.355000, 0.964167), (2.325833, 0.960833), (2.295833, 0.957500), (2.265833, 0.955833), (2.235833, 0.954167), (2.206667, 0.953333), (2.177500, 0.952500), (2.148333, 0.953333), (2.120000, 0.954167), (2.092500, 0.956667), (2.065000, 0.959167), (2.037500, 0.961667), (2.011667, 0.965833), (1.985833, 0.970000), (1.960000, 0.974167), (1.935000, 0.980000), (1.910000, 0.985833), (1.885833, 0.991667), (1.861667, 0.998333), (1.837500, 1.005833), (1.813333, 1.014167), (1.788333, 1.022500), (1.764167, 1.031667), (1.739167, 1.041667), (1.714167, 1.052500), (1.688333, 1.064167), (1.662500, 1.076667), (1.636667, 1.090000), (1.610833, 1.103333), (1.585000, 1.118333), (1.559167, 1.134167), (1.533333, 1.150000), (1.507500, 1.167500), (1.482500, 1.185000), (1.457500, 1.203333), (1.433333, 1.221667), (1.409167, 1.241667), (1.386667, 1.260833), (1.364167, 1.281667), (1.342500, 1.301667), (1.321667, 1.322500), (1.301667, 1.343333), (1.282500, 1.365000), (1.264167, 1.386667), (1.247500, 1.408333), (1.230833, 1.430833), (1.215000, 1.452500), (1.200000, 1.475000), (1.186667, 1.498333), (1.172500, 1.521667), (1.160000, 1.545833), (1.147500, 1.570833), (1.135833, 1.595833), (1.125000, 1.622500), (1.114167, 1.649167), (1.104167, 1.677500), (1.094167, 1.705833), (1.085000, 1.735000), (1.076667, 1.764167), (1.068333, 1.794167), (1.060833, 1.825000), (1.053333, 1.855833), (1.047500, 1.887500), (1.041667, 1.918333), (1.036667, 1.949167), (1.031667, 1.980000), (1.028333, 2.010833), (1.025000, 2.040833), (1.022500, 2.070000), (1.020000, 2.099167), (1.019167, 2.127500), (1.018333, 2.155000), (1.017500, 2.180833), (1.017500, 2.206667), (1.018333, 2.231667), (1.019167, 2.255000), (1.020833, 2.278333), (1.022500, 2.300833), (1.025000, 2.322500), (1.028333, 2.348333), (1.032500, 2.373333), (1.037500, 2.398333), (1.043333, 2.421667), (1.050000, 2.445833), (1.057500, 2.469167), (1.066667, 2.493333), (1.076667, 2.518333), (1.087500, 2.543333), (1.100000, 2.569167), (1.113333, 2.595000), (1.128333, 2.622500), (1.143333, 2.649167), (1.158333, 2.675833), (1.174167, 2.701667), (1.188333, 2.725833), (1.201667, 2.747500), (1.213333, 2.765833), (1.222500, 2.780833), (1.230000, 2.791667), (1.234167, 2.798333), (1.237500, 2.802500), (1.238333, 2.804167)); store (curpath) drawn polyline(false) ((2.430000, 1.647500), (2.429167, 1.649167), (2.426667, 1.651667), (2.423333, 1.657500), (2.417500, 1.665833), (2.409167, 1.677500), (2.397500, 1.693333), (2.384167, 1.713333), (2.368333, 1.736667), (2.350000, 1.763333), (2.329167, 1.792500), (2.307500, 1.825000), (2.285000, 1.859167), (2.260833, 1.894167), (2.236667, 1.930833), (2.213333, 1.967500), (2.189167, 2.003333), (2.166667, 2.040000), (2.144167, 2.075000), (2.123333, 2.109167), (2.103333, 2.142500), (2.084167, 2.175000), (2.066667, 2.205833), (2.049167, 2.236667), (2.033333, 2.265833), (2.019167, 2.294167), (2.005000, 2.321667), (1.992500, 2.349167), (1.980000, 2.375833), (1.969167, 2.403333), (1.958333, 2.429167), (1.948333, 2.456667), (1.938333, 2.483333), (1.929167, 2.510000), (1.920833, 2.535833), (1.912500, 2.562500), (1.905000, 2.589167), (1.897500, 2.616667), (1.890833, 2.645000), (1.884167, 2.673333), (1.877500, 2.701667), (1.870833, 2.731667), (1.865000, 2.761667), (1.860000, 2.792500), (1.854167, 2.824167), (1.849167, 2.855833), (1.845000, 2.887500), (1.840833, 2.920833), (1.836667, 2.953333), (1.833333, 2.986667), (1.830000, 3.020000), (1.826667, 3.053333), (1.824167, 3.085833), (1.822500, 3.119167), (1.820833, 3.152500), (1.820000, 3.185000), (1.818333, 3.217500), (1.818333, 3.249167), (1.818333, 3.280833), (1.818333, 3.311667), (1.819167, 3.341667), (1.820000, 3.371667), (1.821667, 3.400000), (1.823333, 3.429167), (1.825000, 3.456667), (1.827500, 3.484167), (1.830000, 3.510000), (1.832500, 3.536667), (1.835833, 3.561667), (1.839167, 3.586667), (1.844167, 3.616667), (1.849167, 3.645833), (1.854167, 3.675000), (1.860833, 3.703333), (1.867500, 3.732500), (1.875000, 3.760833), (1.882500, 3.790000), (1.890833, 3.818333), (1.900000, 3.846667), (1.910000, 3.875000), (1.920833, 3.903333), (1.931667, 3.930833), (1.943333, 3.959167), (1.955833, 3.986667), (1.969167, 4.013333), (1.982500, 4.040000), (1.996667, 4.065833), (2.010833, 4.090833), (2.025833, 4.115833), (2.040833, 4.140000), (2.056667, 4.163333), (2.072500, 4.185833), (2.088333, 4.207500), (2.105000, 4.228333), (2.120833, 4.249167), (2.138333, 4.268333), (2.155000, 4.287500), (2.172500, 4.305833), (2.190000, 4.324167), (2.208333, 4.341667), (2.226667, 4.359167), (2.245833, 4.375833), (2.265833, 4.393333), (2.285833, 4.410000), (2.306667, 4.426667), (2.329167, 4.442500), (2.351667, 4.459167), (2.375000, 4.475000), (2.399167, 4.490833), (2.424167, 4.505833), (2.450000, 4.521667), (2.476667, 4.535833), (2.503333, 4.550000), (2.530833, 4.564167), (2.559167, 4.576667), (2.587500, 4.589167), (2.615833, 4.600833), (2.644167, 4.611667), (2.673333, 4.622500), (2.701667, 4.631667), (2.730833, 4.640000), (2.759167, 4.647500), (2.787500, 4.654167), (2.815000, 4.660000), (2.843333, 4.665000), (2.870833, 4.669167), (2.897500, 4.672500), (2.925000, 4.675000), (2.951667, 4.675833), (2.979167, 4.676667), (3.005833, 4.676667), (3.033333, 4.675833), (3.060833, 4.674167), (3.088333, 4.671667), (3.116667, 4.668333), (3.145833, 4.663333), (3.175000, 4.658333), (3.204167, 4.652500), (3.234167, 4.646667), (3.264167, 4.639167), (3.294167, 4.630833), (3.324167, 4.621667), (3.355000, 4.612500), (3.385000, 4.602500), (3.415000, 4.591667), (3.444167, 4.580833), (3.473333, 4.569167), (3.501667, 4.557500), (3.529167, 4.545000), (3.555833, 4.532500), (3.581667, 4.520000), (3.606667, 4.506667), (3.630833, 4.494167), (3.654167, 4.480833), (3.676667, 4.468333), (3.697500, 4.455000), (3.717500, 4.442500), (3.736667, 4.430000), (3.755000, 4.416667), (3.773333, 4.404167), (3.794167, 4.388333), (3.813333, 4.371667), (3.832500, 4.355000), (3.850000, 4.338333), (3.867500, 4.320833), (3.884167, 4.301667), (3.900000, 4.282500), (3.916667, 4.261667), (3.932500, 4.239167), (3.949167, 4.215833), (3.965000, 4.190833), (3.980833, 4.165000), (3.996667, 4.138333), (4.012500, 4.111667), (4.027500, 4.085000), (4.040833, 4.060833), (4.052500, 4.038333), (4.062500, 4.019167), (4.070833, 4.003333), (4.076667, 3.991667), (4.080000, 3.984167), (4.082500, 3.980000), (4.083333, 3.978333)); store (curpath) drawn polyline(false) ((2.485833, 3.525000), (2.487500, 3.525000), (2.490833, 3.525833), (2.497500, 3.525833), (2.508333, 3.526667), (2.522500, 3.528333), (2.541667, 3.530000), (2.565833, 3.531667), (2.593333, 3.534167), (2.625833, 3.536667), (2.661667, 3.539167), (2.700833, 3.542500), (2.741667, 3.545000), (2.784167, 3.547500), (2.827500, 3.550000), (2.871667, 3.552500), (2.915000, 3.555000), (2.957500, 3.556667), (2.999167, 3.558333), (3.039167, 3.559167), (3.078333, 3.560000), (3.115833, 3.560833), (3.151667, 3.560833), (3.186667, 3.560000), (3.220000, 3.559167), (3.251667, 3.557500), (3.282500, 3.555000), (3.312500, 3.553333), (3.342500, 3.550000), (3.370833, 3.546667), (3.399167, 3.542500), (3.427500, 3.537500), (3.455833, 3.532500), (3.484167, 3.526667), (3.511667, 3.520833), (3.540000, 3.514167), (3.569167, 3.506667), (3.598333, 3.499167), (3.627500, 3.490833), (3.657500, 3.481667), (3.687500, 3.472500), (3.718333, 3.461667), (3.749167, 3.450833), (3.780833, 3.440000), (3.812500, 3.427500), (3.844167, 3.415000), (3.875833, 3.401667), (3.908333, 3.388333), (3.940833, 3.374167), (3.972500, 3.359167), (4.005000, 3.344167), (4.036667, 3.329167), (4.067500, 3.313333), (4.099167, 3.297500), (4.129167, 3.280833), (4.159167, 3.265000), (4.188333, 3.248333), (4.217500, 3.231667), (4.245000, 3.215000), (4.271667, 3.198333), (4.298333, 3.181667), (4.324167, 3.165000), (4.348333, 3.149167), (4.372500, 3.132500), (4.395833, 3.115833), (4.417500, 3.099167), (4.440000, 3.083333), (4.460833, 3.066667), (4.484167, 3.047500), (4.506667, 3.029167), (4.529167, 3.009167), (4.550833, 2.990000), (4.572500, 2.970000), (4.594167, 2.949167), (4.615000, 2.927500), (4.635000, 2.905833), (4.655000, 2.884167), (4.675000, 2.860833), (4.694167, 2.838333), (4.712500, 2.814167), (4.730833, 2.790000), (4.748333, 2.765833), (4.765000, 2.740833), (4.781667, 2.716667), (4.796667, 2.690833), (4.811667, 2.665833), (4.825833, 2.640833), (4.839167, 2.615833), (4.851667, 2.590833), (4.863333, 2.565833), (4.874167, 2.540833), (4.884167, 2.515833), (4.893333, 2.491667), (4.901667, 2.466667), (4.910000, 2.442500), (4.917500, 2.418333), (4.924167, 2.394167), (4.930000, 2.370000), (4.935833, 2.345000), (4.940833, 2.320000), (4.945833, 2.294167), (4.950000, 2.268333), (4.954167, 2.241667), (4.957500, 2.215000), (4.960000, 2.186667), (4.961667, 2.158333), (4.963333, 2.130000), (4.964167, 2.100000), (4.965000, 2.070000), (4.964167, 2.040000), (4.963333, 2.010000), (4.960833, 1.979167), (4.958333, 1.948333), (4.955000, 1.917500), (4.950833, 1.886667), (4.945833, 1.856667), (4.940833, 1.826667), (4.934167, 1.797500), (4.927500, 1.768333), (4.919167, 1.740000), (4.910833, 1.711667), (4.902500, 1.685000), (4.892500, 1.658333), (4.882500, 1.632500), (4.871667, 1.607500), (4.860000, 1.582500), (4.847500, 1.558333), (4.835000, 1.535000), (4.821667, 1.511667), (4.806667, 1.488333), (4.791667, 1.465000), (4.775000, 1.442500), (4.758333, 1.420000), (4.740000, 1.396667), (4.721667, 1.374167), (4.701667, 1.351667), (4.680833, 1.329167), (4.660000, 1.306667), (4.637500, 1.285000), (4.615000, 1.262500), (4.591667, 1.241667), (4.567500, 1.220000), (4.543333, 1.200000), (4.519167, 1.180000), (4.495000, 1.160833), (4.470000, 1.141667), (4.445833, 1.124167), (4.421667, 1.107500), (4.397500, 1.090833), (4.374167, 1.075833), (4.350833, 1.061667), (4.328333, 1.047500), (4.305833, 1.035000), (4.284167, 1.023333), (4.262500, 1.012500), (4.242500, 1.001667), (4.221667, 0.992500), (4.202500, 0.983333), (4.177500, 0.973333), (4.154167, 0.964167), (4.130000, 0.956667), (4.106667, 0.950000), (4.082500, 0.943333), (4.058333, 0.938333), (4.033333, 0.934167), (4.006667, 0.930833), (3.979167, 0.927500), (3.950833, 0.925833), (3.921667, 0.924167), (3.890833, 0.922500), (3.860000, 0.922500), (3.829167, 0.922500), (3.799167, 0.922500), (3.770833, 0.923333), (3.745833, 0.924167), (3.724167, 0.925000), (3.706667, 0.925833), (3.693333, 0.926667), (3.685000, 0.926667), (3.680833, 0.927500), (3.678333, 0.927500)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=47; interim hdwdr:=1; interim hdten:=1; % % figs/047slashoverback.fig (char 48) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((2.500000, 3.320000), (1.000000, 4.820000)); store (curpath) drawn polyline(false) ((1.000000, 0.820000), (5.000000, 4.820000)); store (curpath) drawn polyline(false) ((5.000000, 0.820000), (3.500000, 2.320000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=48; interim hdwdr:=1; interim hdten:=1; % % figs/048backoverslash.fig (char 49) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((1.000000, 0.820000), (2.500000, 2.320000)); store (curpath) drawn polyline(false) ((5.000000, 4.820000), (3.562500, 3.382500)); store (curpath) drawn polyline(false) ((1.000000, 4.820000), (5.000000, 0.820000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=49; interim hdwdr:=1; interim hdten:=1; % % figs/049hsmoothing.fig (char 50) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((1.000000, 0.820000), (1.000833, 0.820833), (1.003333, 0.823333), (1.007500, 0.827500), (1.014167, 0.833333), (1.024167, 0.842500), (1.036667, 0.855000), (1.053333, 0.870000), (1.073333, 0.888333), (1.096667, 0.910000), (1.123333, 0.935000), (1.153333, 0.962500), (1.186667, 0.993333), (1.222500, 1.025833), (1.260000, 1.059167), (1.299167, 1.095000), (1.340000, 1.131667), (1.381667, 1.168333), (1.424167, 1.205000), (1.465833, 1.241667), (1.508333, 1.278333), (1.550000, 1.313333), (1.590833, 1.347500), (1.630833, 1.380833), (1.670000, 1.412500), (1.708333, 1.442500), (1.745833, 1.471667), (1.782500, 1.499167), (1.817500, 1.525000), (1.851667, 1.550000), (1.885833, 1.573333), (1.918333, 1.595000), (1.950833, 1.615833), (1.982500, 1.635833), (2.013333, 1.654167), (2.044167, 1.671667), (2.075000, 1.687500), (2.105833, 1.703333), (2.135833, 1.717500), (2.166667, 1.731667), (2.198333, 1.745000), (2.229167, 1.757500), (2.260833, 1.769167), (2.292500, 1.780833), (2.325000, 1.791667), (2.357500, 1.802500), (2.391667, 1.812500), (2.425000, 1.821667), (2.460000, 1.830000), (2.495000, 1.838333), (2.530833, 1.846667), (2.567500, 1.853333), (2.605000, 1.860000), (2.642500, 1.866667), (2.680833, 1.871667), (2.719167, 1.876667), (2.758333, 1.880833), (2.798333, 1.885000), (2.838333, 1.887500), (2.878333, 1.890000), (2.918333, 1.891667), (2.959167, 1.892500), (3.000000, 1.893333), (3.040833, 1.892500), (3.081667, 1.891667), (3.121667, 1.890000), (3.161667, 1.887500), (3.201667, 1.885000), (3.241667, 1.880833), (3.280833, 1.876667), (3.319167, 1.871667), (3.357500, 1.866667), (3.395000, 1.860000), (3.432500, 1.853333), (3.469167, 1.846667), (3.505000, 1.838333), (3.540000, 1.830000), (3.575000, 1.821667), (3.608333, 1.812500), (3.642500, 1.802500), (3.675000, 1.791667), (3.707500, 1.780833), (3.739167, 1.769167), (3.770833, 1.757500), (3.801667, 1.745000), (3.833333, 1.731667), (3.864167, 1.717500), (3.894167, 1.703333), (3.925000, 1.687500), (3.955833, 1.671667), (3.986667, 1.654167), (4.017500, 1.635833), (4.049167, 1.615833), (4.081667, 1.595000), (4.114167, 1.573333), (4.148333, 1.550000), (4.182500, 1.525000), (4.217500, 1.499167), (4.254167, 1.471667), (4.291667, 1.442500), (4.330000, 1.412500), (4.369167, 1.380833), (4.409167, 1.347500), (4.450000, 1.313333), (4.491667, 1.278333), (4.534167, 1.241667), (4.575833, 1.205000), (4.618333, 1.168333), (4.660000, 1.131667), (4.700833, 1.095000), (4.740000, 1.059167), (4.777500, 1.025833), (4.813333, 0.993333), (4.846667, 0.962500), (4.876667, 0.935000), (4.903333, 0.910000), (4.926667, 0.888333), (4.946667, 0.870000), (4.963333, 0.855000), (4.975833, 0.842500), (4.985833, 0.833333), (4.992500, 0.827500), (4.996667, 0.823333), (4.999167, 0.820833), (5.000000, 0.820000)); store (curpath) drawn polyline(false) ((1.000000, 4.820000), (1.000833, 4.819167), (1.003333, 4.816667), (1.007500, 4.812500), (1.014167, 4.806667), (1.024167, 4.797500), (1.036667, 4.785000), (1.053333, 4.770000), (1.073333, 4.751667), (1.096667, 4.730000), (1.123333, 4.705000), (1.153333, 4.677500), (1.186667, 4.646667), (1.222500, 4.614167), (1.260000, 4.580833), (1.299167, 4.545000), (1.340000, 4.508333), (1.381667, 4.471667), (1.424167, 4.435000), (1.465833, 4.398333), (1.508333, 4.361667), (1.550000, 4.326667), (1.590833, 4.292500), (1.630833, 4.259167), (1.670000, 4.227500), (1.708333, 4.197500), (1.745833, 4.168333), (1.782500, 4.140833), (1.817500, 4.115000), (1.851667, 4.090000), (1.885833, 4.066667), (1.918333, 4.045000), (1.950833, 4.024167), (1.982500, 4.004167), (2.013333, 3.985833), (2.044167, 3.968333), (2.075000, 3.952500), (2.105833, 3.936667), (2.135833, 3.922500), (2.166667, 3.908333), (2.198333, 3.895000), (2.229167, 3.882500), (2.260833, 3.870833), (2.292500, 3.859167), (2.325000, 3.848333), (2.357500, 3.837500), (2.391667, 3.827500), (2.425000, 3.818333), (2.460000, 3.810000), (2.495000, 3.801667), (2.530833, 3.793333), (2.567500, 3.786667), (2.605000, 3.780000), (2.642500, 3.773333), (2.680833, 3.768333), (2.719167, 3.763333), (2.758333, 3.759167), (2.798333, 3.755000), (2.838333, 3.752500), (2.878333, 3.750000), (2.918333, 3.748333), (2.959167, 3.747500), (3.000000, 3.746667), (3.040833, 3.747500), (3.081667, 3.748333), (3.121667, 3.750000), (3.161667, 3.752500), (3.201667, 3.755000), (3.241667, 3.759167), (3.280833, 3.763333), (3.319167, 3.768333), (3.357500, 3.773333), (3.395000, 3.780000), (3.432500, 3.786667), (3.469167, 3.793333), (3.505000, 3.801667), (3.540000, 3.810000), (3.575000, 3.818333), (3.608333, 3.827500), (3.642500, 3.837500), (3.675000, 3.848333), (3.707500, 3.859167), (3.739167, 3.870833), (3.770833, 3.882500), (3.801667, 3.895000), (3.833333, 3.908333), (3.864167, 3.922500), (3.894167, 3.936667), (3.925000, 3.952500), (3.955833, 3.968333), (3.986667, 3.985833), (4.017500, 4.004167), (4.049167, 4.024167), (4.081667, 4.045000), (4.114167, 4.066667), (4.148333, 4.090000), (4.182500, 4.115000), (4.217500, 4.140833), (4.254167, 4.168333), (4.291667, 4.197500), (4.330000, 4.227500), (4.369167, 4.259167), (4.409167, 4.292500), (4.450000, 4.326667), (4.491667, 4.361667), (4.534167, 4.398333), (4.575833, 4.435000), (4.618333, 4.471667), (4.660000, 4.508333), (4.700833, 4.545000), (4.740000, 4.580833), (4.777500, 4.614167), (4.813333, 4.646667), (4.846667, 4.677500), (4.876667, 4.705000), (4.903333, 4.730000), (4.926667, 4.751667), (4.946667, 4.770000), (4.963333, 4.785000), (4.975833, 4.797500), (4.985833, 4.806667), (4.992500, 4.812500), (4.996667, 4.816667), (4.999167, 4.819167), (5.000000, 4.820000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=50; interim hdwdr:=1; interim hdten:=1; % % figs/050SGraph.fig (char 51) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 8.77pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn arcppp((1.000000,1.320000), (3.000000,0.820000), (5.000000,1.320000)); penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((1.500000, 4.320000), (3.000000, 3.070000), (4.500000, 4.320000)); store (curpath) drawn polyline(false) ((3.000000, 3.070000), (3.000000, 0.820000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=51; interim hdwdr:=1; interim hdten:=1; % % figs/051TGraph.fig (char 52) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 8.77pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn arcppp((1.000000,1.320000), (3.000000,0.820000), (5.000000,1.320000)); penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((1.500000, 4.320000), (2.000000, 0.945000)); store (curpath) drawn polyline(false) ((4.500000, 4.320000), (4.000000, 1.007500)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=52; interim hdwdr:=1; interim hdten:=1; % % figs/052UGraph.fig (char 53) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 8.77pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn arcppp((1.000000,1.320000), (3.000000,0.820000), (5.000000,1.320000)); penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((1.500000, 4.320000), (4.000000, 0.945000)); store (curpath) drawn polyline(false) ((4.500000, 4.320000), (2.000000, 1.007500)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=53; interim hdwdr:=1; interim hdten:=1; % % figs/053righttwist.fig (char 54) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((1.000000, 2.820000), (2.187500, 2.820000)); store (curpath) drawn polyline(false) ((3.750000, 2.820000), (5.000000, 2.820000)); store (curpath) drawn polyline(false) ((1.500000, 3.820000), (1.501667, 3.820000), (1.505833, 3.820000), (1.514167, 3.819167), (1.526667, 3.819167), (1.543333, 3.818333), (1.565833, 3.817500), (1.593333, 3.815833), (1.625000, 3.814167), (1.661667, 3.811667), (1.700833, 3.809167), (1.743333, 3.806667), (1.787500, 3.803333), (1.831667, 3.800000), (1.876667, 3.795833), (1.921667, 3.791667), (1.965000, 3.786667), (2.006667, 3.781667), (2.046667, 3.775833), (2.085000, 3.770000), (2.121667, 3.763333), (2.155833, 3.756667), (2.188333, 3.749167), (2.219167, 3.741667), (2.247500, 3.733333), (2.275000, 3.724167), (2.300833, 3.714167), (2.325833, 3.703333), (2.350000, 3.692500), (2.372500, 3.680000), (2.395000, 3.667500), (2.416667, 3.653333), (2.436667, 3.639167), (2.456667, 3.625000), (2.475833, 3.609167), (2.495000, 3.592500), (2.514167, 3.575000), (2.533333, 3.557500), (2.552500, 3.537500), (2.571667, 3.517500), (2.590833, 3.496667), (2.609167, 3.474167), (2.628333, 3.451667), (2.646667, 3.427500), (2.665833, 3.402500), (2.684167, 3.377500), (2.702500, 3.350833), (2.720833, 3.324167), (2.738333, 3.296667), (2.755833, 3.269167), (2.773333, 3.240833), (2.790833, 3.212500), (2.807500, 3.184167), (2.824167, 3.155000), (2.840833, 3.126667), (2.856667, 3.097500), (2.872500, 3.069167), (2.887500, 3.040833), (2.902500, 3.012500), (2.916667, 2.984167), (2.931667, 2.955833), (2.945000, 2.928333), (2.959167, 2.900833), (2.973333, 2.874167), (2.986667, 2.846667), (3.000000, 2.820000), (3.013333, 2.793333), (3.026667, 2.765833), (3.040833, 2.739167), (3.055000, 2.711667), (3.068333, 2.684167), (3.083333, 2.655833), (3.097500, 2.627500), (3.112500, 2.599167), (3.127500, 2.570833), (3.143333, 2.542500), (3.159167, 2.513333), (3.175833, 2.485000), (3.192500, 2.455833), (3.209167, 2.427500), (3.226667, 2.399167), (3.244167, 2.370833), (3.261667, 2.343333), (3.279167, 2.315833), (3.297500, 2.289167), (3.315833, 2.262500), (3.334167, 2.237500), (3.353333, 2.212500), (3.371667, 2.188333), (3.390833, 2.165833), (3.409167, 2.143333), (3.428333, 2.122500), (3.447500, 2.102500), (3.466667, 2.082500), (3.485833, 2.065000), (3.505000, 2.047500), (3.524167, 2.030833), (3.543333, 2.015000), (3.563333, 2.000833), (3.583333, 1.986667), (3.605000, 1.972500), (3.627500, 1.960000), (3.650000, 1.947500), (3.674167, 1.936667), (3.699167, 1.925833), (3.725000, 1.915833), (3.752500, 1.906667), (3.780833, 1.898333), (3.811667, 1.890833), (3.844167, 1.883333), (3.878333, 1.876667), (3.915000, 1.870000), (3.953333, 1.864167), (3.993333, 1.858333), (4.035000, 1.853333), (4.078333, 1.848333), (4.123333, 1.844167), (4.168333, 1.840000), (4.212500, 1.836667), (4.256667, 1.833333), (4.299167, 1.830833), (4.338333, 1.828333), (4.375000, 1.825833), (4.406667, 1.824167), (4.434167, 1.822500), (4.456667, 1.821667), (4.473333, 1.820833), (4.485833, 1.820833), (4.494167, 1.820000), (4.498333, 1.820000), (4.500000, 1.820000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=54; interim hdwdr:=1; interim hdten:=1; % % figs/054lefttwist.fig (char 55) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((1.000000, 2.820000), (2.187500, 2.820000)); store (curpath) drawn polyline(false) ((3.750000, 2.820000), (5.000000, 2.820000)); store (curpath) drawn polyline(false) ((1.500000, 1.820000), (1.501667, 1.820000), (1.505833, 1.820000), (1.514167, 1.820833), (1.526667, 1.820833), (1.543333, 1.821667), (1.565833, 1.822500), (1.593333, 1.824167), (1.625000, 1.825833), (1.661667, 1.828333), (1.700833, 1.830833), (1.743333, 1.833333), (1.787500, 1.836667), (1.831667, 1.840000), (1.876667, 1.844167), (1.921667, 1.848333), (1.965000, 1.853333), (2.006667, 1.858333), (2.046667, 1.864167), (2.085000, 1.870000), (2.121667, 1.876667), (2.155833, 1.883333), (2.188333, 1.890833), (2.219167, 1.898333), (2.247500, 1.906667), (2.275000, 1.915833), (2.300833, 1.925833), (2.325833, 1.936667), (2.350000, 1.947500), (2.372500, 1.960000), (2.395000, 1.972500), (2.416667, 1.986667), (2.436667, 2.000833), (2.456667, 2.015000), (2.475833, 2.030833), (2.495000, 2.047500), (2.514167, 2.065000), (2.533333, 2.082500), (2.552500, 2.102500), (2.571667, 2.122500), (2.590833, 2.143333), (2.609167, 2.165833), (2.628333, 2.188333), (2.646667, 2.212500), (2.665833, 2.237500), (2.684167, 2.262500), (2.702500, 2.289167), (2.720833, 2.315833), (2.738333, 2.343333), (2.755833, 2.370833), (2.773333, 2.399167), (2.790833, 2.427500), (2.807500, 2.455833), (2.824167, 2.485000), (2.840833, 2.513333), (2.856667, 2.542500), (2.872500, 2.570833), (2.887500, 2.599167), (2.902500, 2.627500), (2.916667, 2.655833), (2.931667, 2.684167), (2.945000, 2.711667), (2.959167, 2.739167), (2.973333, 2.765833), (2.986667, 2.793333), (3.000000, 2.820000), (3.013333, 2.846667), (3.026667, 2.874167), (3.040833, 2.900833), (3.055000, 2.928333), (3.068333, 2.955833), (3.083333, 2.984167), (3.097500, 3.012500), (3.112500, 3.040833), (3.127500, 3.069167), (3.143333, 3.097500), (3.159167, 3.126667), (3.175833, 3.155000), (3.192500, 3.184167), (3.209167, 3.212500), (3.226667, 3.240833), (3.244167, 3.269167), (3.261667, 3.296667), (3.279167, 3.324167), (3.297500, 3.350833), (3.315833, 3.377500), (3.334167, 3.402500), (3.353333, 3.427500), (3.371667, 3.451667), (3.390833, 3.474167), (3.409167, 3.496667), (3.428333, 3.517500), (3.447500, 3.537500), (3.466667, 3.557500), (3.485833, 3.575000), (3.505000, 3.592500), (3.524167, 3.609167), (3.543333, 3.625000), (3.563333, 3.639167), (3.583333, 3.653333), (3.605000, 3.667500), (3.627500, 3.680000), (3.650000, 3.692500), (3.674167, 3.703333), (3.699167, 3.714167), (3.725000, 3.724167), (3.752500, 3.733333), (3.780833, 3.741667), (3.811667, 3.749167), (3.844167, 3.756667), (3.878333, 3.763333), (3.915000, 3.770000), (3.953333, 3.775833), (3.993333, 3.781667), (4.035000, 3.786667), (4.078333, 3.791667), (4.123333, 3.795833), (4.168333, 3.800000), (4.212500, 3.803333), (4.256667, 3.806667), (4.299167, 3.809167), (4.338333, 3.811667), (4.375000, 3.814167), (4.406667, 3.815833), (4.434167, 3.817500), (4.456667, 3.818333), (4.473333, 3.819167), (4.485833, 3.819167), (4.494167, 3.820000), (4.498333, 3.820000), (4.500000, 3.820000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=55; interim hdwdr:=1; interim hdten:=1; % % figs/055MobiusSymbol.fig (char 56) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn arcppp((4.000000,3.570000), (1.000000,2.820000), (4.000000,2.070000)); store (curpath) drawn polyline(false) ((3.250000, 2.070000), (4.750000, 3.570000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=56; interim hdwdr:=1; interim hdten:=1; % % figs/056Associator.fig (char 57) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((1.000000, 4.820000), (1.000000, 0.820000)); store (curpath) drawn polyline(false) ((5.000000, 4.820000), (5.000000, 0.820000)); store (curpath) drawn polyline(false) ((1.500000, 0.820000), (1.500000, 0.821667), (1.500000, 0.824167), (1.500833, 0.829167), (1.501667, 0.838333), (1.503333, 0.850000), (1.505000, 0.866667), (1.507500, 0.886667), (1.510833, 0.910833), (1.514167, 0.939167), (1.519167, 0.971667), (1.524167, 1.007500), (1.530833, 1.045833), (1.538333, 1.086667), (1.545833, 1.129167), (1.555000, 1.173333), (1.564167, 1.218333), (1.575000, 1.263333), (1.585833, 1.308333), (1.598333, 1.352500), (1.610833, 1.396667), (1.625000, 1.439167), (1.639167, 1.481667), (1.654167, 1.522500), (1.670833, 1.562500), (1.688333, 1.600833), (1.706667, 1.639167), (1.725833, 1.675833), (1.746667, 1.712500), (1.768333, 1.747500), (1.791667, 1.783333), (1.815833, 1.817500), (1.842500, 1.852500), (1.870000, 1.887500), (1.900000, 1.921667), (1.931667, 1.956667), (1.965000, 1.992500), (2.000000, 2.028333), (2.025833, 2.054167), (2.052500, 2.080000), (2.080833, 2.105833), (2.109167, 2.132500), (2.139167, 2.160000), (2.170000, 2.186667), (2.201667, 2.215000), (2.234167, 2.243333), (2.267500, 2.271667), (2.302500, 2.300833), (2.337500, 2.330000), (2.374167, 2.360000), (2.411667, 2.390833), (2.449167, 2.421667), (2.488333, 2.452500), (2.528333, 2.484167), (2.568333, 2.515833), (2.609167, 2.548333), (2.651667, 2.580833), (2.693333, 2.614167), (2.736667, 2.647500), (2.780000, 2.680833), (2.823333, 2.714167), (2.867500, 2.748333), (2.911667, 2.781667), (2.955833, 2.815833), (3.000000, 2.850000), (3.044167, 2.884167), (3.088333, 2.917500), (3.132500, 2.951667), (3.176667, 2.985000), (3.220000, 3.018333), (3.263333, 3.051667), (3.306667, 3.085000), (3.348333, 3.117500), (3.390833, 3.150000), (3.431667, 3.182500), (3.471667, 3.214167), (3.511667, 3.245000), (3.550833, 3.276667), (3.588333, 3.306667), (3.625833, 3.336667), (3.662500, 3.366667), (3.697500, 3.395833), (3.732500, 3.424167), (3.765833, 3.452500), (3.798333, 3.480833), (3.830000, 3.508333), (3.860833, 3.535000), (3.890833, 3.561667), (3.919167, 3.587500), (3.947500, 3.613333), (3.974167, 3.638333), (4.000000, 3.663333), (4.035000, 3.699167), (4.068333, 3.733333), (4.100000, 3.767500), (4.130000, 3.801667), (4.157500, 3.835000), (4.184167, 3.869167), (4.208333, 3.902500), (4.231667, 3.936667), (4.253333, 3.970833), (4.274167, 4.005833), (4.293333, 4.041667), (4.311667, 4.077500), (4.329167, 4.115000), (4.345833, 4.153333), (4.360833, 4.191667), (4.375000, 4.232500), (4.389167, 4.273333), (4.401667, 4.315000), (4.414167, 4.357500), (4.425000, 4.400000), (4.435833, 4.442500), (4.445000, 4.485000), (4.454167, 4.527500), (4.461667, 4.567500), (4.469167, 4.606667), (4.475833, 4.643333), (4.480833, 4.676667), (4.485833, 4.707500), (4.489167, 4.734167), (4.492500, 4.757500), (4.495000, 4.776667), (4.496667, 4.791667), (4.498333, 4.803333), (4.499167, 4.810833), (4.500000, 4.815833), (4.500000, 4.819167), (4.500000, 4.820000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=57; interim hdwdr:=1; interim hdten:=1; % % figs/057hexagon.fig (char 58) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(true) ((3.000000, 4.820000), (1.268333, 3.820000), (1.268333, 1.820000), (3.000000, 0.820000), (4.731667, 1.820000), (4.731667, 3.820000), (3.000000, 4.820000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=58; interim hdwdr:=1; interim hdten:=1; % % figs/058inup.fig (char 59) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((2.875000, 1.695000), (2.875000, 4.070000)); store (curpath) drawn polyline(false) ((1.500000, 4.070000), (1.500000, 4.068333), (1.500833, 4.065833), (1.502500, 4.060833), (1.504167, 4.051667), (1.506667, 4.039167), (1.510833, 4.022500), (1.515833, 4.000833), (1.521667, 3.975000), (1.529167, 3.943333), (1.537500, 3.906667), (1.547500, 3.865000), (1.558333, 3.819167), (1.570833, 3.768333), (1.583333, 3.713333), (1.598333, 3.654167), (1.613333, 3.592500), (1.629167, 3.528333), (1.645833, 3.461667), (1.663333, 3.394167), (1.680833, 3.325833), (1.698333, 3.256667), (1.716667, 3.187500), (1.735000, 3.119167), (1.754167, 3.052500), (1.772500, 2.986667), (1.790833, 2.921667), (1.809167, 2.859167), (1.827500, 2.798333), (1.845833, 2.740000), (1.863333, 2.683333), (1.881667, 2.629167), (1.899167, 2.577500), (1.916667, 2.527500), (1.934167, 2.480833), (1.951667, 2.435000), (1.968333, 2.392500), (1.985833, 2.350833), (2.003333, 2.311667), (2.020833, 2.275000), (2.038333, 2.239167), (2.055833, 2.205833), (2.074167, 2.174167), (2.091667, 2.143333), (2.110833, 2.114167), (2.129167, 2.086667), (2.148333, 2.060000), (2.168333, 2.034167), (2.188333, 2.010000), (2.208333, 1.986667), (2.230833, 1.962500), (2.254167, 1.939167), (2.278333, 1.916667), (2.302500, 1.895000), (2.327500, 1.875000), (2.353333, 1.855000), (2.380000, 1.836667), (2.406667, 1.819167), (2.435000, 1.802500), (2.463333, 1.786667), (2.492500, 1.772500), (2.521667, 1.759167), (2.552500, 1.746667), (2.583333, 1.735000), (2.615000, 1.725000), (2.646667, 1.715833), (2.679167, 1.707500), (2.711667, 1.700833), (2.745000, 1.695833), (2.779167, 1.690833), (2.812500, 1.688333), (2.846667, 1.685833), (2.880833, 1.685833), (2.915000, 1.685833), (2.949167, 1.688333), (2.983333, 1.690833), (3.017500, 1.695833), (3.050833, 1.700833), (3.084167, 1.707500), (3.117500, 1.715833), (3.150833, 1.725000), (3.183333, 1.735000), (3.215000, 1.746667), (3.246667, 1.759167), (3.278333, 1.772500), (3.308333, 1.786667), (3.338333, 1.802500), (3.368333, 1.819167), (3.396667, 1.836667), (3.425000, 1.855000), (3.452500, 1.875000), (3.480000, 1.895000), (3.506667, 1.916667), (3.532500, 1.939167), (3.558333, 1.962500), (3.583333, 1.986667), (3.605000, 2.009167), (3.626667, 2.032500), (3.648333, 2.056667), (3.669167, 2.082500), (3.690000, 2.108333), (3.710000, 2.136667), (3.730833, 2.165000), (3.750833, 2.195833), (3.771667, 2.227500), (3.791667, 2.260833), (3.811667, 2.295833), (3.832500, 2.332500), (3.852500, 2.371667), (3.873333, 2.411667), (3.894167, 2.454167), (3.915833, 2.498333), (3.936667, 2.545000), (3.959167, 2.593333), (3.980833, 2.644167), (4.003333, 2.696667), (4.025833, 2.750833), (4.049167, 2.807500), (4.072500, 2.866667), (4.096667, 2.926667), (4.120000, 2.989167), (4.144167, 3.052500), (4.168333, 3.116667), (4.193333, 3.182500), (4.217500, 3.248333), (4.240833, 3.315000), (4.265000, 3.380833), (4.288333, 3.446667), (4.310833, 3.510833), (4.332500, 3.573333), (4.353333, 3.633333), (4.373333, 3.690833), (4.391667, 3.745000), (4.409167, 3.795833), (4.425000, 3.842500), (4.439167, 3.885000), (4.451667, 3.923333), (4.462500, 3.955833), (4.471667, 3.984167), (4.480000, 4.008333), (4.485833, 4.027500), (4.490833, 4.042500), (4.495000, 4.053333), (4.497500, 4.061667), (4.499167, 4.066667), (4.500000, 4.069167), (4.500000, 4.070000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=59; interim hdwdr:=1; interim hdten:=1; % % figs/059isotopic.fig (char 60) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((2.000000, 3.320000), (1.000000, 2.820000), (5.000000, 2.820000), (4.000000, 2.320000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=64; interim hdwdr:=1; interim hdten:=1; % % figs/064dumbbell.fig (char 65) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn circle((1.375000,2.820000),0.875000); store (curpath) drawn circle((4.625000,2.820000),0.875000); store (curpath) drawn polyline(false) ((2.250000, 2.820000), (3.750000, 2.820000)); endmfpic; % % fig2dev -L mf (Version 3.2 Patchlevel 3d) % % % Preamble % mag:=1; code:=65; interim hdwdr:=1; interim hdten:=1; % % figs/065OpenHopf.fig (char 66) % xscale:=0.292; yscale:=0.292; bounds(0.600,5.400,0.728,5.820); unitlen:=1.0in#; beginmfpic(code); penwd := 0.02pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; penwd := 4.38pt; drawpen := pencircle scaled penwd yscaled aspect_ratio; store (curpath) drawn polyline(false) ((3.000000, 2.132500), (3.000000, 4.820000)); store (curpath) drawn polyline(false) ((3.000000, 0.820000), (3.000000, 1.195000)); store (curpath) drawn polyline(false) ((2.500000, 3.507500), (2.498333, 3.506667), (2.495000, 3.505833), (2.487500, 3.502500), (2.476667, 3.498333), (2.461667, 3.492500), (2.441667, 3.485000), (2.416667, 3.475000), (2.386667, 3.463333), (2.351667, 3.450000), (2.313333, 3.435000), (2.271667, 3.418333), (2.227500, 3.400000), (2.180833, 3.380833), (2.133333, 3.361667), (2.085833, 3.341667), (2.038333, 3.320833), (1.990833, 3.300833), (1.945833, 3.280833), (1.901667, 3.260833), (1.859167, 3.240833), (1.819167, 3.221667), (1.780833, 3.203333), (1.745000, 3.184167), (1.711667, 3.166667), (1.680000, 3.149167), (1.650833, 3.131667), (1.623333, 3.114167), (1.597500, 3.097500), (1.573333, 3.080833), (1.550833, 3.063333), (1.530000, 3.046667), (1.510833, 3.029167), (1.491667, 3.012500), (1.475000, 2.994167), (1.458333, 2.975833), (1.442500, 2.957500), (1.428333, 2.939167), (1.414167, 2.919167), (1.401667, 2.899167), (1.389167, 2.879167), (1.377500, 2.858333), (1.367500, 2.836667), (1.357500, 2.814167), (1.349167, 2.791667), (1.341667, 2.768333), (1.335000, 2.744167), (1.329167, 2.720000), (1.325000, 2.695833), (1.320833, 2.670833), (1.319167, 2.645833), (1.317500, 2.620000), (1.318333, 2.594167), (1.319167, 2.568333), (1.321667, 2.542500), (1.325833, 2.516667), (1.330833, 2.491667), (1.336667, 2.465833), (1.344167, 2.440833), (1.352500, 2.415833), (1.362500, 2.391667), (1.373333, 2.367500), (1.385000, 2.343333), (1.398333, 2.320833), (1.412500, 2.297500), (1.428333, 2.275833), (1.444167, 2.254167), (1.461667, 2.233333), (1.480000, 2.212500), (1.499167, 2.192500), (1.520000, 2.172500), (1.541667, 2.153333), (1.560833, 2.137500), (1.581667, 2.120833), (1.603333, 2.105000), (1.625833, 2.089167), (1.649167, 2.074167), (1.673333, 2.058333), (1.699167, 2.043333), (1.725833, 2.028333), (1.753333, 2.013333), (1.782500, 1.999167), (1.812500, 1.984167), (1.844167, 1.970000), (1.875833, 1.955833), (1.909167, 1.942500), (1.943333, 1.929167), (1.978333, 1.915833), (2.014167, 1.902500), (2.050833, 1.890000), (2.088333, 1.877500), (2.126667, 1.865833), (2.165833, 1.855000), (2.205000, 1.843333), (2.244167, 1.833333), (2.285000, 1.823333), (2.325000, 1.814167), (2.365833, 1.805000), (2.406667, 1.796667), (2.446667, 1.788333), (2.487500, 1.781667), (2.528333, 1.774167), (2.569167, 1.768333), (2.609167, 1.762500), (2.649167, 1.757500), (2.689167, 1.753333), (2.729167, 1.749167), (2.768333, 1.745833), (2.807500, 1.743333), (2.846667, 1.740833), (2.885000, 1.739167), (2.923333, 1.737500), (2.961667, 1.736667), (3.000000, 1.736667), (3.038333, 1.736667), (3.076667, 1.737500), (3.115000, 1.739167), (3.153333, 1.740833), (3.192500, 1.743333), (3.231667, 1.745833), (3.270833, 1.749167), (3.310833, 1.753333), (3.350833, 1.757500), (3.390833, 1.762500), (3.430833, 1.768333), (3.471667, 1.774167), (3.5