1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
.PS
# ex16.m4
cct_init
[
define(`elen_',linewid*1.2)
circlerad = delay_rad_
{"\sl input" above ljust}
line right_
J: Here
delay
K: Here
delay
L: Here
S1: circle "$+$" at (K.x,K.y+linewid)
S2: circle "$+$" at (L,S1)
arrow up_ S1.y-J.y from J then to S1.w
arrow from K to S1.s
arrow from S1.e to S2.w
arrow from L to S2.s
S3: circle "$+$" at (L.x,L.y-linewid)
arrow down_ J.y-S3.y from J then to S3.w
arrow from L to S3.n
arrow from S2.e right_ linewid/2 then down_ (S2.y-S3.y)/2-circlerad \
then right_ linewid/2
arrow from S3.e right_ linewid/2 then up_ (S2.y-S3.y)/2-circlerad \
then right_ linewid/2
"\sl output" at 0.5<last arrow.end, 2nd last arrow.end>
]
[
circlerad = 0.35/2
d = linewid*1.75
S00: circle "$00$"
S10: circle "$10$" at S00+(d,d)
S01: circle "$01$" at S00+(d,-d)
S11: circle "$11$" at S01+(d,d)
dx = circlerad*cosd(60)
dy = circlerad*sind(60)
brad = circlerad*1.3
qrad = circlerad*6
arc -> cw from S00+(-dx,-dy) to S00+(-dx,dy) rad brad \
with .c at S00-(dx+sqrt(brad^2-dy^2),0)
"$0/00$" at last arc.w rjust
right
arc -> cw from S00+(dx,dy) to S10+(-dy,-dx) rad qrad
"$1/11$" at last arc.nw rjust above
right
arc -> cw from S10+(dy,-dx) to S11+(-dx,dy) rad qrad
"$1/01$" at last arc.ne ljust above
up_
arc -> cw from S11+(dx,dy) to S11+(dx,-dy) rad brad \
with .c at S11+(dx+sqrt(brad^2-dy^2),0)
"$1/10$" at last arc.e ljust
down_
arc -> cw from S11+(-dx,-dy) to S01+(dy,dx) rad qrad
"$0/01$" at last arc.se ljust below
left_
arc -> cw from S01+(-dy,dx) to S00+(dx,-dy) rad qrad
"$0/11$" at last arc.sw rjust below
up_
arc -> cw from S01+(-dx,dy) to S10+(-dx,-dy) rad qrad*2
"$1/00$" at last arc.w rjust
down_
arc -> cw from S10+(dx,-dy) to S01+(dx,dy) rad qrad*2
"$0/10$" at last arc.e ljust
] with .sw at last [].se+(0.4,0)
.PE
|