% This is % pkfootbows.mf % % Copyright (C) 1989-92 by Elmar Bartel. % % This program is free software; you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation; either version 1, or (at your option) % any later version. % % This program is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % % You should have received a copy of the GNU General Public License % along with this program; if not, write to the Free Software % Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. % def DefineFootBows( % This macro depends on the values of qs and BottomSpace % and uses the makro ParallelPath. expr BottomDist, %This is the space to BottomSpace BowOneWidth, %This is the width of the main bow FootHeight, %Distance from bottom of Bow0 to top of Bow3 BowTwoLoc, %Relative location of Bow2 between Bow3 and % Bow1. 0 means position at position at Bow1, % 1.0 means position at Bow3. WidthToHeight, %Ratio of BowOneWidth/2 to Bowheight BowTwoLen, %Length of Bow2 relative to Bow1 BowThreeLen %Lenght of Bow3 relative to Bow1 ) = % All parameters are in pixels when not otherwise statet. % Points are numbered from 0 to 3 from lower to upper % Points to the left have suffix l, right suffix r % points without further suffix are in the center of the bows path Bow[]; numeric BowHeight; numeric l[],x[]l,x[]r,x[],y[]l,y[]r,y[]; BowHeight = BowOneWidth*WidthToHeight/2; % We start with the first bow x1r + x1l = qs; x1r - x1l = BowOneWidth; y1 = BottomSpace + 2*BowHeight + BottomDist; x1 = .5qs; y1l = y1r = y1 - BowHeight; Bow1 = z1l .. {right} z1 .. z1r; z0 = z1 shifted (down*2*BowHeight); Bow0 = z1r .. {left} z0 .. z1l; Bow3= ParallelPath(Bow1,FootHeight-2*BowHeight); l3 = length(Bow3); cu:= (1-BowThreeLen)/2; Bow3:= subpath (cu*l3,(1-cu)*l3) of Bow3; z3l = point 0 of Bow3; z3 = point .5*length(Bow3) of Bow3; z3r = point infinity of Bow3; if proofing >0: show point 0 of reverse Bow3; show z3r; fi; Bow2= ParallelPath(Bow1,(FootHeight-2*BowHeight)*BowTwoLoc); l2 = length(Bow2); cu:= (1-BowTwoLen)/2; Bow2:= subpath (cu*l2,(1-cu)*l2) of Bow2; z2l = point 0 of Bow2; z2 = point .5length(Bow3) of Bow2; z2r = point infinity of Bow2; labels(1l,1,1r,2l,2r,3l,3r); enddef; %DefineFootBows( .55qs, % BowOneWidth % .25qs, % FootHeight % .40, % BowTwoLoc % .13, % WidthToHeight % .90, % BowTwoLen % .95); % BowThreeLen