summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/recycleDPV.m4
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/recycleDPV.m4')
-rw-r--r--Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/recycleDPV.m4128
1 files changed, 128 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/recycleDPV.m4 b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/recycleDPV.m4
new file mode 100644
index 00000000000..135f31414e3
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/circuit-macros/examples/dpv/recycleDPV.m4
@@ -0,0 +1,128 @@
+.PS
+# recycle.m4
+gen_init
+NeedDpicTools
+[
+# Gradient fill and clipping are simply
+# done with PStricks or Tikz but the other
+# postprocessors don't all have this
+# facility so the following calculates
+# shading boundaries and lines.
+
+define ShadePoint { testexpr(i, $1<f1, $1<f2, $1<f3 )
+ Px: $1 between P0 and Pz
+ S: move from Px to Px+Up
+ case(i+1,
+ M4L: LCintersect(S,T1,stripwd/2)
+ M4R: ($1-f2)/(1-f2) between P9 and P8
+ ,
+ M4L: $1/f1 between P0 and P4
+ M4R: $1/f1 between P0 and P3
+ ,
+ M4L: Intersect_(S,M57)
+ M4R: LCintersect(S,P1,stripwd/2)
+ ,
+ M4L: Intersect_(S,M57)
+ M4R: ($1-f2)/(1-f2) between P9 and P8
+ )
+ line outlined rgbstring($2,$3,$4) from M4L to M4R
+ }
+
+define ShadeTail { testexpr(i, $1<g1, $1<g2, $1<g3 )
+ Px: $1 between T4 and Qz
+ S: move from Px to Px+AcrossTail
+ case(i+1,
+ M4L: LCintersect(S,T1,stripwd/2,R)
+ M4R: LCintersect(S,T1,stripwd/2)
+ ,
+ M4L: $1/g1 between T5 and T6
+ M4R: $1/g1 between T3 and T2
+ ,
+ M4L: LCintersect(S,T1,stripwd/2,R)
+ M4R: $1/g2 between T3 and P6
+ ,
+ M4L: LCintersect(S,T1,stripwd/2,R)
+ M4R: ($1-g2)/(g3-g2) between P6 and P7
+ )
+ line outlined rgbstring($2,$3,$4) from M4L to M4R
+ }
+
+# `recycle(width)'
+define(`recycle',`[ Origin: Here
+ space = 2*linethick pt__
+ stripwd = ($1-space)/3.765544
+ for angle=0 to 240 by 120 do {
+ Right: (dprot(angle*dtor_,stripwd,0))
+ Up: (dprot(angle*dtor_,0,stripwd/2))
+ P0: Here+Right*space/stripwd
+ Axis: move from P0 to P0+Right*3/4; P1: Here
+ P2: P1-Up
+ P3: 1.5 between P1 and P2
+ P4: P1 + (P1-P3)
+ P5: P1 + Up
+ P6: P5+Right/sqrt(3)/2
+ P7: P6+(P6-P5)
+ T1: 2 between P1 and P6
+ P8: T1+(dprot((angle-30)*dtor_,stripwd/2,0))
+ P9: P1+(P8-T1)
+ T2: T1+(dprot((angle+210)*dtor_,stripwd/2,0))
+ AcrossTail: T1-T2
+ T3: P6+(dprot((angle+120)*dtor_,stripwd,0))
+ T4: T3+AcrossTail
+ T5: 2 between T3 and T4
+ T6: 2 between T2 and T1
+ V: move from P8 to P8-Up; Pz: Intersect_(Axis,V)
+ t = distance(P0,Pz)
+ f1 = distance(P1,P0) / t
+ V: move from P9 to P9+Up; R: Intersect_(Axis,V); f2 = distance(P0,R) / t
+ V: move from P7 to P7-Up; R: Intersect_(Axis,V); f3 = distance(P0,R) / t
+ n = int(t/lthick*1.5)
+ M57: move from P5 to P7
+ ShadeObject( ShadePoint,n,
+ 0,1,1,1,
+ 1,0.5,0.5,0.5) with .Origin at Origin
+ point
+ J: move from T4 to T1; Qz: LCintersect(J,T1,stripwd/2,R)
+ u=distance(T4,Qz)
+ g1 = distance(T1,T4) / u
+ g2 = stripwd / u
+ V: move from P7 to P7+AcrossTail; R: Intersect_(V,J)
+ g3 = distance(R,T4) / u
+ m = int(u/lthick*1.5)
+ ShadeObject(ShadeTail,m,
+ 0,1,1,1,
+ 1,0.5,0.5,0.5) with .Origin at Origin
+ tail
+# { for i=0 to 9 do { exec sprintf("{\"P%g\" at P%g}",i,i) } }
+# { for i=1 to 6 do { exec sprintf("{\"T%g\" at T%g}",i,i) } }
+ move to T4
+ }
+ ]')
+define(`tail',`line from P7 to P6 then to T3 then to T5 then to T6
+ arc cw to P7 with .c at T1')
+
+define(`point',`line from P2 to P3 then to P0 then to P4 then to P5 then to P7
+ arc ccw to P8 with .c at T1
+ line to P9
+ arc cw to P2 with .c at P1')
+
+recycle(2)
+]
+[
+# yinyang.m4
+ifdpic(`
+circlerad = 0.5
+shade(0,
+A: arc ccw rad circlerad*2 to Here+(4*circlerad,0)
+ )
+B: circle colored "white" with .c at 1/4<A.w,A.e>
+ arc cw rad circlerad from B.e to B.w with .c at B.c
+ circle colored "black" with .c at 3/4<A.w,A.e>
+ circle rad circlerad*2 with .c at A.c
+ circle rad circlerad/3 fill_(0) at 0.5<A.w,A.c>
+ circle rad circlerad/3 fill_(1) at 0.5<A.c,A.e>
+',`
+box wid 1 ht 0.75 "Yinyang.m4" "requires" "dpic"
+')
+] with .w at last [].e+(0.2,0)
+.PE