summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ld.mp119
1 files changed, 85 insertions, 34 deletions
diff --git a/ld.mp b/ld.mp
index 18e2ab2..552b21c 100644
--- a/ld.mp
+++ b/ld.mp
@@ -33,6 +33,7 @@ enddef;
def gate_and(expr gax, gay) =
numeric GAh, GAl, GAs;
+
GAh := 20;
GAl := 10;
GAe := gax+36;
@@ -79,27 +80,35 @@ enddef;
outputtemplate := "nora.eps";
beginfig(5)
-numeric wt, ht, il;
+numeric wt, ht, il, gs, gr, gc;
-wt = 50;
-ht = 15;
+ht = 30;
il = 15;
+gs = il;
+gc = 7;
+gr = 10;
+wt = gr + 25;
-label.lft(btex $z$ etex, (0, 0));
-label.lft(btex $y$ etex, (0, 10));
-label.lft(btex $x$ etex, (0, 20));
-label.rt(btex $(x+y+z)'$ etex, (wt+il, 10));
+label.lft(btex $z$ etex, (0, 5));
+label.lft(btex $y$ etex, (0, 15));
+label.lft(btex $x$ etex, (0, 25));
-draw (0, 0)--(19, 0);
-draw (0, 10)--(22, 10);
-draw (0, 20)--(19, 20);
+draw (0, 5)--(il+4, 5);
+draw (0, 15)--(il+7, 15);
+draw (0, 25)--(il+4, 25);
-draw (15, -5)..(22, 10)..(15, 25);
-draw (15, -5)--(25, -5)..(26, -5)..(wt, 10);
-draw (15, 25)--(22, 25)..(23, 25)..(wt, 10);
-draw (wt, 10)..(wt+3, 10)..(wt, 10);
+draw (gs, 0)..(gs + gc, ht/2)..(gs, ht);
+draw (gs, 0)--(gs + gr, 0)..(gs + gr + 2, 0)..(gs + wt, ht/2);
+draw (gs, ht)--(gs + gr, ht)..(gs + gr + 2, ht)..(gs + wt, ht/2);
-draw (wt+3, 10)--(wt+il-3, 10);
+gs := gs + wt;
+draw (gs, ht/2)..(gs + 3, ht/2)..(gs, ht/2);
+
+il := il - 3;
+gs := gs + 3;
+draw (gs, ht/2)--(gs + il, ht/2);
+
+label.rt(btex $(x+y+z)'$ etex, (gs + il, ht/2));
endfig;
@@ -108,16 +117,17 @@ endfig;
outputtemplate := "norb.eps";
beginfig(6)
-numeric wt, ht, il;
+numeric wt, ht, il, gs, gr;
-wt = 50;
ht = 30;
il = 12;
+gs = 15;
+gr = 20;
+wt = gr + 15;
label.lft(btex $z$ etex, (0, 0));
label.lft(btex $y$ etex, (0, 10));
label.lft(btex $x$ etex, (0, 20));
-label.rt(btex $x'y'z'=(x+y+z)'$ etex, (wt+il, 10));
draw (0, 0)--(il, 0);
draw (il, 0)..(il+3, 0)..(il, 0);
@@ -126,12 +136,16 @@ draw (il, 10)..(il+3, 10)..(il, 10);
draw (0, 20)--(il, 20);
draw (il, 20)..(il+3, 20)..(il, 20);
+draw (gs, -5)--(gs, ht-5);
+draw (gs, -5)--(gs + gr, -5)..(gs + gr + 1, -5)..(gs + wt, 10);
+draw (gs, 25)--(gs + gr, 25)..(gs + gr + 1, 25)..(gs + wt, 10);
+
+gs := gs + wt;
il := il + 3;
-draw (il, -5)--(il, ht-5);
-draw (il, -5)--(il+20, -5)..(il+21, -5)..(wt, 10);
-draw (il, 25)--(il+20, 25)..(il+21, 25)..(wt, 10);
+draw (gs, ht/2-5)--(gs + il, ht/2-5);
+
+label.rt(btex $x'y'z'=(x+y+z)'$ etex, (gs+il, ht/2-5));
-draw (wt, 10)--(wt+il, 10);
endfig;
% =================
@@ -139,12 +153,13 @@ endfig;
outputtemplate := "nanda.eps";
beginfig(7);
-numeric il, gas, ht, wt;
+numeric il, ht, wt, gs, gr;
-il = 10;
-gas = il;
ht = 30;
-wt = 40;
+il = 15;
+gs = il;
+gr = 20;
+wt = gr + 15;
label.lft(btex $z$ etex, (0, 5));
label.lft(btex $y$ etex, (0, 15));
@@ -154,17 +169,53 @@ draw (0, 5)--(il, 5);
draw (0, 15)--(il, 15);
draw (0, 25)--(il, 25);
-draw (gas, 0)--(gas, ht);
-draw (gas, 0)--(gas + 25, 0)..(gas + wt, ht/2-1)..
- (gas + 25, ht)--(gas, ht);
+draw (gs, 0)--(gs, ht);
+draw (gs, 0)--(gs + gr, 0)..(gs + wt, ht/2-1)..
+ (gs + gr, ht)--(gs, ht);
-gas := gas + wt;
-draw (gas, ht/2)..(gas + 3, ht/2)..(gas, ht/2);
-gas := gas + 3;
+gs := gs + wt;
+draw (gs, ht/2)..(gs + 3, ht/2)..(gs, ht/2);
+
+gs := gs + 3;
il := il - 3;
-draw (gas, ht/2)--(gas + il, ht/2);
+draw (gs, ht/2)--(gs + il, ht/2);
+
+label.rt(btex $(xyz)'$ etex, (gs + il, ht/2));
+
+endfig;
+
+% =================
+
+outputtemplate := "nandb.eps";
+beginfig(8)
+
+numeric wt, ht, il, gs, gr, gc;
+
+ht = 30;
+il = 12;
+gs = il;
+gc = 7;
+gr = 10;
+wt = gr + 25;
+
+label.lft(btex $z$ etex, (0, 5));
+label.lft(btex $y$ etex, (0, 15));
+label.lft(btex $x$ etex, (0, 25));
+
+draw (0, 5)--(il+4, 5)..(il+4 + 3, 5)..(il+4, 5);
+draw (0, 15)--(il+7, 15)..(il+7 + 3, 15)..(il+7, 15);
+draw (0, 25)--(il+4, 25)..(il+4 + 3, 25)..(il+4, 25);
+
+gs := gs + 3;
+draw (gs, 0)..(gs + gc, ht/2)..(gs, ht);
+draw (gs, 0)--(gs + gr, 0)..(gs + gr + 2, 0)..(gs + wt, ht/2);
+draw (gs, ht)--(gs + gr, ht)..(gs + gr + 2, ht)..(gs + wt, ht/2);
+
+gs := gs + wt;
+il := il + 3;
+draw (gs, ht/2)--(gs + il, ht/2);
-label.rt(btex $(xyz)'$ etex, (gas + il, ht/2));
+label.rt(btex $x'+y'+z' = (xyz)'$ etex, (gs + il, ht/2));
endfig;