summaryrefslogtreecommitdiff
path: root/graphics/circuit_macros/examples/Attention.m4
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/circuit_macros/examples/Attention.m4')
-rw-r--r--graphics/circuit_macros/examples/Attention.m441
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