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<L2x,L1.end>
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]')