diff options
Diffstat (limited to 'graphics/circuit_macros/examples/Attention.m4')
-rw-r--r-- | graphics/circuit_macros/examples/Attention.m4 | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/graphics/circuit_macros/examples/Attention.m4 b/graphics/circuit_macros/examples/Attention.m4 new file mode 100644 index 0000000000..7f0b7127c7 --- /dev/null +++ b/graphics/circuit_macros/examples/Attention.m4 @@ -0,0 +1,41 @@ +.PS +# Attention.m4 +gen_init +scale = 2.54 +linethick = 0.2 + +define dot2 { (($1).x*($2).x + ($1).y*($2).y) } + + nlines = 128 + nr = 50 + innerrad = 1 + outerrad = 8 + diff = outerrad - innerrad +B: box wid outerrad*2 ht outerrad*2 outline "red" shaded "red" +C: circle rad outerrad at B + circle rad innerrad at C shaded "black" + P[0]: C+(innerrad,0) + t = 0 + for i=1 to nr do { + r = innerrad+i/nr*diff + t = t + i/nr*(-pi_/2)/nr + P[i]: C+(rect_(r,t)) + } + dth = twopi_/nlines + R: (cos(dth),-sin(dth)) + S: (sin(dth),cos(dth)) + for j = 0 to nlines-1 do { + for i=0 to nr do { + X: P[i]-C + Q[nr-i]: (dot2(R,X),dot2(S,X)) + C + } + shade(j%2, + fitcurve(P,nr) + line from P[nr] to Q[0] + fitcurve(Q,nr) + line from Q[nr] to P[0] + ) + for i=0 to nr do { P[i]: Q[nr-i] } + } + +.PE |