From 6bc45f3087df0ce19bdf3c57a0aec55944ec40ed Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 11 Mar 2023 21:11:43 +0000 Subject: circuit-macros (11mar23)% git-svn-id: svn://tug.org/texlive/trunk@66549 c570f23f-e606-0410-a88d-b1316a301751 --- .../latex/circuit-macros/examples/Lettering.m4def | 1158 ++++++++++++++++++++ 1 file changed, 1158 insertions(+) create mode 100644 Master/texmf-dist/doc/latex/circuit-macros/examples/Lettering.m4def (limited to 'Master/texmf-dist/doc/latex/circuit-macros/examples/Lettering.m4def') diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/Lettering.m4def b/Master/texmf-dist/doc/latex/circuit-macros/examples/Lettering.m4def new file mode 100644 index 00000000000..bbc9f0e4ec9 --- /dev/null +++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/Lettering.m4def @@ -0,0 +1,1158 @@ +divert(-1) +% Lettering.defs +% Lettering definitions + +define(`Letter_init', + `# Letter grid parameters + lu = 0.07 + define(`grthick',`0.4') + define(`letterlinethick',`(lu/0.07)*1.2') + define(`ft2',`(linethick/2)pt__') + linethick_(letterlinethick) + + ifelse(m4postprocessor,pstricks, + ` \newgray{gridgray}{0.75} + \newgray{lightgridgray}{0.80} + \newgray{linegray}{0.40}', + m4postprocessor,pgf, + ` \definecolor{gridgray}{rgb}{0.433,0.433,0.433} + \definecolor{lightgridgray}{rgb}{0.8,0.8,0.8} + \definecolor{linegray}{rgb}{0.231,0.231,0.231}', + m4postprocessor,mpost, + ` define(`gridgray',`0.433,0.433,0.433') + define(`lightgridgray',`0.8,0.8,0.8') + define(`linegray',`0.231,0.231,0.231')', +# else + ` define(`gridgray',`0.5 0.5 0.5') + define(`lightgridgray',`0.8 0.8 0.8') + define(`linegray',`0.3 0.3 0.3')') + ifpstricks(`command `"\makeatletter \def\psas@@c{setlinecap 0 0 moveto"' + command `" 0 0.1 L stroke 0 0 moveto } \makeatother"'') +`# Letter_init end' + ') + +# graph coordinate system +define(`gco',`(vscal_(lu,$1,$2))') + +% `Stroke arrow +% stroke(linespec,vert offset,label,<-,linelabel)' +define(`setstroke',`ifmpost( + `setrgb(0,0,0)', + `psset_(linecolor=black,arrows=-)')dnl + linethick_(0.3); arrowwid = 1.6pt__ ; arrowht = 3pt__') + +define(`stroke',`rpoint_(`$1') ; { setstroke + m4lth = linethick + ifelse((`$2'),(),,`if (`$2') != 0 then { move to rvec_(0,`$2') }') + ifelse(`$3',,,`ifelse(index(`$3',"),0,`{$3}',{"`$3'"})') + ifelse(`$5',,,`$5':)line ifelse(`$4',,->,`$4') to rvec_(rp_len,0) dnl + chop 3pt__ chop 0 + linethick_(m4lth) } +') + +# non-normalized line at 90 deg to line argument +define(`perp',`(`$1'.start.y-`$1'.end.y),(`$1'.end.x-`$1'.start.x) ') + +define(`grid', +` lthtmp = linethick; linethick = grthick + ifmpost(`setrgb(gridgray)',`psset_(linecolor=gridgray)') + for i=0 to $1 do { + { line up ($2)*lu from gco(i,0) } } + for j=0 to $2 do { + { line right ($1)*lu from gco(0,j) } } + psset_(`linecolor=black') + linethick = lthtmp ') + +define(`elarrow',`i = ifelse(`$7',,-1,`$7') + for theta = `$1' to `$2' by `$3' do { i = i+1 + V[i]: `$4'+((`$5')*cosd(theta),(`$6')*sind(theta)) } + fitcurve(V,i,->) ') + +define(`charA', +`[Origin: gco(0,0) `#' `charA' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(3,6)+(0,-ft2) to gco(0,0)+(ft2,ft2) + L2: line from gco(3,6)+(0,-ft2) to gco(6,0)+(-ft2,ft2) + L3t: line invis from gco(0,2)+(0,ft2) right lu + L3: line from Intersect_(L1,L3t) to Intersect_(L2,L3t) + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu ,-lu*0.75,1) + stroke(from L2.start to L2.end chop lu , lu*0.75,2) + stroke(from L3.start to L3.end chop lu/3,-lu*0.75,3) ') + box invis wid 6*lu ht 6*lu with .sw at Origin]') + +define(`charB', +`[Origin: gco(0,0) `#' `charB' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + mid = 3.3*lu-ft2 + topht = 6*lu-2*ft2-mid + L2: line right_ 5*lu-2*ft2-mid/2 + L5: arc ccw to Here+(0,mid) with .c at Here+(0,mid/2) + L3: line from (L1,Here) to Here + l4l = 4.5*lu-2*ft2-topht/2 + L4: line from L1.start right_ l4l + L7: arc cw to Here+(0,-topht) with .c at Here+(0,-topht/2) + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3,-lu*0.75,1) + stroke(from L2.start to L2.end chop lu/3,-lu*0.75,2) + stroke(from L3.start to L3.end chop lu*.75 chop 0,-lu*0.75,3) + move to L4.start+(0,.75*lu) + {"4"}; line right l4l chop 3pt__ chop 0 + arcd(Here-(0,.75*lu+topht/2),.75*lu+topht/2,90,-30) cw -> + "5" below ljust + arcd(L2.end+(0,mid/2),mid/2+0.75*lu,15,-90) cw -> ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`charC', +`[Origin: gco(0,0) `#' `charC' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + ifelse(`$1',,,`circle rad 3*lu-ft2 thick 0.3 dashed at gco(3,3)') + arcr(gco(3,3),3*lu-ft2,atan2(2.5,1.5),atan2(-2,2.0)) + ifelse(`$1',,,` + setstroke + "1" at gco(3,6) above rjust + arcd(gco(3,3),3.75*lu,105,atan2(-2,2.1)*rtod_) -> + "2" at gco(3,6) above ljust + arcd(gco(3,3),3.75*lu,75,atan2(2.5,1.5)*rtod_) cw -> ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`charD', +`[Origin: gco(0,0) `#' `charD' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + lr = 3*lu-ft2 + L2: line right 5*lu-ft2-lr + arcd(Here+(0,lr),lr,-90,90) + line to L1.start + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3,-lu*0.75,1) + stroke(from L2.start to L2.end chop lu/3 chop lu/8,-lu*0.75,2) + move to L1.start+(0,.75*lu) + {"3"}; line right 5*lu-ft2-lr chop 3pt__ chop 0 + arcd(Here-(0,.75*lu+lr),.75*lu+lr,90,-90) cw -> ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`charE', +`[Origin: gco(0,0) `#' `charE' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + L2: line right 5*lu-2*ft2 + L3: line from L1.start right 4.5*lu-2*ft2 + L4: line from gco(0,3.2)+(ft2,0) right 3*lu-2*ft2 + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3,-lu*0.75,1) + stroke(from L2.start to L2.end chop lu/2 chop lu/3,-lu*0.75,2) + stroke(from L3.start to L3.end chop lu*.75 chop lu/3,-lu*0.75,3) + stroke(from L4.start to L4.end chop lu*.75 chop lu/3,-lu*0.75,4) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`charF', +`[Origin: gco(0,0) `#' `charF' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + L2: line from L1.start right 5*lu-2*ft2 + L3: line from gco(0,3.2)+(ft2,0) right 3*lu-2*ft2 + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3,-lu*0.75,1) + stroke(from L2.start to L2.end chop lu*.75 chop lu/3,-lu*0.75,2) + stroke(from L3.start to L3.end chop lu*.75 chop lu/3,-lu*0.75,3) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`charG', +`[Origin: gco(0,0) `#' `charG' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + ifelse(`$1',,,`circle rad 3*lu-ft2 thick 0.3 dashed at gco(3,3)') + L3: line from gco(3,3) to gco(5,3) then to gco(5,1) + arcr(gco(3,3),3*lu-ft2,atan2(2.5,1.5),atan2(-2,2.0)) + ifelse(`$1',,,` + setstroke + "1" at gco(3,6) above rjust + arcd(gco(3,3),3.75*lu,105,atan2(-2,2.1)*rtod_) -> + "2" at gco(3,6) above ljust + arcd(gco(3,3),3.75*lu,75,atan2(2.5,1.5)*rtod_) cw -> + line from L3.start+(0,-.75*lu) right 1.2*lu chop .5*lu chop 0 + { "3" at last line.start rjust } + arrow down 1.2*lu ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`charH', +`[Origin: gco(0,0) `#' `charH' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + L2: line from gco(5,6)+(0,-ft2) to gco(5,0)+(0,ft2) + L3: line from gco(0,3.2)+(ft2,0) to gco(5,3.2) + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3,-lu*0.75,1) + stroke(from L2.start to L2.end chop lu/3, lu*0.75,2) + stroke(from L3.start to L3.end chop lu*.75 chop lu/3,-lu*0.75,3) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`charI', +`[Origin: gco(0,0) `#' `charI' + ifelse(`$1',,,`grid(1,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3, lu*0.75,1) ') + box invis wid 2*ft2 ht 6*lu with .sw at Origin]') + +define(`charJ', +`[Origin: gco(0,0) `#' `charJ' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + v = (sqrt(2)-1)*4/3 + al = 2.5*lu-ft2 + bl = 2.0*lu-ft2/2 + CL: gco(2.5,4.0)+(0,-bl) + E: ellipse ht 2*bl wid 2*al thick 0.3 ifelse(`$1',,invis,dashed) at CL + L1: line from (E.e,gco(0,6)+(ft2,-ft2)) to E.e + spline v to (E.e,E.s) then to (E.w,E.s) then to E.w + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3, lu*0.75,1) + "2" at gco(-.5,1.5) + spline v -> from gco(-0.4,0.75) to gco(-0.2,-0.65) then to gco(5.65,-0.65) \ + then to gco(5.65,2) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`charK', +`[Origin: gco(0,0) `#' `charK' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + L3t:line ifelse(`$1',,invis,dashed) thick 0.3 from L1.start \ + to gco(5,0)+(-ft2,ft2) + L2: line from gco(4.5,6)+(0,-ft2) to gco(0,2)+(ft2,0) + L3: line from Intersect_(L3t,L2) to L3t.end + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3,-lu*0.75,1) + stroke(from L2.start to L2.end chop lu*4/3 chop lu,-lu*0.75,2) + stroke(from L3.start to L3.end chop lu*.75 chop lu/3, lu*0.75,3) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`charL', +`[Origin: gco(0,0) `#' `charL' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + L2: line to gco(5,0)+(-ft2,ft2) + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3,-lu*0.75,1) + stroke(from L2.start to L2.end chop lu/3,-lu*0.75,2) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`charM', +`[Origin: gco(0,0) `#' `charM' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + L2: line from gco(6,6)+(-ft2,-ft2) to gco(6,0)+(-ft2,ft2) + L3: line from L1.start to gco(3,0)+(0,ft2) + L4: line from L2.start to gco(3,0)+(0,ft2) + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3,-lu*0.75,1) + stroke(from L2.start to L2.end chop lu/3, lu*0.75,2) + stroke(from L3.start to L3.end chop lu*.75 chop lu*2, lu*0.75,3) + stroke(from L4.start to L4.end chop lu*.75 chop lu*2,-lu*0.75,4) ') + box invis wid 6*lu ht 6*lu with .sw at Origin]') + +define(`charN', +`[Origin: gco(0,0) `#' `charN' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + L2: line from gco(5,6)+(0,-ft2) to gco(5,0)+(0,ft2) + L3: line from L1.start to L2.end + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3,-lu*0.75,1) + stroke(from L2.start to L2.end chop lu/3, lu*0.75,2) + stroke(from L3.start to L3.end chop lu*1.0 chop lu*1.5, lu*0.75,3) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`charO', +`[Origin: gco(0,0) `#' `charO' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + circle rad 3*lu-ft2 at gco(3,3) + ifelse(`$1',,,` + setstroke + "1" at gco(3,6) above rjust + arcd(gco(3,3),3.75*lu,105,atan2(-2,2.1)*rtod_) -> + "2" at gco(3,6) above ljust + arcd(gco(3,3),3.75*lu,75,atan2(-2,2.1)*rtod_+5) cw -> ') + box invis wid 6*lu ht 6*lu with .sw at Origin]') + +define(`charP', +`[Origin: gco(0,0) `#' `charP' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + L2: line from gco(0,3)+(ft2,0) right 5*lu-ft2-(3*lu-ft2)/2 + L3: line from L1.start right 5*lu-ft2-(3*lu-ft2)/2 + arcd(Here+(0,-(3*lu-ft2)/2),(3*lu-ft2)/2,-90,90) + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3,-lu*0.75,1) + stroke(from L2.start to L2.end chop lu*.75 chop lu/3,-lu*0.75,2) + "3" at gco(0,6)+(0,lu*.75) + line to (L3.end,Here) chop lu/2 chop 0 + arcd(Here+(0,-4.5*lu/2),4.5*lu/2,90,-90) cw -> ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`charQ', +`[Origin: gco(0,0) `#' `charQ' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + circle rad 3*lu-ft2 at gco(3,3) + rpoint_(from gco(3,3) to gco(5,0)) + ifelse(`$1',,,`{line dashed dashwid*0.8 thick 0.3 to rvec_(2*lu-ft2,0)}') + L3: line from rvec_(2*lu-ft2,0) to rvec_(4*lu-ft2,0) + ifelse(`$1',,,` + setstroke + "1" at gco(3,6) above rjust + arcd(gco(3,3),3.75*lu,105,atan2(-2,2.1)*rtod_) -> + "2" at gco(3,6) above ljust + arcd(gco(3,3),3.75*lu,75,atan2(-2,2.1)*rtod_+5) cw -> + stroke(from L3.start to L3.end chop -lu/3 chop lu/3,-lu*0.75,3) ') + box invis wid 6*lu ht 6*lu with .sw at Origin]') + +define(`charR', +`[Origin: gco(0,0) `#' `charR' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + L2: line from gco(0,3)+(ft2,0) right 5*lu-ft2-(3*lu-ft2)/2 + Lt4: line thick 0.3 ifelse(`$1',,invis,dashed) from gco(1,6)+(-ft2,-ft2) \ + to gco(5,0)+(-ft2,ft2) + L4: line from Intersect_(Lt4,L2) to Lt4.end + L3: line from L1.start right 5*lu-ft2-(3*lu-ft2)/2 + arcd(Here+(0,-(3*lu-ft2)/2),(3*lu-ft2)/2,-90,90) + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3,-lu*0.75,1) + stroke(from L2.start to L2.end chop lu*.75 chop lu,-lu*0.75,2) + stroke(from L4.start to L4.end chop lu chop lu*.5,-lu*0.75,4) + "3" at gco(0,6)+(0,lu*.75) + line to (L3.end,Here) chop lu/2 chop 0 + arcd(Here+(0,-4.5*lu/2),4.5*lu/2,90,-80) cw -> ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`charS', +`[Origin: gco(0,0) `#' `charS' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + ah = 2.0*lu-ft2 + bh = 1.4*lu-ft2/2 + CH: gco(2.5,3.2)+(0,bh) + ifelse(`$1',,,`ellipse ht 2*bh wid 2*ah thick 0.3 dashed at CH') + al = 2.5*lu-ft2 + bl = 1.6*lu-ft2/2 + CL: gco(2.5,3.2)+(0,-bl) + ifelse(`$1',,,`ellipse ht 2*bl wid 2*al thick 0.3 dashed at CL') + i = 0 + V[i]: CH+(ah*cosd(20),bh*sind(20)) + for theta = 30 to 270 by 22.5 do { i = i+1 + V[i]: CH+(ah*cosd(theta),bh*sind(theta)) } + for theta = 90-22.5 to -135 by -22.5 do { i = i+1 + V[i]: CL+(al*cosd(theta),bl*sind(theta)) } + i = i+1 + V[i]: gco(0,1)+(ft2,0) + fitcurve(V,i) + ifelse(`$1',,,` + setstroke + "1" at gco(1,5.5) above rjust + elarrow(120,40,-20,CH,2.75*lu,2.15*lu) + "2" at gco(2.0,4.5) above + i = -1 + for theta = 150 to 270 by 30 do { i = i+1 + V[i]: CH+(1.25*cosd(theta),0.65*sind(theta))*lu } + elarrow(60,-80,-20,CL,3.25*lu,2.35*lu,i) + "3" at gco(0,0) above rjust + elarrow(225,270,15,CL,3.25*lu,2.35*lu) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`charT', +`[Origin: gco(0,0) `#' `charT' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(6,6)+(-ft2,-ft2) + L2: line from gco(3,6)+(0,-ft2) to gco(3,0)+(0,ft2) + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3, lu*0.75,1) + stroke(from L2.start to L2.end chop lu*2/3 chop lu/3,-lu*0.75,2) ') + box invis wid 6*lu ht 6*lu with .sw at Origin]') + +define(`charU', +`[Origin: gco(0,0) `#' `charU' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + v = (sqrt(2)-1)*4/3 + al = 2.5*lu-ft2 + bl = 2.0*lu-ft2/2 + CL: gco(2.5,4.0)+(0,-bl) + E: ellipse ht 2*bl wid 2*al thick 0.3 ifelse(`$1',,invis,dashed) at CL + L1: line from (E.w,gco(0,6)+(ft2,-ft2)) to E.w + L2: line from (E.e,L1.start) to E.e + spline v to (E.e,E.s) then to (E.w,E.s) then to E.w + ifelse(`$1',,,` + stroke(from L2.start to L2.end chop lu/3, lu*0.75,2) + stroke(from L1.start to L1.end chop lu/3,-lu*0.75,1) + "3" at gco(-.5,1.5) + spline v -> from gco(-0.4,0.75) to gco(-0.2,-0.65) then to gco(5.65,-0.65) \ + then to gco(5.65,2) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`charV', +`[Origin: gco(0,0) `#' `charV' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(3,0)+(0,ft2) + L2: line to gco(6,6)+(-ft2,-ft2) + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu,-lu*0.75,1) + stroke(from L2.end to L2.start chop lu, lu*0.75,2) ') + box invis wid 6*lu ht 6*lu with .sw at Origin]') + +define(`charW', +`[Origin: gco(0,0) `#' `charW' + ifelse(`$1',,,`grid(8,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(2,0)+(0,ft2) + L2: line from gco(4,6)+(0,-ft2) to L1.end + L3: line from L2.start to gco(6,0)+(0,ft2) + L4: line from gco(8,6)+(-ft2,-ft2) to L3.end + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu*1.5 chop lu*.5,-lu*0.75,1) + stroke(from L2.start to L2.end chop lu*.75 chop lu*1.5,-lu*0.75,2) + stroke(from L3.start to L3.end chop lu*2 chop lu*.5,-lu*0.75,3) + stroke(from L4.start to L4.end chop lu*.75 chop lu*1.5,-lu*0.75,4) ') + box invis wid 8*lu ht 6*lu with .sw at Origin]') + +define(`charX', +`[Origin: gco(0,0) `#' `charX' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0.5,6)+(ft2,-ft2) to gco(6,0)+(-ft2,ft2) + L2: line from gco(5.5,6)+(-ft2,-ft2) to gco(0,0)+(ft2,ft2) + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu, lu*0.75,1) + stroke(from L2.start to L2.end chop lu,-lu*0.75,2) ') + box invis wid 6*lu ht 6*lu with .sw at Origin]') + +define(`charY', +`[Origin: gco(0,0) `#' `charY' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(3,3)+(0,ft2) + L2: line from gco(6,6)+(-ft2,-ft2) to L1.end + L3: line to gco(3,0)+(0,ft2) + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu, lu*0.75,1) + stroke(from L2.start to L2.end chop lu,-lu*0.75,2) + stroke(from L3.start to L3.end chop lu/3,-lu*0.75,3) ') + box invis wid 6*lu ht 6*lu with .sw at Origin]') + +define(`charZ', +`[Origin: gco(0,0) `#' `charZ' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0.5,6)+(ft2,-ft2) to gco(5,6)+(-ft2,-ft2) + L2: line to gco(0,0)+(ft2,ft2) + L3: line to gco(5,0)+(-ft2,ft2) + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3, lu*0.75,1) + stroke(from L2.start to L2.end chop 1.5*lu chop lu,-lu*0.75,2) + stroke(from L3.start to L3.end chop lu/3,-lu*0.75,3) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`char1', +`[Origin: gco(0,0) `#' `char1' + ifelse(`$1',,,`grid(1,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3, lu*0.75,1) ') + box invis wid 2*ft2 ht 6*lu with .sw at Origin]') + +define(`char2', +`[Origin: gco(0,0) `#' `char2' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + ah = 2.0*lu-ft2 + bh = 1.4*lu-ft2/2 + CH: gco(2.5,3.2)+(0,bh) + ifelse(`$1',,,`ellipse ht 2*bh wid 2*ah thick 0.3 dashed at CH') + al = 2.5*lu-ft2 + bl = 1.6*lu-ft2/2 + CL: gco(2.5,3.2)+(0,-bl) + ifelse(`$1',,,`ellipse ht 2*bl wid 2*al thick 0.3 dashed at CL') + i = 0 + V[i]: CH+(ah*cosd(160),bh*sind(160)) + for theta = 150 to -90+22.5 by -22.5 do { i = i+1 + V[i]: CH+(ah*cosd(theta),bh*sind(theta)) } + fitcurve(V,i) + v = (sqrt(2)-1)*4/3 + spline v from V[i] to gco(2.8,3.0) then \ + to gco(1.5,2.6) then to gco(0,1.2)+(ft2,0) then to gco(0,0)+(ft2,ft2) + psset_(`arrows=c-c') dnl + L2: line to gco(5,0)+(-ft2,ft2) + ifelse(`$1',,,` + setstroke + "1" at gco(1,5.5) above rjust + i = -1 + for theta = 120 to -60 by -20 do { i = i+1 + V[i]: CH+(2.75*cosd(theta),2.15*sind(theta))*lu } + i=i+1; V[i]: gco(2.6,2.1) + i=i+1; V[i]: gco(1.3,1.6) + i=i+1; V[i]: gco(0.95,0.5) + v = (sqrt(2)-1)*4/3 + spline v -> from V[0] to V[1] + for n = 2 to i do { continue to V[n] } + stroke(from L2.start to L2.end chop lu/3,-lu*0.75,2) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`char3', +`[Origin: gco(0,0) `#' `char3' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + ah = 2.0*lu-ft2 + bh = 1.4*lu-ft2/2 + CH: gco(2.5,3.2)+(0,bh) + H: ellipse ht 2*bh wid 2*ah thick 0.3 ifelse(`$1',,invis,dashed) at CH + al = 2.5*lu-ft2 + bl = 1.6*lu-ft2/2 + CL: gco(2.5,3.2)+(0,-bl) + L: ellipse ht 2*bl wid 2*al thick 0.3 ifelse(`$1',,invis,dashed) at CL + i = 0 + V[i]: CH+(ah*cosd(160),bh*sind(160)) + for theta = 150 to -90 by -20 do { i = i+1 + V[i]: CH+(ah*cosd(theta),bh*sind(theta)) } + fitcurve(V,i) + line from H.s to (gco(2,3)+(ft2,0),H.s) + i = -1 + for theta = 90 to -135 by -22.5 do { i = i+1 + V[i]: CL+(al*cosd(theta),bl*sind(theta)) } + i = i+1 + V[i]: gco(0,1)+(ft2,0) + fitcurve(V,i) + ifelse(`$1',,,` + setstroke + "1" at gco(1,5.5) above rjust + elarrow(120,-20,-20,CH,2.75*lu,2.15*lu) + "2" at gco(4.6,3.5) + elarrow(40,-80,-10,CL,3.25*lu,2.35*lu) + "3" at gco(0,0) above rjust + i = 0 + V[i]: CL+(3.25*cosd(220),2.35*sind(220))*lu + elarrow(240,270,15,CL,3.25*lu,2.35*lu,0) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`char4', +`[Origin: gco(0,0) `#' `char4' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(4,6)+(-ft2,-ft2) to gco(4,0)+(-ft2,ft2) + L2: line from L1.start to gco(0,1.5)+(ft2,-ft2) + L3: line to (gco(5,1.5)+(-ft2,0),Here) + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3 chop 0, lu*.75,1) + stroke(from L2.start to L2.end chop lu chop lu/3,-lu*.75,2) + stroke(from L3.start to L3.end chop lu/3 chop lu/2,-lu*.75,3) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`char5', +`[Origin: gco(0,0) `#' `char5' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(.5,6)+(0,-ft2) to gco(.5,3) + L4: line from L1.start to gco(4.5,6)+(-ft2,-ft2) + al = 2.5*lu-ft2 + bl = 2.0*lu-ft2/2 + CL: gco(2.5,4.0)+(0,-bl) + i = 0 + V[i]: L1.end + for theta = 125 to -135 by -25 do { i = i+1 + V[i]: CL+(al*cosd(theta),bl*sind(theta)) } + i = i+1 + V[i]: gco(0,1)+(ft2,0) + fitcurve(V,i) + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3 chop 0,-lu*.75,1) + stroke(from L4.start to L4.end chop lu/3 chop 0, lu*.75,4) + v = (sqrt(2)-1)*4/3 + "2" at gco(1.0,4.0) above + elarrow(110,-80,-10,CL,al+lu*.75,bl+lu*.75) + "3" at gco(0,0) above rjust + i = 0 + V[i]: CL+((al+0.75*lu)*cosd(220),(bl+.75*lu)*sind(220)) + elarrow(240,270,15,CL,al+lu*.75,bl+lu*.75,0) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`char6', +`[Origin: gco(0,0) `#' `char6' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + ab = 2.5*lu-ft2 + bb = 3.0*lu-ft2 + Cb: gco(2.5,3.0) + ifelse(`$1',,,`ellipse ht 2*bb wid 2*ab thick 0.3 dashed at Cb') + i = -1 + for theta = -315 to 180-22.5 by 22.5 do { i = i+1 + if (theta<=-90) then {X:Cb; x=ab; y=bb } \ + else {X: gco(2.5,2); x=ab; y=2*lu-ft2 } + V[i]: X+(x*cosd(theta),y*sind(theta)) } + fitcurve(V,i) + v = (sqrt(2)-1)*4/3 + ifelse(`$1',,,` + setstroke + "1" at gco(2,6) above + x = ab+lu*.75; y = bb+lu*.75 + elarrow(90+22.5,270+22.5,22.5,Cb,x,y) + "3" at gco(3,6) above + elarrow(70,45,-12.5,Cb,x,y) + "2" at gco(1.2,3.8) above + elarrow(100,-50,-10,gco(2.5,2),ab+lu*.65,2*lu+lu*.65) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`char7', +`[Origin: gco(0,0) `#' `char7' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(5,6)+(-ft2,-ft2) + { L1t: line invis to gco(1.3,0) + L2t: line invis up lu from gco(2,0)+(-ft2,0) } + psset_(`arrows=-') dnl + arcto(Intersect_(L1t,L2t),L2t.start,2.5*lu) + line to (Here,gco(2,0)) + ifelse(`$1',,,` + stroke(from L1.start to L1.end chop lu/3, lu*0.75,1) + stroke(from L1t.start to 4th last line.end chop lu/3 chop 0, + lu*.75,2,thick 0.3,L1) + L2: line <- up arrowht from gco(2.75,0)+(-ft2,ft2) + move to L1.end + arcto(Intersect_(L1,L2),L2.start,(2.5-0.75)*lu,thick 0.3) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`char8', +`[Origin: gco(0,0) `#' `char8' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + ah = 2.0*lu + bh = 1.4*lu + CH: gco(2.5,6)+(0,-bh) + H: ellipse ht 2*bh wid 2*ah at CH + al = 2.5*lu + bl = 1.6*lu+ft2/2 + CL: gco(2.5,3.2)+(0,ft2)+(0,-bl) + L: ellipse ht 2*bl wid 2*al at CL + ifelse(`$1',,,` + setstroke + x = ah+lu*.75; y = bh+lu*.75 + "1" at gco(2,6) above + elarrow(110,205,15,CH,x,y) + "2" at gco(3,6) above + elarrow(70,-25,-15,CH,x,y) + x = al+lu*.75; y = bl+lu*.75 + "3" at gco(0.2,2.6) above + elarrow(150,260,10,CL,x,y) + "4" at gco(4.8,2.6) above + elarrow(30,-80,-10,CL,x,y) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`char9', +`[Origin: gco(0,0) `#' `char9' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + ab = 2.5*lu-ft2 + bb = 3.0*lu-ft2 + Cb: gco(2.5,3.0) + ifelse(`$1',,,`ellipse ht 2*bb wid 2*ab thick 0.3 dashed at Cb') + i = -1 + for theta = -135 to 360-22.5 by 22.5 do { i = i+1 + if (theta<=90) then {X:Cb; x=ab; y=bb } \ + else {X: gco(2.5,4); x=ab; y=2*lu-ft2 } + V[i]: X+(x*cosd(theta),y*sind(theta)) } + fitcurve(V,i) + ifelse(`$1',,,` + setstroke + "1" at gco(2,6) above + elarrow(90+22.5,270+22.5,22.5,X,3.15*lu-ft2,2.65*lu-ft2) + "2" at gco(3,6) above + elarrow(80,-80,-10,Cb,ab+lu*.65,bb+lu*.65) + "3" at gco(0,1) + elarrow(225,270,15,Cb,3.15*lu,3.65*lu) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`char0', +`[Origin: gco(0,0) `#' `char0' + ifelse(`$1',,,`grid(6,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + ab = 2.5*lu-ft2 + bb = 3.0*lu-ft2 + Cb: gco(2.5,3.0) + ellipse ht 2*bb wid 2*ab at Cb + ifelse(`$1',,,` + setstroke + "1" at gco(2,6) above + elarrow(90+22.5,270,22.5,Cb,.65*lu+ab,.65*lu+bb) + "2" at gco(3,6) above + elarrow(70,-80,-10,Cb,ab+lu*.65,bb+lu*.65) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`charAnd', +`[Origin: gco(0,0) `#' `fAnd' + ifelse(`$1',,,`grid(5,6)') + psset_(`arrows=c-c,linecolor=linegray') dnl + v = (sqrt(2)-1)*4/3 + spline v from gco(5,0)+(-ft2,ft2) \ + to gco(4.605,0.312) to gco(1.443,4.038) \ + to gco(1.335,4.198) to gco(1.134,4.597) to gco(1.103,4.938) \ + to gco(1.143,5.252) to gco(1.358,5.605) to gco(1.702,5.797) \ + to gco(2.236,5.857) to gco(2.637,5.772) to gco(2.981,5.499) \ + to gco(3.157,5.132) to gco(3.087,4.565) to gco(2.746,4.189) \ + to gco(2.415,3.895) to gco(2.009,3.621) to gco(1.522,3.339) \ + to gco(1.157,3.095) to gco(0.671,2.769) to gco(0.435,2.520) \ + to gco(0.227,2.215) to gco(0.101,1.636) to gco(0.234,1.165) \ + to gco(0.373,0.926) to gco(0.512,0.738) to gco(0.918,0.443) \ + to gco(1.190,0.340) to gco(1.427,0.274) to gco(2.140,0.166) \ + to gco(2.617,0.164) to gco(3.031,0.216) to gco(3.616,0.395) \ + to gco(4.017,0.600) to gco(4.121,0.676) to gco(4.482,1.017) \ + to gco(4.637,1.302) to gco(4.753,1.532) to gco(4.863,1.875) + ifelse(`$1',,,` + setstroke + "1" at gco(1.4,6) above + spline -> from gco(1.0,6.2) to gco(.35,5.5) then to gco(.35,4) \ + then to gco(4.0,0) + "2" at gco(2.6,6) above + spline -> from gco(3.0,6.2) to gco(3.75,5.5) then to gco(3.75,3.9) \ + then to gco(1,2.4) then to gco(1,1.1) then to gco(2,.9) + "3" at gco(4.2,2.4) + spline -> from gco(4.1,1.8) to gco(3.8,1.3) then to gco(3,.9) \ + then to gco(2.2,.9) ') + box invis wid 5*lu ht 6*lu with .sw at Origin]') + +define(`charComma', +` circle fill_(0) rad ft2 at Here+(0,-3*lu+ft2) + move to last circle.c + arc cw from Here+(0,ft2) to Here+(0,-4*ft2) \ + with .c at Here+(-ft2,-1.5*ft2) + move to last circle+(ft2,-ft2+3*lu)') + +define(`charPeriod', +` circle fill_(0) rad ft2 at Here+(0,-3*lu+ft2) + move to last circle+(ft2,-ft2+3*lu)') + +define(`chara', +`[Origin: gco(0,0) `#' `chara' + psset_(`arrows=c-c,linecolor=linegray') dnl + circle rad 2*lu-ft2 with .c at gco(2,2) + L3: line from gco(4,4)+(-ft2,-ft2) to gco(4,0)+(-ft2,ft2) + ifelse(`$1',,,` + setstroke + "1" at gco(1.5,3.0) + arcd(gco(2,2),1.2*lu,130,265) -> + "2" at gco(2.5,3.0) + arcd(gco(2,2),1.2*lu,50,-85) -> cw + stroke(from L3.start to L3.end chop lu/3 chop 0,lu*0.5,3) ') + box invis wid 4*lu ht 4*lu with .sw at Origin]') + +define(`charb', +`[Origin: gco(0,0) `#' `charb' + psset_(`arrows=c-c,linecolor=linegray') dnl + circle rad 2*lu-ft2 with .c at gco(2,2) + L1: line from gco(0,6)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + ifelse(`$1',,,` + setstroke + stroke(from L1.start to L1.end chop lu/3 chop 0,lu*0.5,1) + "2" at gco(1.5,3.0) + arcd(gco(2,2),1.2*lu,130,265) -> + "3" at gco(2.5,3.0) + arcd(gco(2,2),1.2*lu,50,-85) -> cw ') + box invis wid 4*lu ht 6*lu with .sw at Origin]') + +define(`charc', +`[Origin: gco(0,0) `#' `charc' + ifelse(`$1',,, + `circle outlined "linegray" rad 2*lu-ft2 thick 0.3 dashed lu/2 at gco(2,2)') + psset_(`linecolor=linegray') dnl + arcr(gco(2,2),2*lu-ft2,atan2(1.7,1),atan2(-1,1.6)) + ifelse(`$1',,,` + setstroke + "1" at gco(1.5,3.0) + arcd(gco(2,2),1.2*lu,130,-45) -> + "2" at gco(2.5,3.0) + arcd(gco(2,2),1.2*lu,50,20) -> cw ht 0.75 * arrowht ') + box invis wid 4*lu ht 4*lu with .sw at Origin]') + +define(`chard', +`[Origin: gco(0,0) `#' `chard' + psset_(`arrows=c-c,linecolor=linegray') dnl + circle rad 2*lu-ft2 with .c at gco(2,2) + L3: line from gco(4,6)+(-ft2,-ft2) to gco(4,0)+(-ft2,ft2) + ifelse(`$1',,,` + setstroke + "1" at gco(1.5,3.0) + arcd(gco(2,2),1.2*lu,130,265) -> + "2" at gco(2.5,3.0) + arcd(gco(2,2),1.2*lu,50,-85) -> cw + stroke(from L3.start to L3.end chop lu/3 chop 0,lu*0.5,3) ') + box invis wid 4*lu ht 6*lu with .sw at Origin]') + +define(`chare', +`[Origin: gco(0,0) `#' `chare' + ifelse(`$1',,, + `circle outlined "linegray" rad 2*lu-ft2 thick 0.3 dashed lu/2 at gco(2,2)') + psset_(`linecolor=linegray') dnl + arcr(gco(2,2),2*lu-ft2,atan2(0.2,2),atan2(-1,1.6)) + L3: line from last arc.start to (gco(0.2,0).x, last arc.start.y) + ifelse(`$1',,,` + setstroke + "1" at gco(1.5,3.0) + arcd(gco(2,2),1.2*lu,130,-45) -> + "2" at gco(2.5,3.0) + arcd(gco(2,2),1.2*lu,50,20) -> cw ht 0.75 * arrowht ') + stroke(from L3.end to L3.start chop lu*1.5 chop lu/3,-lu*0.5,3) + box invis wid 4*lu ht 4*lu with .sw at Origin]') + +define(`charf', +`[Origin: gco(0,0) `#' `charf' + psset_(`arrows=c-c,linecolor=linegray') dnl + L3: line from gco(0,4)+(ft2,0) to gco(2,4)+(-ft2,0) + L1: line from gco(1,0)+(0,ft2) to gco(1,4.8) + psset_(`linecolor=linegray') dnl + arc cw to gco(3,5.5)+(0,0) with .c at gco(2.12,4.8) + ifelse(`$1',,,` + setstroke + stroke(from L1.end to L1.start chop -lu/5 chop lu/3,-lu*0.75,1) + "2" at gco(1.5,4.6) + arcd(gco(2.12,4.8),0.6*lu,140,40) -> cw ht 0.75 * arrowht + stroke(from L3.start to L3.end chop lu*.5 chop 0,-lu*0.75,3) ') + box invis wid 3*lu ht 6*lu with .sw at Origin]') + +define(`charg', +`[Origin: gco(0,0) `#' `charg' + ifelse(`$1',,, + `circle outlined "linegray" rad 2*lu-ft2 thick 0.3 dashed lu/2 at gco(2,0) ') + psset_(`arrows=c-c,linecolor=linegray') dnl + circle rad 2*lu-ft2 with .c at gco(2,2) + L3: line from gco(4,4)+(-ft2,-ft2) to gco(4,0)+(-ft2,0) + psset_(`linecolor=linegray') dnl + arcr(gco(2,0),2*lu-ft2,0,atan2(-1,-1.5)) cw + ifelse(`$1',,,` + setstroke + "1" at gco(1.5,3.0) + arcd(gco(2,2),1.2*lu,130,265) -> + "2" at gco(2.5,3.0) + arcd(gco(2,2),1.2*lu,50,-85) -> cw + "4" at gco(0.7,-0.6) + arcd(gco(2,0),1.2*lu,-135,-45) -> ht 0.75 * arrowht + stroke(from L3.start to L3.end chop lu*0 chop 0,lu*0.5,3) ') + box invis wid 4*lu ht 6*lu with .sw at gco(0,-2)]') + +define(`charh', +`[Origin: gco(0,0) `#' `charh' + ifelse(`$1',,, + `circle outlined "linegray" rad 2*lu-ft2 thick 0.3 dashed lu/2 at gco(2,2) ') + psset_(`linecolor=linegray') dnl + arcd(gco(2,2),2*lu-ft2,180,0) cw + psset_(`arrows=c-c,linecolor=linegray') dnl + line to gco(4,0)+(-ft2,ft2) + L1: line from gco(0,6)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + ifelse(`$1',,,` + setstroke + stroke(from L1.start to L1.end chop lu/3 chop 0,lu*0.5,1) + "2" at gco(1.0,2.4) + arcd(gco(2,2),1.2*lu,130,0) cw + stroke(to (Here,gco(0,0)) chop -3pt__ chop lu/4) ') + box invis wid 4*lu ht 6*lu with .sw at Origin]') + +define(`chari', +`[Origin: gco(0,0) `#' `chari' + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,0)+(ft2,ft2) to gco(0,4)+(ft2,-ft2) + L2: line from gco(0,6)+(ft2,-ft2) to gco(0,5.5)+(ft2,0) + ifelse(`$1',,,` + setstroke + stroke(from L2.start to L2.end+(0,-lu*.2) chop -lu*.7 chop 0,-lu*0.5,) + "2" at last line.c+(0.1*lu,-0.2*lu) rjust + stroke(from L1.end to L1.start chop lu/3 chop 0,-lu*0.5,1) ') + box invis wid ft2*2 ht 6*lu with .sw at Origin]') + +define(`charj', +`[Origin: gco(0,0) `#' `charj' + psset_(`arrows=c-c,linecolor=linegray') dnl + L2: line from gco(2,6)+(0,-ft2) to gco(2,5.5) + L1: line from gco(2,4)+(0,-ft2) to gco(2,-0.8) + psset_(`linecolor=linegray') dnl + arc cw to gco(0,-1.5) with .c at gco(0.88,-0.8) + ifelse(`$1',,,` + setstroke + stroke(from L1.start to L1.end chop lu/3 chop 0,-lu*0.5,1,solid) + arcd(gco(0.88,-0.8),.62*lu,0,-135) cw -> ht 0.75*arrowht + stroke(from L2.start to L2.end+(0,-lu*.2) chop -lu*.7 chop 0,-lu*0.5,) + "2" at last line.c+(0.1*lu,-0.2*lu) rjust ') + box invis wid 2*lu ht 6*lu with .sw at Origin+(0,-2*lu)]') + +define(`chark', +`[Origin: gco(0,0) `#' `chark' + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + L2: line from gco(3.4,4)+(0,-ft2) to gco(0,1.6)+(ft2,ft2) + L3t:line ifelse(`$1',,invis,dashed lu/2) thick 0.3 from gco(0,4)+(ft2,0) \ + to gco(4,0)+(-ft2,ft2) + L3: line from Intersect_(L2,L3t) to L3t.end + ifelse(`$1',,,` + setstroke + stroke(from L1.start to L1.end chop lu/3 chop 0,-lu*0.5,1) + stroke(from L2.start to L2.end chop lu/2 ,-lu*0.6,2) + stroke(from L3.start to L3.end chop lu/2 ,-lu*0.6,3) ') + box invis wid 4*lu ht 6*lu with .sw at Origin]') + +define(`charl', +`[Origin: gco(0,0) `#' `charl' + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,6)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + ifelse(`$1',,,` + setstroke + stroke(from L1.start to L1.end chop lu/3 chop 0,-lu*0.5,1) ') + box invis wid 2*ft2 ht 6*lu with .sw at Origin]') + +define(`charm', +`[Origin: gco(0,0) `#' `charm' + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,4)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + ifelse(`$1',,, + `circle outlined "linegray" rad 1.5*lu-ft2/2 thick 0.3 dashed lu/2 \ + at gco(1.5,2.5)+(ft2/2,0) + circle outlined "linegray" rad 1.5*lu-ft2/2 thick 0.3 dashed lu/2 \ + at gco(4.5,2.5)+(-ft2/2,0) ') + psset_(`linecolor=linegray') dnl + arcd(gco(1.5,2.5)+(ft2/2,0),1.5*lu-ft2/2,180,0) cw + arcd(gco(4.5,2.5)+(-ft2/2,0),1.5*lu-ft2/2,180,0) cw + psset_(`arrows=c-c,linecolor=linegray') dnl + line from gco(3,2.5) to gco(3,0)+(0,ft2) + line from gco(6,2.5)+(-ft2,0) to gco(6,0)+(-ft2,ft2) + ifelse(`$1',,,` + setstroke + stroke(from L1.start to L1.end chop lu/3 chop 0,-lu*0.5,1) + "2" at gco(0.9,2.2) + arcd(gco(1.5,2.5)+(ft2/2,0),0.75*lu-ft2/2,160,0) cw + stroke(to (Here,gco(0,0)) chop -3pt__ chop lu/3) + "3" at gco(3.9,2.2) + arcd(gco(4.5,2.5)+(-ft2/2,0),0.75*lu-ft2/2,160,0) cw + stroke(to (Here,gco(0,0)) chop -3pt__ chop lu/3) ') + box invis wid 6*lu ht 4*lu with .sw at Origin]') + +define(`charn', +`[Origin: gco(0,0) `#' `charn' + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,4)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + ifelse(`$1',,, + `circle outlined "linegray" rad 2*lu-ft2 thick 0.3 dashed lu/2 at gco(2,2) ') + psset_(`linecolor=linegray') dnl + arcd(gco(2,2),2*lu-ft2,180,0) cw + psset_(`arrows=c-c,linecolor=linegray') dnl + line from gco(4,2)+(-ft2,0) to gco(4,0)+(-ft2,ft2) + ifelse(`$1',,,` + setstroke + stroke(from L1.start to L1.end chop lu/3 chop 0,-lu*0.5,1) + "2" at gco(0.9,2.0) + arcd(gco(2,2),1.25*lu,150,0) cw + stroke(to (Here,gco(0,0)) chop -3pt__ chop lu/3) ') + box invis wid 4*lu ht 4*lu with .sw at Origin]') + +define(`charo', +`[Origin: gco(0,0) `#' `charo' + psset_(`arrows=c-c,linecolor=linegray') dnl + circle rad 2*lu-ft2 with .c at gco(2,2) + ifelse(`$1',,,` + setstroke + "1" at gco(1.5,3.0) + arcd(gco(2,2),1.2*lu,130,265) -> + "2" at gco(2.5,3.0) + arcd(gco(2,2),1.2*lu,50,-85) -> cw ') + box invis wid 4*lu ht 4*lu with .sw at Origin]') + +define(`charp', +`[Origin: gco(0,0) `#' `charp' + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,4)+(ft2,-ft2) to gco(0,-2)+(ft2,ft2) + circle rad 2*lu-ft2 with .c at gco(2,2) + ifelse(`$1',,,` + setstroke + stroke(from L1.start to L1.end chop lu/3 chop 0,-lu*0.5,1) + "2" at gco(1.5,3.0) + arcd(gco(2,2),1.2*lu,130,265) -> + "3" at gco(2.5,3.0) + arcd(gco(2,2),1.2*lu,50,-85) -> cw ') + box invis wid 4*lu ht 6*lu with .sw at Origin+(0,-2*lu)]') + +define(`charq', +`[Origin: gco(0,0) `#' `charq' + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(4,4)+(-ft2,-ft2) to gco(4,-2)+(-ft2,ft2) + circle rad 2*lu-ft2 with .c at gco(2,2) + ifelse(`$1',,,` + setstroke + stroke(from L1.start to L1.end chop lu/3 chop 0,lu*0.5,3) + "1" at gco(1.5,3.0) + arcd(gco(2,2),1.2*lu,130,265) -> + "2" at gco(2.5,3.0) + arcd(gco(2,2),1.2*lu,50,-85) -> cw ') + box invis wid 4*lu ht 6*lu with .sw at Origin+(0,-2*lu)]') + +define(`charr', +`[Origin: gco(0,0) `#' `charr' + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,4)+(ft2,-ft2) to gco(0,0)+(ft2,ft2) + psset_(`linecolor=linegray') dnl + arc cw from gco(0,3)+(ft2,0) to gco(2,3.85) rad 1.2*lu with .c at gco(1.5,2.5) + ifelse(`$1',,,` + setstroke + stroke(from L1.start to L1.end chop lu/3,-lu*0.5,1) + "2" at gco(.6,2) above + arcd(gco(1.5,2.5),0.75*lu,140,60) -> cw ht 0.75 * arrowht ') + box invis wid 2*lu ht 4*lu with .sw at Origin]') + +define(`chars', +`[Origin: gco(0,0) `#' `chars' + psset_(`arrows=c-c,linecolor=linegray') dnl + ah = 1.6*lu + bh = (4*lu-ft2-2.1*lu)/2 #0.95*lu-ft2/2 + CH: gco(2.0,2.1)+(0,bh) + ifelse(`$1',,,`ellipse ht 2*bh wid 2*ah thick 0.3 dashed lu/2 at CH') + al = 2.0*lu-ft2 + bl = (2.1*lu-ft2)/2 + CL: gco(2.0,2.1)+(0,-bl) + ifelse(`$1',,,`ellipse ht 2*bl wid 2*al thick 0.3 dashed lu/2 at CL') + i = -1 + for theta = 0 to 270 by 22.5 do { i = i+1 + V[i]: CH+(ah*cosd(theta),bh*sind(theta)) } + for theta = 90-22.5 to -180 by -22.5 do { i = i+1 + V[i]: CL+(al*cosd(theta),bl*sind(theta)) } + fitcurve(V,i) + ifelse(`$1',,,` + setstroke + "1" at gco(0.5,3.5) above + elarrow(120,40,-20,CH,(ah+.6*lu),(bh+.6*lu)) + "2" at gco(1.5,3.2) + i = -1 + for theta = 150 to 270 by 30 do { i = i+1 + V[i]: CH+(lu*cosd(theta),lu*0.5*sind(theta)) } + fitcurve(V,i) + r = V[i].y-CL.y + elarrow(60,-80,-20,CL,2.5*lu,r,i) + "3" at gco(-.3,.9) + elarrow(210,270,15,CL,2.5*lu,r) ') + box invis wid 4*lu ht 4*lu with .sw at Origin]') + +define(`chart', +`[Origin: gco(0,0) `#' `chart' + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(1,0)+(0,ft2) to gco(1,6)+(0,-ft2) + L2: line from gco(0,4)+(ft2,0) to gco(2,4)+(-ft2,0) + ifelse(`$1',,,` + setstroke + stroke(from L1.end to L1.start chop lu/3,-lu*0.75,1) + stroke(from L2.start to L2.end chop lu*.5 chop 0,-lu*0.75,2) ') + box invis wid 2*lu ht 6*lu with .sw at Origin]') + +define(`charu', +`[Origin: gco(0,0) `#' `charu' + psset_(`arrows=c-c,linecolor=linegray') dnl + L2: line from gco(4,4)+(-ft2,-ft2) to gco(4,0)+(-ft2,ft2) + ifelse(`$1',,, + `circle outlined "linegray" rad 2*lu-ft2 thick 0.3 dashed lu/2 at gco(2,2) ') + line from gco(0,4)+(ft2,-ft2) to gco(0,2)+(ft2,0) + psset_(`linecolor=linegray') dnl + arcd(gco(2,2),2*lu-ft2,180,0) + ifelse(`$1',,,` + setstroke + stroke(from L2.start to L2.end chop lu/3 chop 0,lu*0.5,2) + "1" at gco(.9,2.0) + arcd(gco(2,2),1.25*lu,210,-30) -> ') + box invis wid 4*lu ht 4*lu with .sw at Origin]') + +define(`charv', +`[Origin: gco(0,0) `#' `charv' + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,4)+(ft2,-ft2) to gco(2,0)+(0,ft2) + L2: line to gco(4,4)+(-ft2,-ft2) + ifelse(`$1',,,` + setstroke + stroke(from L1.start to L1.end chop lu chop lu/3,-lu*0.5,1) + stroke(from L2.end to L2.start chop lu*.6,-lu*0.5,2) ') + box invis wid 4*lu ht 4*lu with .sw at Origin]') + +define(`charw', +`[Origin: gco(0,0) `#' `charw' + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,4)+(ft2,-ft2) to gco(1.5,0)+(0,ft2) + L2: line to gco(3,4)+(0,-ft2) + L3: line to gco(4.5,0)+(0,ft2) + L4: line to gco(6,4)+(-ft2,-ft2) + ifelse(`$1',,,` + setstroke + stroke(from L1.start to L1.end chop lu chop lu/3,-lu*0.5,1) + stroke(from L2.end to L2.start chop lu*.6 chop lu,-lu*0.5,2) + stroke(from L3.start to L3.end chop lu*1.5 chop lu/3,-lu*0.5,3) + stroke(from L4.end to L4.start chop lu*.6 chop lu,-lu*0.5,4) ') + box invis wid 6*lu ht 4*lu with .sw at Origin]') + +define(`charx', +`[Origin: gco(0,0) `#' `charx' + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0.5,4)+(0,-ft2) to gco(4,0)+(-ft2,ft2) + L2: line from gco(3.5,4)+(0,-ft2) to gco(0,0)+(ft2,ft2) + ifelse(`$1',,,` + setstroke + stroke(from L1.start to L1.end chop lu/3,-lu*0.6,1) + stroke(from L2.start to L2.end chop lu/3,lu*0.6,2) ') + box invis wid 4*lu ht 4*lu with .sw at Origin]') + +define(`chary', +`[Origin: gco(0,0) `#' `chary' + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0,4)+(ft2,-ft2) to gco(2,0)+(0,ft2) + L2x: gco(4,4)+(-ft2,-ft2) + L2: line from L2x to 1.37 + C: Here-(perp(L2))/lin_leng(L2)*lu*1.1 + psset_(`linecolor=linegray') dnl + arcd(C,lu*1.1,-30,-105) cw + ifelse(`$1',,,` + setstroke + stroke(from L1.start to L1.end chop lu chop lu/2,-lu*0.5,1) + stroke(from L2.start to L2.end chop lu*.6 chop 0,-lu*0.5,2,solid) + arcd(C,lu*.6,-30,-110) cw -> ht 0.75*arrowht ') + box invis wid 4*lu ht 6*lu with .sw at Origin+(0,-2*lu)]') + +define(`charz', +`[Origin: gco(0,0) `#' `charz' + psset_(`arrows=c-c,linecolor=linegray') dnl + L1: line from gco(0.5,4)+(ft2,-ft2) to gco(4,4)+(-ft2,-ft2) + L2: line to gco(0,0)+(ft2,ft2) + L3: line to gco(4,0)+(-ft2,ft2) + ifelse(`$1',,,` + setstroke + stroke(from L1.start to L1.end chop lu/3 chop lu,-lu*0.6,1) + stroke(from L2.start to L2.end chop lu,lu*0.6,2) + stroke(from L3.start to L3.end chop lu/3,-lu*0.6,3) ') + box invis wid 4*lu ht 4*lu with .sw at Origin]') + +define(`xpnd',$*) +define(`Letters', + `ifelse(`$1',,,` + ifelse(substr(`$1',0,1),|,`charComma',substr(`$1',0,1),.,`charPeriod', + `xpnd(char`'substr(`$1',0,1))') + ifelse(substr(`$1',1,1),,,`move lu*.75/2*(')ifelse(substr(`$1',1,1),,, + substr(`$1',1,1),8,17,substr(`$1',1,1),6,16,A`'substr(`$1',1,1),A ,3, + substr(`$1',1,1))ifelse(substr(`$1',1,1),,,`-1)') + Letters(substr(`$1',2)) ') ') + +divert(0)dnl -- cgit v1.2.3