summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/metapost/blockdraw_mp/cascadedemo.mp
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/metapost/blockdraw_mp/cascadedemo.mp')
-rw-r--r--Master/texmf-dist/metapost/blockdraw_mp/cascadedemo.mp73
1 files changed, 73 insertions, 0 deletions
diff --git a/Master/texmf-dist/metapost/blockdraw_mp/cascadedemo.mp b/Master/texmf-dist/metapost/blockdraw_mp/cascadedemo.mp
new file mode 100644
index 00000000000..26c919bb83a
--- /dev/null
+++ b/Master/texmf-dist/metapost/blockdraw_mp/cascadedemo.mp
@@ -0,0 +1,73 @@
+verbatimtex
+%& latex
+\documentclass[a4]{article}
+\begin{document}
+etex
+
+input blockdraw;
+input ./docblockprefs;
+
+
+beginfig( -1 )
+
+ % The controller box has corners (x1,y1), (x2,y2)
+ % The inner system box has corners (x3,y3), (x4,y4)
+ y1 := -2u;
+ y2 := 1.3u;
+ y3 := -1.4u;
+ y4 := 1u;
+
+ picture reg[];
+ reg1 := longblock( btex Reg.~1 etex, (-1u,0) );
+ reg2 := longblock( btex Reg.~2 etex, (-4u,0) );
+
+ picture G[];
+ G1 := longblock( btex $G_{1}$ etex, (1.5u,0) );
+ G2 := longblock( btex $G_{2}$ etex, (4u,0) );
+
+ picture terminator[];
+ terminator1 := pointpicture( leftpoint( reg2, 2, 2 ) - (1u,0) );
+ terminator2 := pointpicture( (5.5u,0) );
+
+ path con;
+ picture lab;
+
+ con := hhconnect( center( terminator1 ), leftpoint( reg2, 2, 2 ), 0.5, 0 );
+ lab := conlabel( to_ulft, btex $y_{\mathrm{ref}}$ etex, point infinity of con );
+ x1 := xpart( mspoint( con, 0.2, 0 ) );
+
+ con := hhconnect( rightpoint( reg2, 2, 2 ), leftpoint( reg1, 2, 2 ), 0.5, 0 );
+ lab := conlabel( to_urt, btex $z_{\mathrm{ref}}$ etex, point 0 of con );
+ x3 := xpart( mspoint( con, 0.6, 0 ) );
+
+ con := rlconnect( reg1, G1 );
+ lab := conlabel( to_top, btex $u$ etex, mspoint( con, 0.8, 0 ) );
+ x2 := xpart( mspoint( con, 0.3, 0 ) );
+
+ picture split[];
+
+ con := rlconnect( G1, G2 );
+ lab := conlabel( to_top, btex $z$ etex, mspoint( con, 0.8, 0 ) );
+ split1 := splitdot( mspoint( con, 0.3, 0 ) );
+ x4 := xpart( mspoint( con, 0.5, 0 ) );
+
+ con := rlconnect( G2, terminator2 );
+ lab := conlabel( to_top, btex $y$ etex, mspoint( con, 0.8, 0 ) );
+ split2 := splitdot( mspoint( con, 0.4, 0 ) );
+
+ % Draw boxes
+ draw (x1,y1)--(x1,y2)--(x2,y2)--(x2,y1)--cycle withpen pencircle scaled dashlw dashed gldash1;
+ draw (x3,y3)--(x3,y4)--(x4,y4)--(x4,y3)--cycle withpen pencircle scaled dashlw dashed gldash2;
+
+ % Draw broken connections
+ pair p;
+ p := ( x2, 0.5[y1,y3] );
+ con := vhconnect( center split2, p );
+ con := hhconnect( p, leftpoint( reg2, 2, 1 ), 1, 0.4u );
+
+ p := ( x2, 1.5[y1,y3] );
+ con := vhconnect( center split1, p );
+ con := hhconnect( p, leftpoint( reg1, 2, 1 ), 1, 0.4u );
+
+endfig;
+end;