%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % bangdefs.mf: METAFONT file that defines various shapes % for use in various bangla fonts %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% %% This file is part of the package BANGTEX, containing Bangla fonts %% and style files for the TeX/LaTeX typesetting systems %% %% Copyright (C) 2001, 2002 Palash Baran Pal %% e-mail: pbpal@theory.saha.ernet.in internet: %% internet: http://tnp.saha.ernet.in/~pbpal %% Address: Saha Institute of Nuclear Physics %% 1/AF Bidhan Nagar %% Calcutta 700064, INDIA %% %% Original release: January 2001 %% Latest modification released: January 2002 %% %% 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 2 of the License, 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., 59 Temple Place, Suite 330, Boston, MA %% 02111-1307 USA %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def E(expr xoff,yoff,w,h) = begingroup save x,y,balld,ypen,currenttransform; transform currenttransform; currenttransform := identity shifted (xoff,yoff) slanted slantval; numeric balld,ypen,height,theta; balld = .3w; ypen = .9pt; height = matra_f*h; theta = 220; % The circle z1l = (.5w,.43h); penpos1(.5balld,theta); fill fullcircle scaled balld shifted (z1l); % The connector between the circle and the stem z2r = (.7w,height); penpos2(matra_t*h,90); z3 = (w-rindent,.6h); penpos3 (stem_width,0); fill z1r{dir (theta-90)}..tension1.3..{right}z2r..tension1.2..{down}z3r--z3l{up}..{left}z2l..tension1.6..{dir (theta+90)}z1l--cycle; % The wavy line x4= w-rindent-.5stem_width; y4 = ypen; penpos4(.07h,90); z5 = (.51w,.18h); penpos5(6/50height,90); z6 = (.27w,.21h); penpos6(6/50height,90); z7 = (4/48w,26/50height); penpos7(3/50height,0); z8 = (6.5/48w,36/50height); penpos8(2/50height,-30); penstroke z5e{left}..z6e..z7e..tension1.2..z8e; % The stem hookstem(z5r,z5l,z3,0,0); penlabels(1,2,3,4,5,6,7,8); endgroup enddef; def Estem(expr xoff,yoff,w,h) = begingroup save x,y,balld,currenttransform; transform currenttransform; currenttransform := identity shifted (xoff,yoff) slanted slantval; numeric balld,height,theta; balld = .7(w-.5stem_width); height = matra_f*h; theta = 180; % The circle z1r = (0,.6height); penpos1(.5balld,theta); fill fullcircle scaled balld shifted (z1l); % The connector between the circle and the stem x2r = .75[x1l,x3l]; y2r = height; penpos2(matra_t*h,90); z3 = (w,.8height); penpos3 (stem_width,0); z4 = (x3,0); penpos4(stem_width,0); fill z1r{dir (theta-90)}..{right}z2r..tension1.2..{down}z3r--z4r--z4l--z3l{up}..z2l..tension1.6..{dir (theta+90)}z1l--cycle; penlabels(1,2,3,4); endgroup enddef; def O(expr xoff,yoff,w,h) = begingroup save x,y,balld,smalld,phia,phib,currenttransform; transform currenttransform; currenttransform := identity shifted (xoff,yoff) slanted slantval; numeric balld,phia,phib,height,rballx,rbally; phia=150; phib=-45; height = matra_f*h; % smalld,balld defined later % The two circles z1r = (21/52w,33/50height); z4r = z5l = (37/52w,29/50height); balld = .7 * length(z1r-z4r); smalld = .9balld; fill fullcircle scaled smalld shifted (z1r); fill fullcircle scaled balld shifted (z4r); % Line between the two circles z2l = (44/52w,45/50height); z3l = (45/52w,36/50height); z3r = (43/52w,40/50height); z2r = (37/52w,46/50height); z1l= z1r + .5smalld * dir (phia); z4l= z4r + .5balld * dir (phib); fill z1l{dir (phia-90)}..z2l..z3l..z4l--z4r..z3r..z2r..tension1.5..z1r--cycle; %% The line connecting to the cup z5r= z5l + .5balld * dir (phib+90); z6l = (45/52w,20/50height); z6r = (47.5/52w,19/50height); fill z5l..{down}z6l--z6r{up}..z5r--cycle; %% The cup z7r = (35/52w,6.5/50height); penpos7(6/50height,-90); z8r = (2.5/52w,45/50height); z8l = (5.2/52w,43/50height); z9 = (0,63/50height); penstroke z6e{down}..{left}z7e..{z9-z8l}z8e; penlabels(1,2,3,4,5,6,7,8,9); %% We now define the x and y co-ordinates for the right ball. %% These are not protected. They need to be used sometimes. rballx = x4r; rbally = y4r; endgroup enddef; def ka(expr xoff,yoff,wba,h) = begingroup save x,y,xstem,theta,balld,wbar,currenttransform; numeric xstem,theta,balld,height; xstem=wba-rindent; theta=-30; balld=.2height; height = matra_f*h; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; % The first part is equivalent to the definition of "ba" ba(xoff,yoff,xstem,h); z2l = (xstem,43/50height); penpos2(5.5/50height,-90); % This part is for the ball at the end of the hook z6 = (43/32xstem,21/50height); fill fullcircle scaled balld shifted (z6); % This part is the hook z7l = z6 + .5balld * dir(theta); z7r = z6 + .5balld * dir(theta+70); penstroke z2e{right}..z7e; penlabels(1,2,3,3',4,5,6,7,8,8',9,10); endgroup enddef; def ga_(expr xoff, yoff, w, h) = begingroup numeric xstem,height; xstem=w-rindent; height = matra_f*h; save x,y,currenttransform; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; z1l = (11/35w,18/50height); z1r = (15.5/35w,15/50height); z2l = (19/35w,30/50height); z2r = (24/35w,29/50height); z3l = (19/35w,34/50height); z3r = (21/35w,37/50height); z4l = (16/35w,35.5/50height); z4r = (13.5/35w,39/50height); z5l = (4/35w,31/50height); z5r = (8/35w,38/50height); z6l = (1.5/35w,38/50height); z6r = z5r; z7l = (17/35w,height); z7r = (18/35w,46/50height); z8l = (w,35/50height); penpos8(stem_width,-90); fill z1l..z2l..z3l..z4l{left}..tension1.2..{left}z5l..tension2..{up}z6l--z6r--z5r{z4l-z5l}..z4r..z3r..z2r..tension1.3..z1r--cycle; fill z6l{up}..{right}z7l..tension1.5..z8l--z8r..tension1.42..z7r..z6r--cycle; penlabels (1,2,3,4,5,6,7,8); endgroup enddef; def unga(expr xoff,yoff,w,h) = begingroup save x,y,currenttransform; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; % The vertical part z2 = (18.5/47w,36/50h); penpos2(stem_width,0); z3l = (25.5/47w,18/50h); z3r= (23/47w,23/50h); z3 = .5[z3l,z3r]; % The part going up z4l = (36/47w,26/50h); z4r = (34/47w,33/50h); fill z2l{down}..tension0.8..{right}z3l{right}..tension1.5..z4l--z4r..tension1.8..{left}z3r..{up}z2r--cycle; % The lower cup z5l = (40/47w,22/50h); penpos5(3/47w,-10); z6l = (28/47w,10/50h); z6r = (29/47w,3/50h); z7l = (6/47w,42/50h); z7r = (4/47w,43/50h); z8 = (0,63/50h); fill z4l..{down}z5l..{left}z6l{left}..{z8-z7l}z7l--z7r{z7r-z8}..{right}z6r{right}..z5r{up}..z4r--cycle; % The upper part with the dot z9l = (31/47w,h); penpos9(stem_width,-90); z10l = (38/47w,43/50h); penpos10(.6stem_width,180); z11l = z2r; penpos11(stem_width,90); x12l = x7l; y12r = h; penpos12(.12w,10); penstroke z2e{up}..{right}z9e..z10e{down}..z11e..{z12-z3}z12e; penlabels(1,2,3,4,5,6,7,8,9,10,11,12); endgroup enddef; def ca(expr xoff,yoff,w,h) = begingroup save x,y,height,currenttransform; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; numeric height; height = matra_f*h; z1 = (lindent,matra_h*h); penpos1(stem_width,180); z2r = (x1r,41.5/50height); penpos2(stem_width,180); z3r = (x1r,.24h); z3l = (x2l,.26h); z5r = (33/37w,29/50height); z5l = (27/37w,26.5/50height); z4r = (.3[x3r,x5r],4/50height); z4l = (.3[x3l,x5l],9/50height); z6r = (x1l,.45[y1,y2]); z6l = z2r; z6 = .5[z6l,z6r]; penstroke z1e--z2e--z3e{down}..{right}z4e; penstroke z4e{right}..{up}z5e; penstroke z5e{up}..{up}z6e; penlabels(1,2,3,4,5,6); endgroup enddef; def cha(expr xoff,yoff,w,h) = begingroup save x,y,currenttransform,ww,hh,hrise; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; numeric ww,hh,hrise,height; height = matra_f*h; % The rounded part z7r = (25/44w,39/50height); z7l = (x7r,y7r-matra_t*height); z8l = (35/44w,30/50height); z8r = (39/44w,28/50height); z9l = (16.5/44w,15/50height); z9r = (x9l,11/50height); z10l = (7/44w,17/50height); z10r = (12/44w,10/50height); penstroke z7e{right}..{down}z8e{down}..{left}z9e..z10e; % The part that goes down z11= (w,-ha_dip); hookjt(z10r,z10l,z11,.06h,.2,45); % The part that looks like a small "ca" ww = x7l+.8rindent; hrise - y10l = y10l - y9l; % hrise = matra_h*(h-hh); hh = h-(hrise/matra_h); ca(xoff,hrise+yoff,ww,hh); penlabels(7,8,9,10); endgroup enddef; def ja_bare(expr xoff,yoff,w,h) = begingroup save x,y,currenttransform; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; numeric height; height = matra_f*h; % The upper part z1 = (27/37w,matra_h*h); penpos1(10/37w,0); z2l = (13/37w,35/50height); z2r = (16/37w,32/50height); z3l = (23.5/37w,23/50height); z3r = (20/37w,28/50height); z4r = (30/37w,33.5/50height); z4l = (32.5/37w,28/50height); penstroke z1e{z2l-z1r}..{down}z2e{down}..{right}z3e..z4e; % The lower cup z5r = (w,y3l); penpos5(2.5/37w,0); z6r = (26/37w,9/50height); penpos6(7/50height,-90); z7r = (4.5/37w,43/50height); z7l = (6/37w,42/50height); penstroke z5e{down}..{left}z6e..{up}z7e; % The part joining the above two parts penstroke z5e{up}..z4e; penlabels(1,2,3,4,5,6,7); % The hook % NONE FOR THIS VERSION % Definitions to export numeric topl_ja,topr_ja,midlx_ja,midrx_ja,midly_ja,midry_ja; topl_ja = x1l; topr_ja = x1; z91 = .5[z4r,z5r]; penpos91(.3length(z4l-z5r), angle(z5r-z4l)); midlx_ja = x91r; midrx_ja = x91l; midly_ja = y91r; midry_ja = y91l; endgroup enddef; def ja_(expr xoff,yoff,w,h) = begingroup save x,y,currenttransform; numeric wbare,height; wbare = 37/53w; height = matra_f*h; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; ja_bare(xoff,yoff,wbare,h); z8l = (topl_ja,matra_h*h); z8r = (topr_ja,matra_h*h); z9l = (w,35/50height); z9r = (47/53w,40/50height); z3' = (midlx_ja,midly_ja); penstroke z8e{z3'-z8l}..{right}z9e; penlabels(3',8,9); % Definitions to export numeric tiplx,tiply,tiprx,tipry; tiplx = x9l; tiply = y9l; tiprx = x9r; tipry = y9r; endgroup enddef; def ja_full(expr xoff,yoff,w,h) = begingroup save x,y,currenttransform,width,thiv; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; numeric height; height = matra_f*h; ja_(xoff,yoff,w-.5rindent,h); z9l = (tiplx,tiply); z9' = (tiprx,tipry); z9r = .7[z9l,z9']; z10l = (x9r,0); z10r = (x10l-2/56w,1/50height); penstroke z9e{z9r-(w,height)}..z10e; penlabels(10); endgroup enddef; def ina(expr xoff,yoff,w,h) = begingroup save x,y,currenttransform,theta,wE; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; numeric theta,wE; theta = 60; wE=18.5/26w; z1 = (wE-rindent,.41h) + (xoff,yoff); E(xoff,yoff,wE,h); clover(z1,w-wE,.25h,.08h); endgroup enddef; def Da(expr xoff,yoff,w,h,fracrise) = begingroup save x,y,xstem,currenttransform; transform currenttransform; currenttransform := identity shifted (xoff,yoff) slanted slantval; numeric xstem; xstem = .5w; % The vertical part z1 = (xstem,h); penpos1(stem_width,0); z2 = (x1,31/50h); penpos2(stem_width,0); z3l = (27.5/49w,21.5/50h); z3r= (x3l+1/49w,28/50h); fill z1l..{down}z2l..{right}z3l--z3r{left}..{up}z2r--z1r--cycle; % The part going up z4l = (42.5/49w,30/50h); z4r = (40/49w,38/50h); fill z3l{right}..tension1.5..z4l--z4r..tension1.8..{left}z3r--cycle; % The lower cup z5l = (44/49w,27/50h); penpos5(3/50w,0); z6l = (29.5/49w,12/50h); z6r = (31/49w,5/50h); z7l = (7/49w,(fracrise-.02)*h); z7r = (5/49w,fracrise*h); z8 = (0,(63/44)*fracrise*h); fill z4l..{down}z5l..{left}z6l{left}..{z8-z7l}z7l--z7r{z7r-z8}..{right}z6r{right}..z5r{up}..z4r--cycle; penlabels(1,2,3,4,5,6,7,8); endgroup enddef; def Dha(expr xoff,yoff,w,h) = begingroup save x,y,balld,currenttransform; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; numeric balld; balld = .19h; z1 = (lindent,matra_f*h); penpos1(stem_width,0); z2 = (lindent,.27h); penpos2(stem_width,0); z3l = (.35w,.08h); z3r = (.39w,.2h); z4r = (.69w,.41h); z4l = (max(.88w,x4r+.5balld),.47h); penstroke z1e{down}..{down}z2e..tension1.2..z3e{right}..tension1.2..{up}z4e; z5 = (x4l-.5balld,y4l); fill fullcircle scaled (balld) shifted (z5); penlabels (1,2,3,4,5); endgroup enddef; def Na_(expr xoff,yoff,w,h) = begingroup save x,y,xstem,balld,currenttransform; numeric xstem,balld,height; xstem = w - rindent; height = matra_f*h; balld = max(9/50height,.3w); transform currenttransform; currenttransform = identity shifted (xoff,yoff) xscaled(w/xstem) slanted slantval; z1r = (16.5/37w,31/50height); fill fullcircle scaled balld xscaled(xstem/w) shifted (z1r); penpos1(.5balld * xstem/w,180); z2l = z1r - (0,.75balld); penpos2(.5balld,90); z3l = (3.5/37w,36/50height); penpos3(6/37w,0); z4l = (15.5/37w,height); z4r = (17/37w,45/50height); z5r = (xstem,y3); penpos5(.08h,-90); penstroke z1e{down}..z2e..{up}z3e..z4e{right}..{z5l-z4l}z5e; penlabels(1,2,3,4,5); endgroup enddef; def ta(expr xoff,yoff,ww,hh) = begingroup save x,y,balld,currenttransform; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; numeric balld; balld = 14/50hh; % The ball z1l = (30/52ww,32/50hh); penpos1(.5balld,180); fill fullcircle scaled balld shifted (z1l); % Joining the ball and the cup z2r = (33.5/52ww,43/50hh); z2l = z1l + .5balld * dir(45); % The cup at the bottom z3l = (47/52ww,27/50hh); z3r = (50/52ww,26/50hh); z4l = (33/52ww,13.5/50hh); z4r = (35/52ww,7/50hh); z5l = (6/52ww,43/50hh); z5r = (4/52ww,44/50hh); z6 = (0,62/50hh); fill z1l..z2l{right}..{down}z3l{down}..z4l{left}..tension1.2..{z6-z5l}z5l--z5r{z5r-z6}..tension1.2..{right}z4r{right}..{up}z3r{up}..{left}z2r..z1r--cycle; penlabels(1,2,3,4,5,6); % Definitions to export numeric top_ta; top_ta = y2l; endgroup enddef; def da(expr xoff,yoff,w,h) = begingroup save x,y,height,currenttransform; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; numeric height; height=matra_f*h; %% The vertical bar at the left z1 = (lindent,height); penpos1(stem_width,0); z2l = (x1l,20/50height); z2r = (x1r,15/50height); penstroke z1e..z2e; %% The diagonal line y4r = .52h; y4l-y4r=y2l-y2r; x4r-x4l=stem_width; .5[x4r,x4l] = w - rindent; z3 = (x4l,height); penstroke z2e{z3-z2l}..z4e; %% Calculation for the upper end of the diagonal line x5r = x4l; y5 = y2r; penpos5(.6*length(z4r-z4l),0); x6r = x4r; y6r = 0; penpos6(.4*length(z4r-z4l),-25); penstroke z4e..z5e..z6e; penlabels(1,2,3,4,5,6); % Co-ordinates to export numeric da_tiplx, da_tiply, da_tiprx, da_tipry; da_tiplx = x6l; da_tiply = y6l; da_tiprx = x6r; da_tipry = y6r; endgroup enddef; def na(expr xoff,yoff,w,h,frach) = begingroup save x,y,xstem,balld,currenttransform; numeric xstem,balld; xstem=w-rindent; balld = max(15/50h,1/3w); transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; z1r = (13/42w,21.5/50h); penpos1(.5balld,0); z2r = z1r + .5balld * dir 45; z2l = z1r + .5balld * (.4 dir 0 + 1.5 dir 90); fill fullcircle scaled balld shifted (z1r); fill z1l{up}..{right}z2l--z2r{left}..z1r--cycle; if frach>0: z3 = (xstem,frach*h); hookstem(z2l,z2r,z3,0,0); else: z3 = (w,0); hookjt(z2r,z2l,z3,0.2h,1,90); fi; penlabels(1,2,3,4); endgroup enddef; def na_(expr xoff,yoff,w,h) = begingroup save x,y,xstem,vdiam,ecc,currenttransform; numeric xstem,balld; xstem=w-rindent; balld = .25h; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; z1r = (13/32w,21.5/50h); penpos1(.5balld,0); z2r = z1r + .5balld * dir 45; z2l = z1r + .5balld * (.4 dir 0 + 1.5 dir 90); z3l = (w,y1); penpos3(.5*length(z2l-z2r),-90); fill fullcircle scaled balld shifted (z1r); fill z1l{up}..{right}z2l--z2r{left}..z1r--cycle; penstroke z2e{right}..tension1.2..z3e; penlabels(1,2,3,4); endgroup enddef; def pa_(expr xoff,yoff,w,h) = begingroup save x,y,height,full_w,currenttransform; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; numeric height; height = matra_f*h; % The upper curve z1l = (3/39w,35/50height); z1r= (11/39w,38/50height); z2l = (20/39w,matra_h*h); z2r = (22/39w,43/50height); z3l = (w-.5stem_width,34/50height); z3r = (x3l,y3l+y2r-y2l); path p; p = z3r{z2l-z3r}..z2r..z1r; penstroke z1e{up}..z2e..tension1.1..z3e; % The lower bar z4l = (10.5/39w,21/50height); z4r = (17/39w,19/50height); z5= p intersectionpoint (z4l--(w,matra_f*h)); cwbar(z4r,z4l,z5,angle(z3l-z5)); % The connector z6l= (6.5/39w,32/50height); z6r = z1r; z7r = (16.3/39w,34/50height); z7l = (14.5/39w,33/50height); z8r = .4[z4l,z5]; y8l = y8r; x8r - x8l = length(z7r - z7l); penstroke z1e{down}..{right}z6e; penstroke z6e{right}..z7e..{down}z8e; fill z8l..{z4l-z8r}z4l--z4r--z8r--cycle; penlabels (1,2,3,4,5,6,7,8); endgroup enddef; def ba(expr xoff,yoff,w,h) = begingroup save x,y,height,currenttransform; numeric height; height = matra_f*h; transform currenttransform; currenttransform := identity shifted (xoff,yoff) slanted slantval; z1l = (4/39w,29/50height); z3r = (8.5/39w,23.5/50height); z2l = (w,43/50height); penpos2(5.5/50height,-90); z1r = z1l + length(z2r-z2l) * dir angle(z3r-z1l); path ba_pr; ba_pr = z1r{z2l-z1r}..z2r; path ba_pl; ba_pl = z2l..{z1r-z2l}z1l; penstroke z1e{z2l-z1r}..z2e; z3l = point .2 of ba_pr; fill z1l--z3l--z3r--cycle; z4 = (w,height); hookstem(z3l,z3r,z4,angle(z3l-z1l),2*angle(z3l-z1l)); penlabels (1,2,3,4); currenttransform := identity slanted slantval; numeric ba_topxl, ba_topxr, ba_topy; ba_topxl = x4 - .5stem_width + xoff; ba_topxr = x4 + .5stem_width + xoff; ba_topy = height + yoff; endgroup enddef; def ba_remove(expr xoff,yoff,w,h) = begingroup save x,y,height,currenttransform; numeric height; height = matra_f*h; transform currenttransform; currenttransform := identity shifted (xoff,yoff) slanted slantval; z1l = (4/39w,29/50height); z3r = (8.5/39w,23.5/50height); z2l = (w,43/50height); penpos2(5.5/50height,-90); z1r = z1l + length(z2r-z2l) * dir angle(z3r-z1l); path ba_pr; ba_pr = z1r{z2l-z1r}..z2r; path ba_pl; ba_pl = z2l..{z1r-z2l}z1l; z3l = point .2 of ba_pr; z4r = (w+.5stem_width,0); penpos4(.5stem_width,-stem_slope); z5 = z2 + (.5stem_width,0); penpos5(5.5/50height,-90); z7 = (x5,0); unfill z5l--ba_pl--z3r{z3l-z1l}..{down}z4l--z4r--cycle; unfill z5l--ba_pl--z3r{z3l-z1l}..{down}z4l--z4r--cycle; endgroup enddef; def ba_(expr xoff,yoff,w,h) = begingroup save x,y; z1l = (4/39w,29/50height); z3r = (8.5/39w,23.5/50height); z2l = (w,43/50height); penpos2(5.5/50height,-90); z1r = z1l + length(z2r-z2l) * dir angle(z3r-z1l); path ba_pr; ba_pr = z1r{z2l-z1r}..z2r; path ba_pl; ba_pl = z2l..{z1r-z2r}z1l; penstroke z1e{z2l-z1r}..z2e; z3l = point .2 of ba_pr; fill z1l--z3l--z3r--cycle; z4 = (w,height); hookstem(z3l,z3r,z4,angle(z3l-z1l),2*angle(z3l-z1l)); penlabels (1,2,3,4,5); endgroup enddef; def ba_(expr xoff,yoff,w,h) = begingroup save x,y,xstem,currenttransform; numeric wba,xstem; wba = w; xstem = w-rindent; transform currenttransform; currenttransform := identity xscaled (wba/xstem) shifted (xoff,yoff) slanted slantval; z1 = (.07wba,.45h); z2 = (.14wba,.35h); z3 = (xstem,.53h); z4 = (xstem,.03h); z5 = z2 + .23wba * (cosd angle(z3-z2), sind angle(z3-z2)); cwbar(z1,z2,z3,90); hookjt(z2,z5,z4,.1h,.2,90); penlabels (1,2,3,4,5); currenttransform := identity slanted slantval; endgroup enddef; def bha(expr xoff,yoff,w,h) = begingroup save x,y,balld,currenttransform; numeric balld; balld = 12/54w; transform currenttransform; currenttransform := identity shifted (xoff,yoff) slanted slantval; % The cup at the bottom z4l = (48/54w,28/50h); z4r = (51/54w,25/50h); z5l = (33/54w,13/50h); z5r = (34/54w,6/50h); z6l = (7/54w,43/50h); z6r = (5/54w,44/50h); % The ball z1r = (26/54w,34/50h); penpos1(.5balld,0); fill fullcircle scaled balld shifted z1r; % Joining the ball and the cup z2l = (31/54w,24/50h); z2r = (32/54w,30/50h); z3l = (45.5/54w,32.5/50h); z3r = (42/54w,39.5/50h); fill z1r..z2r{right}..z3r--z3l..{left}z2l..{up}z1l--cycle; fill z3r..z4r{down}..{left}z5r..tension1.4..{(0,63/50h)-z6r}z6r--z6l{z6l-(0,63/50h)}..tension1.4..z5l{right}..{up}z4l..z3l--cycle; penlabels(1,2,3,4,5,6,7,8); endgroup enddef; def ma_(expr xoff,yoff,w,h) = begingroup save x,y,xstem,theta,balld,height, currenttransform; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; numeric xstem,theta,balld,height; xstem = w-rindent; theta = -30; balld = .25h; height = matra_f*h; % The part leading to the dot z1l = (4/43w,matra_h*h); penpos1(7/43w,0); z2l = (21.5/43w,31/50height); z2r = (26/43w,28/50height); z3l = (16/43w,21/50height); penpos3(.5balld,theta); fill z1l{down}..{down}z2l{down}..z3l--z3r{dir (theta+90)}..z2r..tension1.3..z1r--cycle; % The dot fill fullcircle scaled balld shifted z3l; % The part to the lower right of the dot z4r = z3l; z4l = z3l + .5balld * dir 90; z5 = (xstem,matra_h*h); hookstem(z4l,z4r,z5,0,0); penlabels(1,2,3,4,5); endgroup enddef; def Ja(expr xoff,yoff,w,h,topfrac) = begingroup save x,y,xstem,currenttransform; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; numeric xstem,height; xstem = w-rindent; height = matra_f*h; % The upper left portion z1l = (4/42w,matra_h*h); penpos1(11/42w,0); z2l = (22/42w,37/50height); z2r = (28/42w,34/50height); fill z1l{down}..{z2l-z1l}z2l--z2r--z1r--cycle; z3 = (12.5/42w,20/50height); % The portion going towards lower left cwbar(z2l,z2r,z3,angle(z1r-z2r)); % The hook and the stem z4 = 7/21[z3,z2r]; z5 = (xstem,topfrac*matra_h*h); hookstem(z4,z3,z5,0,angle(z2r-z2l)); penlabels(1,2,3,4,5); endgroup enddef; def la_(expr xoff,yoff,w,h) = begingroup save x,y,xstem,balld,xecc,currenttransform; numeric xstem,balld,xecc,height; height = matra_f*h; xstem = w-rindent; balld = 13/50height; xecc = xstem/w; transform currenttransform; currenttransform = identity shifted (xoff,yoff) xscaled (1/xecc) slanted slantval; % The ball z1 = (.41w,.33h); fill fullcircle scaled balld xscaled (xecc) shifted (z1); % The first wavy line coming out of the ball z2l = z1 + .5balld * dir (-90); penpos2(.3balld,90); z3l = (5.8/50w,28/50height); z3r = (9/50w,26/50height); z4l = (16/50w,41.5/50height); z4r = (18/50w,36/50height); z5l = (26.5/50w,36/50height); z5r = (29/50w,27/50height); penstroke z2e..z3e{up}..{right}z4e..{z5r-z4l}z5e; % The second wavy line connecting to the stem z6l = (33/50w,y4l-1/100height); z6r= (35/50w,y4r); z7l = (xstem,31/50height); z7r= (xstem,26/50height); penstroke z5e{up}..z6e..tension1.4..{z6r-z6l}z7e; penlabels(1,2,3,4,5,6,7); endgroup enddef; def sha_(expr xoff,yoff,w,h) = begingroup save x,y,height,currenttransform; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; numeric height; height = matra_f*h; % The balls z1l = (14.5/40w,40/50height); z1r = (17/40w,42/50height); z2 = (5.5/40w,30/50height); z3 = (11.5/40w,25/50height); z4 = (19/40w,y2); x5 -x4 = x4 - x3; y5 = y3; x6 - x4 = x4 - x2; y6=y2; z7l = z1r; x7r - x4 = x4 - x1l; y7r = y1l; fill z1r--z1l..tension1.4..{down}z2{down}..z3{right}..z4--cycle; fill z7l--z7r..tension1.4..{down}z6{down}..z5{left}..z4--cycle; % The antenna to the left z8r = (0,matra_f*h); x8l = abs(cosd(matra_slope))*matra_t*h; y8r-y8l = matra_t*h; penstroke z8e{right}..tension0.9..{z4-z1l}z1e; % The line connecting the balls with the stem z9l = (27/40w,y8r); z9r = (29/40w,44.5/50height); z10l = (w,40/50height); z10r = (w,35/50height); penstroke z7e..{right}z9e{right}..tension1.5..{z10r-z9r}z10e; penlabels(1,2,3,4,5,6,7,8,9,10); endgroup enddef; def Sha_(expr xoff,yoff,w,h) = begingroup save x,y,xstem, currenttransform; numeric xstem,height; xstem = w-rindent; height=matra_f*h; transform currenttransform; currenttransform = identity shifted (xoff,yoff) xscaled (w/xstem) slanted slantval; % The upper left portion z1l = (4/42w,matra_h*h); penpos1(11/42w,0); z2l = (22/42w,37.5/50height); z2r = (28/42w,34/50height); fill z1l{down}..{z2l-z1l}z2l--z2r--z1r--cycle; % The portion going towards lower left z3 = (12.5/42w,20/50height); cwbar(z2l,z2r,z3,angle(z1r-z2r)); % The hook z4 = .33[z3,z2r]; z5 = (xstem,.5stem_width*sind(stem_slope)); hookjt(z3,z4,z5,.05h,.5,90); % The cross through the belly x6 = xstem; y6 = (y1r*(x2r-x6) - y2r*(x1r-x6))/(x2r-x1r); z7 = .13[z2r,z3]; cwbar (z7,z2r,z6,90); penlabels(1,2,3,4,5,6,7); endgroup enddef; def sa_(expr xoff,yoff,w,h) = begingroup save x,y,currenttransform; numeric xstem; xstem = w-rindent; numeric midxl_sa,midyl_sa,midxr_sa,midyr_sa; transform currenttransform; currenttransform = identity shifted (xoff,yoff) xscaled(w/xstem) slanted slantval; % The wavy line z5l = (5/46w,26/50h); z5r = (7/46w,27/50h); z6l = (14.5/46w,15/50h); z6r = (12/46w,22/50h); z8r= (xstem,28/50h); z8l= (x8r,22.5/50h); x7r = 2/3[x6r,x8r]; y7r = 38.5/50h; x7l = 2/3[x6l,x8l]; y7l = 31.5/50h; path pr; pr = z7r{left}..tension2..{left}z6r{left}..tension5..z5r; path pl; pl = z5l..tension5..{right}z6l{right}..tension2..{right}z7l; fill pl--pr--cycle; penstroke z7e{right}..{z8l-z7r}z8e; % The upper left part z1l = (3.5/46w,h); penpos1(12.5/46w,0); z2 = (11/46w,43/50h); z3l = ((21/46w,0)--(21/46w,h)) intersectionpoint pr; z3r = ((23/46w,0)--(23/46w,h)) intersectionpoint pr; fill z1l{down}..{right}z2{right}..{down}z3l--z3r{up}..tension1.2..z1r--cycle; % Exporting co-ordinates midxl_sa = (x3l+xoff)*(w/xstem); midyl_sa = y3l+yoff; midxr_sa = (x3r+xoff)*(w/xstem); midyr_sa = y3r+yoff; penlabels(1,2,3,4,5,6,7,8); endgroup enddef; def Ha(expr xoff,yoff,w,h) = begingroup save x,y,currenttransform; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; numeric balld,phi; balld = 13/50h; phi=-60; %% The ball z1r = (14.5/40w,34/50h); penpos1(.5balld,phi); fill fullcircle scaled balld shifted z1r; %% The connector z2 = (16/40w,h); penpos2(6.5/40w,0); z3l = (19.5/40w,42/50h); z3r = (23/40w,42/50h); z4 = z1r + .5balld * dir(-90); fill z4{right}..{up}z3r..z2r--z2l..{down}z3l..z1r--cycle; z5 = (26/40w,37/50h); z6l = (37/40w,31/50h); z6r = (34/40w,32.5/50h); z7l = (19/40w,13.5/50h); z7r = (16.5/40w,19/50h); fill z1l..{right}z3l..{down}z6l--z6r{up}..{left}z5..z1r--cycle; %% The swordlike line at the bottom z9l = (10.5/40w,13/50h); z9r = (5/40w,23/50h); z10 = (46/40w,-ha_dip); fill z6l{down}..{left}z7l..z9l--z9r..{right}z7r..{up}z6r--cycle; hookjt(z9l,z9r,z10,.08h,.5,angle(z9r-z9l)); penlabels(1,2,3,4,5,6,7,9,10); endgroup enddef; def khiyo(expr xoff,yoff,w,h) = begingroup save x,y,currenttransform; transform currenttransform; currenttransform = identity shifted (xoff,yoff) slanted slantval; numeric xstem,balld,thinness,height,theta; xstem=42/63w; thinness=.45; height = matra_f*h; balld=11/50height; theta = -60; % The two balls z0 = (xstem,height); z1= (11/63w,34.5/50height); z2= (24/63w,20/50height); fill fullcircle scaled balld shifted (z1); fill fullcircle scaled balld shifted (z2); % Points on the two circles z1a = z1 + .5 * balld * dir(0); z1b = thinness[z1a,z1]; z1c = z1 + .5balld * dir(90); z2a = z2 + .5balld * dir(0); z2b = thinness[z2a,z2]; z2c = z2 + .5balld * dir(90); % The line from the matra to the first dot z6l = (7/63w,matra_h*h); penpos6(6.5/63w,0); fill z6l..{down}z1b--z1a{up}..z6r--cycle; % The line between the two dots fill z1c{right}..{down}z2a--z2b{up}..tension0.8..{left}z1b--cycle; % The stem hookstem(z2c,z2a,z0,0,0); % This part is for the ball at the end of the hook z3 = (51/63w,23/50height); fill fullcircle scaled balld shifted z3; % The hook z4l = (xstem,34.5/50height); penpos4(.5balld,90); z5 = (x3,y4); penpos5(.45balld,90);; z7 = (24/63w,matra_h*h); penpos7(4/63w,0); z3a = z3 + .5balld * dir(theta); z3b = thinness[z3a,z3]; fill z3a{dir (theta+90)}..tension1.4..{left}z5r..z4r{left}..tension0.8..{up}z7r--z7l..{right}z4l..z5l{right}..{dir (theta-90)}z3--cycle; penlabels (0,1,1a,1b,1c,2,2a,2b,2c,3,3',3a,3b,4,5,6,7); % definitions to export numeric ballx, bally; ballx = x3; bally = y3; endgroup enddef; %%% End of bangdefs.mf