summaryrefslogtreecommitdiff
path: root/graphics/circuit_macros/examples/svg/ex05SVG.m4
blob: 52284a3e3340bcb79fdfd257fd864153f3b17f24 (plain)
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
.PS
# ex05SVG.m4
darrow_init

Kalman: [
  fillval = 0.8

  boxht = 0.35
  boxwid = 1.5*boxht
  dx = boxht/5
  circlerad = boxht*3/8
  extlen=4*dx
  indel = boxht/3
  define(`dlthick',dlthick*3/4)

define(`overbar',`line right textht*0.8 \
  with .c at last box.c + ((`$1')*textht,0.7*textht)')

COb: box fill_ "CO"; overbar(0.5)
CO:box fill_ with .nw at last box.se+(dx,-dx) "CO"
CbOb: box fill_ with .nw at last box.se+(dx,-dx) "CO"
  overbar(-0.5); overbar(0.5)
CbO: box fill_ with .nw at last box.se+(dx,-dx) "CO"; overbar(-0.5)

  dline(from CbO.s down_ dx,,t,,!-)
  dright
{Sum: circle invis at (CO,Here)}
  darrow(to Sum.e)

SW: (COb.w,Sum.s)+(-3*dx-extlen/2,-dx)
NE: (CbO.e,COb.n)+(dx,dx)
  right_; 
SB: shadebox(box wid NE.x-SW.x ht NE.y-SW.y with .sw at SW)

U: COb.w-(3*dx+extlen,0)
  {"svg_it(U)" wid 0.1 rjust at U}
  dline(from U right_ extlen+dx,,t,,|-)
TU: dtee(R)
  {darrow(to COb.w,t)}
  dline(to (Here,CO),t,t)
{Dum: circle invis at (Here,Sum)}
  dtee(L)
  {darrow(to CO.w,t)}
{D: box "D" wid boxwid/2 ht boxwid/2 at 0.5<Here,Dum.n>}
  darrow(to D.n,t)
  darrow(from D.s to Dum.n,,,,,,!-)

  dline(up_ from CO.n to (CO,COb)-(0,indel),,t,,!-)
  dleft; darrow(to (COb.e,Here))

  dline(up_ from CbOb.n to (CbOb,COb),,t,,!-)
  dleft; darrow(to COb.e)

  dline(from CbO.n-(indel,0) up_ CbOb.y-CbO.n.y,,t,,!-)
  dleft; darrow(to CbOb.e)

  dline(up_ from CbO.n to (CbO,CO),,t,,!-)
  dleft
  dline(to (CbOb.w,Here)); darrow(to CO.e)

  dline(up_ from CbO.n+(indel,0) to (CbO,COb)+(indel,indel),,t,,!-)
  dleft; darrow(to (COb.e,Here))

  darrow(from CO.s to Sum.n,,,,,,!-)

  darrow(left_ from Sum.w to Dum.e)
  dline(from Dum.w to (SB.w-(0.1,0),Dum)); darrow(to (U,Here))
    {"svg_it(Y)" rjust}
  move left 0.23

  circle at Sum
  circle at Dum
  ]
Coxeter: [
# Coxeter.m4

  customlinethick = 1.5

  linethick = customlinethick
  define(`dotrad_',`(3/2*linethick pt__)')

  Orig: (0,0)
  for i=0 to 4 do { P[i]: dot(at (i*linewid,0)) }
  line from Orig to P[4]
  P[-1]: dot(at (Rect_(linewid, 120))); line to Orig
  P[-2]: dot(at (Rect_(linewid,-120))); line to Orig

 Pa: dot(at P[4]+(linewid,0));         "svg_it(a)" at last [].n above
  arrow from P[4] to Pa chop linewid/4
 Pd: dot(at Pa+(linewid,0));           "svg_it(d)" at last [].w rjust
 Pe: dot(at Pd+(linewid,0));           "svg_it(e)" at last [].n above
 Pf: dot(at Pe+(linewid,0));           "svg_it(f)" at last [].n above
 Pb: dot(at Pd+(Rect_(linewid,120)));  "svg_it(b)" at last [].w rjust
 Pc: dot(at Pd+(Rect_(linewid,-120))); "svg_it(c)" at last [].w rjust
  line from Pb to Pd then to Pc
  line from Pd to Pf

  define(`customarc',
   `pushdef(`dfillcolor',`0.7,0.7,0.7') linethick_(0.4); dnl
    Darc(`$1',linewid, (`$2')*dtor_, (`$3')*dtor_,
      thick=linewid/6; wid=linewid*0.3; ht=linewid/6; ends=<->)dnl
    linethick_(customlinethick); popdef(`dfillcolor')')

  customarc((linewid,-linewid/3), 25,155)
   "svg_it(d)" at (linewid,linewid*2/3)
  customarc((2*linewid,-linewid/3), 25,155)
   "svg_it(e)" at (2*linewid,linewid*2/3)
  customarc((3*linewid,-linewid/3), 25,155)
   "svg_it(f)" at (3*linewid,linewid*2/3)
  customarc(Orig,130,230);                  "svg_it(a)" at (Rect_(linewid,180))
  customarc(Orig, 10,110);                  "svg_it(b)" at (Rect_(linewid, 60))
  customarc(Orig,-110,-10);                 "svg_it(c)" at (Rect_(linewid,-60))

  ] with .sw at Kalman.se+(15bp__,0)
.PE