From ac3c55a3216b5988f0e48ba9414ddb059f19a699 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 11 Jan 2006 22:58:36 +0000 Subject: trunk/Master/texmf-dist/metapost git-svn-id: svn://tug.org/texlive/trunk@104 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/metapost/expressg/expeg.mp | 1357 ++++++++++++++++++++++++++ 1 file changed, 1357 insertions(+) create mode 100644 Master/texmf-dist/metapost/expressg/expeg.mp (limited to 'Master/texmf-dist/metapost/expressg/expeg.mp') diff --git a/Master/texmf-dist/metapost/expressg/expeg.mp b/Master/texmf-dist/metapost/expressg/expeg.mp new file mode 100644 index 00000000000..d8c5d64982f --- /dev/null +++ b/Master/texmf-dist/metapost/expressg/expeg.mp @@ -0,0 +1,1357 @@ +%% +%% This is file `expeg.mp', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% expressg.dtx (with options: `eg') +%% +%% Author: Peter Wilson (CUA) now at peter.r.wilson@boeing.com until June 2004 +%% (or pandgwilson@earthlink.net) +%% Copyright 1996, 2003 Peter R. Wilson +%% +%% v1.0 1996/05/09 (first release) +%% v1.2 1999/11/15 +%% v1.3 2000/05/22 +%% v1.4 2000/07/10 +%% v1.5 2003/07/31 +%% v1.6 2004/02/29 +%% v1.61 2004/03/17 +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any +%% later version. +%% The latest version of the license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2003/06/01 or later. +%% +%% This work has the LPPL maintenance status "author-maintained". +%% +%% This work consists of the files listed in the README file. +%% This program is provided under the terms of the +%% LaTeX Project Public License distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +%%% EXPEG.MP Example MetaPost EXPRESS-G diagrams + + +verbatimtex \def\twolines#1#2{\vbox{\hbox{#1} \hbox{#2}}} etex + +input expressg + +beginfig(1) + +z1=(0,0); +drawEXPRESSION(1); + +z2bl=z1tr; +drawINTEGER(2); + +z3bl=z2tr; +drawBOOLEAN(3); + +z4bm=z3tm; +drawcirclebox(4, namespace(btex ABS etex)(nextra))(btex ABS etex); + +numeric diam; +diam = namespace(btex ABS etex)(nextra); + +z5bm=z4tm; +drawcirclebox(5, diam)(btex SAB etex); + +x5ml-x5tl = x5tr-x6bl; +y6mr=y5tm; +drawENT(6, pconl, enth)(btex an\_ent etex); + +z7bm=(x6tm,y6tm+u); +drawLEVENT(7, pconl, eventh)(btex levent etex); + +z8=(x7tl, y7tr+u); +drawGEVENT(8, pconl, eventh)(btex gevent etex); + +z9br=1/8[z3tl,z3tr]; +drawSCHEMA(9, pconl, schemah)(btex a\_schema etex); + +numeric xmid, len; +xmid = x8tr + diam; +len = 2diam; + +z11=(xmid, y1ml); z111=z11 shifted (len, 0); +drawdashO(11, 111); + +pair moveright; +moveright = (len, 0); + +z12=(xmid, y2ml); z121=z12 shifted moveright; +drawnormalO(12, 121); + +z13=(xmid, y3ml); z131=z13 shifted moveright; +drawthickO(13, 131); + +pair moveup; +moveup = (0, y13-y12); + +z14=z13 shifted moveup; z141=z14 shifted moveright; +drawnormalD(14, 141); + +z15=z14 shifted moveup; z151=z15 shifted moveright; +drawnormalCA(15, 151); + +z16=z15 shifted moveup; z161=z16 shifted moveright; +drawnormalOA(16, 161); + +z17=z16 shifted moveup; z171=z17 shifted moveright; +drawnormalF(17, 171); + +z300=(0,y8tm+diam); z301=(x111,y300); +draw z300--z301 dashes; + +numeric mup; mup := onelineh; + +z302=(0,y300+mup); +drawcardbox(302, pconl, onelineh, 1/4onelineh)(""); + +z303bm=(x302tm, y302tm+mup); +drawdiamondbox(303, pconl, 2onelineh)(btex jewel etex); + +z304=(0, y303tm+mup); +drawdoublerectangle(304, pconl, 2onelineh, 3/4); +label(btex top etex, z304ct); + +z305=(0, y304tm+mup); +drawtriplerectangle(305, pconl, 3onelineh, 2/5, 0.2); +label(btex top etex, z305ct); +label("middle", z305cm); + +z306=(0,y305tm+mup); +drawindexbox(306, 2pconl, 3onelineh, 3/4pconl, onelineh)(btex pack etex); +z307=1/8[z306bl,z306tr]; +drawENT(307, 1/4pconl, onelineh)(btex E etex); + +z308=(0, y306P.tl+mup); +z309ml=z308c; +drawcardbox(308, pconl, 2onelineh, 1/4onelineh)(btex covered etex); +drawdashboxover(309, pconl, onelineh); + +z310bm=(x306bm,y309tm+mup); +drawovalbox(310, 2pconl, 2onelineh)(""); + +z311ml=(x310mr+mup, y310ml); +drawroundedbox(311, 2pconl, 2onelineh, 1/2onelineh)("rounded"); + +z312ml=(x311mr+mup, y311mr); +drawroundedbox(312, 2pconl, 2onelineh, 3/2onelineh)(btex large radius etex); + +z314=(x312bm-1/4pconl, y312bm-1/2mup); +hiderectangle(314, 1/2pconl, (3/2onelineh + mup)); + +z315tm=(x312bm, y312bm-mup); +drawdashellipse(315, 2pconl, 2onelineh); + +z316tm=(x315bm, y315bm-mup); +drawdashcircle(316, diam); + +z317bc=(x311bm,y304br); +drawdrum(317, pconl, 3onelineh)(btex drum etex); +z317A=(x317tc, y317tc+2onelineh); +drawnormalthree(317tml, 317A, 317tmr); +smooth(317tml, 317A, 317tmr); + +z320bm = (x317bm, y302); +drawstickman(320, onelineh, 2onelineh); + +z325bm = (x320bm, y306); +drawoutputbox(325, pconl, 2onelineh)(btex output etex); + +z330 = (x320bm, y309ml); +drawCircledDot(330, 3/2onelineh); + +z401bm=(1/2[x11,x111], y301+mup); +drawcircleA(401, diam); + +z402=(xmid, y401tm+mup); z502=(x111, y402); +drawdashA(402, 502); + +z403=(xmid, y402+mup); z503=(x111, y403); +drawdashOA(403, 503); + +z404=(xmid, y403+mup); z504=(x111, y404); +drawnormalOD(404, 504); + +z405=(xmid, y404+mup); z505=(x111, y405); +drawnormalCD(405, 505); + +z406=(xmid, y405+mup); z506=(x111, y406); +drawnormalDCA(406, 506); + +numeric ang; ang = 180/7; +z600=(xmid, y406+2mup); +z699=(x600+len, y600); +z601=z699 rotatedaround(z600, ang); +z602=z699 rotatedaround(z600, 2ang); +z603=z699 rotatedaround(z600, 3ang); +z604=z699 rotatedaround(z600, 4ang); +z605=z699 rotatedaround(z600, 5ang); +z606=z699 rotatedaround(z600, 6ang); +z607=z699 rotatedaround(z600, 7ang); +drawnormalCA(600,601); +drawnormalOA(600,602); +drawnormalF(600,603); +drawdashA(600,604); +drawnormalOD(600,605); +drawnormalCD(600,606); + +endfig; % end figure 1 + +beginfig(2) % schema level model + +numeric lb, hb; % length & height of boxes +lb=20u; hb=schemah; +numeric upshift; % vertical distance between rows +upshift = 20u; +numeric sideshift; % horizontal distance between boxes +sideshift = 10u; + +%%% bottom row + +z9=(lb+sideshift,0); +drawSCHEMA(9, lb, hb)("nine"); + +z11=(x9br+sideshift,y9); +drawSCHEMA(11, lb, hb)("eleven"); + +%%% middle row + +z1=(0,y9tl+upshift); +drawSCHEMA(1, lb, hb)("one"); + +z3=(x1br+sideshift, y1); +drawSCHEMA(3, lb, hb)("three"); + +z5=(x3br+sideshift, y1); +drawSCHEMA(5, lb, hb)("five"); + +z7=(x5br+sideshift, y1); +drawSCHEMA(7, lb, hb)("seven"); + +%%% top row + +x50 = 1/2[x3br,x5bl]; +z31bm=(x50,y1tl+upshift); +drawSCHEMA(31, lb, hb)("thirtyone"); + +%%% connectors + +drawdashOO(9tm, 3bm); % three/nine +drawdashO(5bm, 11tm); % five/eleven +drawdashO(3ml, 1mr); % three/one +drawdashO(3mr, 5ml); % three/five +drawdashOO(9mr, 11ml); % nine/eleven + +%%% thirtyone/nine +z90=((x1bl-sideshift), y9ml); +z31A=3/4[z31bl,z31tl]; +VH(90, 31A); +drawdashO(90vh, 31A); +drawdashthreeO(90vh, 90, 9ml); +pickup thickpen; +draw z90; +pickup normalpen; +label.lft("z90", z90); + +%%% one/eleven +z1A=1/3[z1bl,z1br]; +z11A=(x11bm, (y11bm-sideshift)); +VH(1A, 11A); +drawdashthree(1A, 1A.vh, 11A); % note it is 1A.vh and not 1Avh +drawdashO(11A, 11bm); +dotlabel.rt("z11A", z11A); +dotlabel.lft("z1A.vh", z1A.vh); % note it is z1A.vh and not z1Avh + +%%% thirtyone/eleven +z31B=3/4[z31br,z31tr]; +x31BC=x7br+sideshift; +HxH(31B, 31BC, 11mr); +drawdashfourO(31B, 31B.hxh, 11mr.hxh, 11mr); + +%%% thirtyone/seven +z31D=1/4[z31br,z31tr]; +VH(7tm, 31D); +drawnormalthreeO(31D, 7tm.vh, 7tm); + +%%% thirtyone/one +z31C=1/4[z31bl,z31tl]; +VH(1tm, 31C); +drawdashO(1tm.vh, 31C); +drawdashO(1tm.vh, 1tm); + +%%% thirtyone/three +z31E=1/4[z31bl,z31br]; +VhV(31E, 3tm); +drawnormalfourO(31E, 31E.vhv, 3tm.vhv, 3tm); + +%%% thirtyone/five +z31F=3/4[z31bl,z31br]; +VhV(31F, 5tm); +drawnormalfourO(31F, 31F.vhv, 5tm.vhv, 5tm); + +%%% labeled arrow +z3111=1/4[z31B,z31B.hxh]; +numeric arrowsize; +arrowsize := schemah; +z3112=(x3111, y3111+arrowsize); +drawnormalCA(3112, 3111); +label.rt(btex an\_import etex, 1/2[z3111, z3112]); + +endfig; % end fig 2 + + +%%%% some commonly used variables & values + +numeric pl, ph; % length & height of numeric page connectors +pl:=pconl; ph:=pconh; % for eg., 9,9 (9,9) +numeric plnamed; % length of named page connector +numeric irh; % height of interschema boxes +irh:=ish; % normally one line of text +numeric sdtl, sdth; % length & height of SDT (e.g. INTEGER) boxes +sdtl:=sdtbl; sdth:=sdtbh; +numeric edtl, edth; % length & height of enum boxes (inset is sdtbs) +edth:=sdtbh; % normally one text line +numeric el, eh; % length & height of entity boxes +eh:=enth; % normally one text line +numeric upshift; % vertical space between rows of boxes +numeric nextup; % vertical space between bases of rows of boxes +picture sindex, pindex; +sindex := btex eleven.Index etex; % interschema reference text +pindex := btex 9,9 Index etex; % page reference text +numeric slindex, plindex; +slindex := namespace(sindex)(nextra); % length of Index interschema +plindex := namespace(pindex)(nextra); % length of Index page reference +numeric hspace[]; % horizontal spaces +numeric lyc[]; % Y coords of box bases + +%%%%%%%%%%% end commonly used variables & values + +beginfig(3) % example fig 3 +%%%drawgrid; + +edtl := namespace(btex standard\_data\_name etex)(niextra); +upshift=2sdth; +nextup=sdth+upshift; +%%% the y coords of box bases +lyc1:=0; +lyc2:=lyc1+nextup; +lyc3:=lyc2+nextup; +lyc4:=lyc3+nextup; +lyc5:=lyc4+nextup; +lyc6:=lyc5+nextup; +lyc7:=lyc6+nextup; +lyc8:=lyc7+nextup; +hspace1 := 1/3edtl; % space between data enums +hspace2 := 2/3edtl; % initial space at start of second row + +%%% bottom two rows (1 & 2) + +z11=(0,lyc1); +drawENUM(11, edtl, edth)(btex coordinates etex); + +z22=(hspace2, lyc2); +drawENUM(22, edtl, edth)(btex solution\_data etex); + +z31=(x11br+hspace1, lyc1); +drawENUM(31, edtl, edth)(btex pressure\_loads etex); + +z42=(x22br+hspace1, lyc2); +drawENUM(42, edtl, edth)(btex nondimensional etex); + +z51=(x31br+hspace1, lyc1); +drawENUM(51, edtl, edth)(btex temperature etex); + +z62=(x42br+hspace1, lyc2); +drawENUM(62, edtl, edth)(btex force\_loads etex); + +%%% third row (horizontal line between 2 & 4 row) + +z13=(x11tm,lyc3); +VyV(11tm, 13, 62tm); +drawnormal(11tm.vyv, 62tm.vyv); +z23=(x22tm,lyc3); z33=(x31tm,lyc3); z43=(x42tm,lyc3); z53=(x51tm,lyc3); +drawnormalO(11tm.vyv,11tm); +drawnormalO(23,22tm); +drawnormalO(33,31tm); +drawnormalO(43,42tm); +drawnormalO(53,51tm); +drawnormalO(62tm.vyv,62tm); + +%%% fourth row + +z3224=1/3[z13,z62tm.vyv]; +z3554=2/3[z13,z62tm.vyv]; + +%%% standard_data_name +z24bm=(x3224,lyc4); +drawSELECT(24, edtl, edth)(btex standard\_data\_name etex); +drawnormal(24bm,3224); + +%%% adhoc_data_name +z54bm=(x3554,lyc4); +drawTYPE(54, edtl, edth)(btex adhoc\_data\_name etex); + +%%% STRING +z64br=(x62br,lyc4); +drawSTRING(64); + +%%% fifth row + +z35=(1/2[x24tm,x54tm], lyc5); +VyV(24tm, 35, 54tm); +drawnormalthreeO(35, 24tm.vyv, 24tm); +drawnormalthreeO(35, 54tm.vyv, 54tm); + +%%% sixth row + +z36bm=(x35,lyc6); +drawSELECT(36,edtl, edth)(btex data\_name etex); +drawnormal(36bm,35); + +%%% data_name +z66=(x62,lyc6); +drawPREF(66, sdtl, ph)(btex 3,1 (4) etex); + +%%%% rest of the connectors + +%%% adhoc/STRING (54, 64) +drawnormalO(54mr,64ml); + +%%% PREF/data_name (36, 66) +drawdashO(66ml,36mr); + +endfig; % end fig 3 + + +beginfig(4) % example 4 +%%%drawgrid; + +%%% length of named page reference boxes +plnamed := namespace(btex 9,9 data\_name etex)(nextra); + +%%% length of entity boxes +el := namespace(btex (ABS) Data\_t etex)(nextra); + +upshift := 2sdth; % vertical space between boxes +nextup := sdth+upshift; % vertical space between bases of boxes +hspace1 := 1/2el; % space between entity boxes + +%%% the y coords of box bases +lyc1:=0; +lyc2:=lyc1+nextup; +lyc3:=lyc2+nextup; +lyc4:=lyc3+nextup; +lyc5:=lyc4+nextup; +lyc6:=lyc5+nextup; +lyc7:=lyc6+nextup; +lyc8:=lyc7+nextup; + +%%%% 2nd row + +%%% IntArray +z12=(0,lyc2); +drawENT(12, el, eh)(btex IntArray etex); + +%%% RealArray +z22=(x12br+hspace1, lyc2); +drawENT(22, el, eh)(btex RealArray etex); + +%%% CharArray +z42=(x22br+hspace1, lyc2); +drawENT(42, el, eh)(btex CharArray etex); + +%%% BitArray +z52=(x42br+hspace1, lyc2); +drawENT(52, el, eh)(btex BitArray etex); + +%%%% 1st row + +z11bm=(x12bm,lyc1); +drawINTEGER(11); + +z21bm=(x22bm,lyc1); +drawREAL(21); + +z41bm=(x42bm,lyc1); +drawSTRING(41); + +z51bm=(x52bm,lyc1); +drawBINARY(51); + +%%% 3rd row + +y13= y23= y43= y53=lyc3; +x13=x12tm; x23=x22tm; x43=x42tm; x53=x52tm; +drawthick(13,53); % horizontal line +%%% vertical connectors +drawthickO(13,12tm); drawthickO(23,22tm); +drawthickO(43, 42tm); drawthickO(53, 52tm); + +z33=1/2[z13,z53]; % midpoint of horizontal line + +%%% 4th row + +%%% Data_t +z34bm=(x33,lyc4); +drawENT(34, el, 3eh)(btex \twolines{(ABS)}{Data\_t} etex); +drawthick(34bm,33); +label.urt("1", z33); % label the connection point + +%%% Index +z14=(0,lyc4); +drawPREF(14, plindex, ph)(pindex); + +%%% INTEGER +z54br=(x51br,lyc4); +drawINTEGER(54); + +%%% 5th row + +lyc5:=y34tm-ph; % change the initial y coord value + +%%% Index +z15=(0,lyc5); +drawPREF(15, plindex, ph)(pindex); + +%%% DataType +z55=(x54,lyc5); +drawPREF(55, plnamed, ph)(btex 3,1 data\_name etex); + +%%% 6th row + +%%% PREF to Data_t +lyc6:=lyc5+nextup; +z36bm=(x34tm,lyc6); +drawPREF(36, pl, ph)(btex 7,5 (6) etex); + +%%%% attributes + +%%% Sizes Data_t/Index (34, 14) +z3414=(x34,y14mr); +drawnormal(3414,14mr); +label.ulft(btex Sizes A[1:Limit] etex, z3414); + +%%% num Data_t/INTEGER (34, 54) +z3454=(x34mr,y54ml); +drawnormalO(3454,54ml); +label.urt(btex (DER) num etex, z3454); + +%%% Limit Data_t/Index (34, 15) +z3415=(x34,y15mr); +drawnormal(3415,15mr); +label.ulft(btex Limit etex, z3415); + +%%% Kind Data_t/data_name (34, 55) +z3455=(x34mr, y55ml); +drawnormal(3455, 55ml); +label.urt(btex Kind etex, z3455); + +%%% PREF into Data_t (36, 34) +drawdashO(36bm, 34tm); + +%%% Data IntArray/INTEGER (12, 11) +drawnormalO(12bm, 11tm); +label.lrt(btex Data A[1:num] etex, z12bm); + +%%% Data RealArray/REAL (22, 21) +drawnormalO(22bm, 21tm); +label.lrt(btex Data A[1:num] etex, z22bm); + +%%% Data CharArray/STRING (42, 41) +drawnormalO(42bm, 41tm); +label.lrt(btex Data A[1:num] etex, z42bm); + +%%% Data BitArray/BINARY (52, 51) +drawnormalO(52bm, 51tm); +label.lrt(btex Data A[1:num] etex, z52bm); + +endfig; % end fig 4 + +beginfig(5) % example 5 +%%drawgrid; + +plnamed := namespace(btex 7,4 Unstructured\_Donor etex)(nextra); + +numeric irls, irll; % length of short and long ISR boxes +irls = namespace(btex eleven.MeshLocation etex)(nextra); +irll = namespace(btex eleven.MeshConnectivityType etex)(nextra); + +upshift := irh; +nextup := irh+upshift; + +numeric maxrx; % max x coordinate value of LH of right column boxes +maxrx := maxx-irrl; +numeric xmid; % x coord of figure center +xmid := 1/2[irls, maxx-irll]; + +el := namespace(btex MeshConnectivity1\_1 etex)(nextra); +eh := irh; + +%%% y coords +lyc1 := 0; +lyc2 := lyc1+nextup; +lyc3 := lyc2+nextup; +lyc4 := lyc3+nextup+irh; +lyc5 := lyc4+nextup; +lyc6 := lyc5+nextup; +lyc7 := lyc6+nextup; +lyc8 := lyc7+nextup; +lyc9 := lyc8+nextup; + +%%% Zcol/row +%%% row 1 + +%%% PREF for Overlapping +z21bm=(xmid,lyc1); +drawPREF(21, pl, ph)(btex 5,3 (8) etex) + +%%% row 2 + +%%% OverlappingArea +z22bm=(x21bm,lyc2); +drawENT(22, el, eh)(btex OverlappingArea etex); + +%%% row 3 + +%%% IndexArray +z13=(pl,lyc3); +drawISR(13, irls, irh)(btex eleven.IndexArray etex); + +%%% Index +z23bm=(x22bm,lyc3); +drawISR(23, slindex, irh)(sindex); + +%%% MeshLocation +z33br=(maxx,lyc3); +drawISR(33, irls, irh)(btex eleven.MeshLocation etex); + +%%% row 4 + +%%% MeshConnectivity +z24bm=(x23bm,lyc4); +drawENT(24, el, eh)(btex MeshConnectivity etex); + +%%% PREF for MeshConnectivity +z14ml=(pl,y24ml); +drawPREF(14, pl, ph)(btex 5,2 (8) etex); + +%%% Structured_Donor +z34br=(maxx,lyc4); +drawPREF(34, plnamed, ph)(btex 7,5 Structured\_Donor etex); + +%%% row 5 + +%%% Unstructured_donor +z35br=(maxx,lyc5); +drawPREF(35, plnamed, ph)(btex 7,4 Unstructured\_Donor etex); + +%%% row 6 + +%%% MeshConnType +z36br=(maxx,lyc6); +drawISR(36, irll, irh)(btex eleven.MeshConnectivityType etex); + +%%% row 7 + +%%% IndexRange +z17=(0,lyc7); +drawISR(17, irls, irh)(btex eleven.IndexRange etex); + +%%% INTEGER +x27bm=x24bm; y27ml=y17mr; +drawINTEGER(27); + +%%% Zone +z37br=(maxx,lyc7); +drawISR(37, irls, irh)(btex seven.Zone etex); + +%%% row 8 + +%%% 1to1 +z28bm=(x24bm,lyc8); +drawENT(28, el, eh)(btex MeshConnectivity1\_1 etex); + +%%% row 9 + +%%% PREF to 1to1 +z29bm=(x28bm,lyc9); +drawPREF(29, pl, ph)(btex 5,1 (8) etex); + +%%%% attributes, etc + +drawthickO(21tm,22bm); % PREF to Overlap (21, 22) +drawthickO(14mr,24ml); % PREF to MeshConn (14, 24) +drawthickO(29bm,28tm); % PREF to 1to1 (29, 28) + +%%% PointListSize (22, 23) +drawdashO(22tm,23bm); +label.llft(btex PointListSize etex, z23bm); + +%%% PointRange (22, 17) +z22A=1/4[z22bl,z22tl]; z17A=(1/2[0,x13], y17); +VH(17A,22A); +drawdashthreeO(22A, 17A.vh, 17A); +label.ulft(btex PointRange etex, z22A); + +%%% PointList (22, 13) +z22B=3/4[z22bl,z22tl]; +VH(13bm,22B); +drawdashthreeO(22B, 13bm.vh, 13bm); +label.ulft(btex PointList etex, z22B); + +%%% MeshLocation (22, 33) +z22C=1/4[z22br,z22tr]; +z33B=2/3[z33bl,z33br]; +VH(33B,22C); +drawnormalthreeO(22C, 33B.vh, 33B); +label.urt(btex (DER) Location etex, z22C); + +%%% Meshloc (22, 33) +z22D=3/4[z22br,z22tr]; +z33A=1/3[z33bl,z33br]; +VH(33A,22D); +drawdashthreeO(22D, 33A.vh, 33A); +label.urt(btex Meshloc etex, z22D); + +%%% PointListSize (24, 23) +drawnormalO(24bm, 23tm); +label.ulft(btex PointListSize etex, z23tm); + +%%% StructuredDonor (24, 34) +z24A=(x24br,y34ml); +draw z24A--z34ml dashes; +label.lrt(btex StructuredDonor etex, z24A); + +%%% UnstructuredDonor (24, 35) +z24B=3/4[z24br,z24tr]; +HvH(24B,35ml); +drawdashfourO(24B, 24B.hvh, 35ml.hvh, 35ml); +label.urt(btex UnstructuredDonor etex, z24B.hvh); + +%%% Meshloc (24, 33) +z24C=4/6[z24bl,z24br]; +z33C=(x33A,y33tm); +y2433C=1/3[y33C,y24C]; +VyV(24C, 2433C, 33C); +drawdashfourO(24C, 24C.vyv, 33C.vyv, 33C); +label.lrt(btex Meshloc etex, z24C.vyv); + +%%% Location (24, 33) +z24D=5/6[z24bl,z24br]; +z33D=(x33B,y33tm); +y2433D=2/3[y33D,y24D]; +VyV(24D, 2433D, 33D); +drawnormalfourO(24D, 24D.vyv, 33D.vyv, 33D); +label.lrt(btex (DER) Location etex, z24D.vyv); + +%%% ConnectivityType (24, 36) +z24H=(x24D,y24tr); +z36H=z36bm; +y2436H=1/2[y35tr,y36br]; +VyV(24H, 2436H, 36H); +drawnormalfourO(24H, 24H.vyv, 36H.vyv, 36H); +label.urt(btex (DER) ConnectivityType etex, z24H.vyv); + +%%% Meshcon (24, 36) +z24G=(x24C,y24tr); +z36G=z36ml; +VH(24G,36G); +drawdashthreeO(24G, 24G.vh, 36G); +label.urt(btex Meshcon etex, z24G.vh); + +%%% K (24, 27) +drawnormalO(24tm, 27bm); +label.ulft(btex K etex, z24tm); + +%%% PointRange (24, 17) +z24E=1/4[z24tl,z24tr]; +x17br-x17E = x17A-x17bl; +y17E = y17A; +VhV(24E,17E); +drawdashfourO(24E, 24E.vhv, 17E.vhv, 17E); +label.ulft(btex PointRange etex, z24E); + +%%% PointList (24, 13) +z24F=1/4[z24bl,z24br]; +z13F=1/2[z13tl,z13tr]; +VhV(24F,13F); +drawnormalfourO(24F, 24F.vhv, 13F.vhv, 13F); +label.llft(btex PointList etex, z24F); + +%%% N (28, 27) +z27A=1/5[z27tl,z27tr]; +z28A=(x27A,y28bl); +drawnormalO(28A,27A); +label.llft(btex N etex, z28A); + +%%% trans (28, 27) +z27B=1/2[z27tl,z27tr]; +z28B=(x27B,y28bl); +drawdashO(28B,27B); +label.lrt(btex \twolines{trans}{A[1:N]} etex, z28B); + +%%% Transform (28, 27) +z27C=1/2[z27br,z27tr]; +z28C=(1/2[x27C,x28br], y28br); +VH(28C,27C); +drawnormalthreeO(28C,28C.vh,27C); +label.lrt(btex (DER) Transform A[1:N] etex , z28C); + +%%% DonorZone (28, 37) +z28D=1/2[z28br,z28tr]; +z37D=z37tm; +VH(37D,28D); +drawdashthreeO(28D,37D.vh,37D); +label.urt(btex DonorZone etex, z28D); + +%%% DonorPointRange (28, 17) +z28G=3/4[z28bl,z28tl]; +z17G=(x17A,y17tl); +VH(17G,28G); +drawnormalthreeO(28G,17G.vh,17G); +label.ulft(btex DonorPointRange etex, z28G); + +%%% PointRange (28, 17) +z28H=1/4[z28bl,z28tl]; +z17H=(x17E,y17G); +VH(17H,28H); +drawnormalthreeO(28H,17H.vh,17H); +label.ulft(btex PointRange etex, z28H); + +endfig; % end fig 5 + + +beginfig(6) % example 6 EXPRESS-G +%%%drawgrid; + +upshift := 3/2onelineh; +nextup := onelineh+upshift; + +el := namespace(btex manufacturer etex)(nextra); +eh := onelineh; + +hspace1 := 1/2el; + +%%% y coords +lyc1 := 0; +lyc2 := lyc1+nextup; +lyc3 := lyc2+nextup; +lyc4 := lyc3+nextup; +lyc5 := lyc4+nextup; + +%%% Zcol/row + +%%% rows 4 and 5 +z14=(0,lyc4); +drawENT(14, el, eh)(btex manufacturer etex); + +z25=(x14br+hspace1, lyc5); +drawSTRING(25); + +z34=(x25br+hspace1, lyc4); +drawENT(34, el, eh)(btex car\_model etex); + +%%% row 3 + +z33bm=(x34bm, lyc3); +drawENT(33, el, eh)(btex car etex); + +%%% row 2 + +z22=(x25, lyc2); +drawINTEGER(22); + +%%% row 1 + +z21=(x22, lyc1); +drawSTRING(21); + +%%% attributes + +%%% manufacturer name (14, 25) +VH(14tm, 25ml); +drawnormalthreeO(14tm, 14tm.vh, 25ml); +label.urt(btex *name etex, z14tm.vh); + +%%% model name (34, 25) +VH(34tm, 25mr); +drawnormalthreeO(34tm, 34tm.vh, 25mr); +label.ulft(btex *name etex, z34tm.vh); + +%%% made_by (34, 14) +drawnormalO(34ml, 14mr); +label.ulft(btex made\_by etex, z34ml); + +%%% model_type (33, 34) +drawnormalO(33tm, 34bm); +label.urt(btex model\_type etex, z33tm); + +%%% DER made_by (33, 14) +VH(14bm, 33ml); +drawnormalthreeO(33ml, 14bm.vh, 14bm); +label.ulft(btex (DER) *made\_by etex, z33ml); + +%%% year (33, 22) +z33A=1/3[z33bl, z33br]; +VH(33A, 22mr); +drawnormalthreeO(33A, 33A.vh, 22mr); +label.ulft(btex year etex, z33A.vh); + +%%% serial_no +z33B=2/3[z33bl, z33br]; +VH(33B, 21mr); +drawnormalthreeO(33B, 33B.vh, 21mr); +label.ulft(btex *serial\_no etex, z33B.vh); + +endfig; % end fig 6 + + +beginfig(7) % example 7 +%%%drawgrid; + +el := namespace(btex MANUFACTURER etex)(niextra); +eh := onelineh; + +hspace1 := namespace(btex made by maker of etex)(4ndextra); + +hspace2 := 6onelineh; % height of CAR +hspace3 := 5onelineh; % space between rows +hspace4 := 3onelineh; % height of MANUFACTURER + +%%% y coords +lyc1 := 0; +lyc2 := lyc1+hspace2+hspace3; + +%%% Zcol/row + +%%% row 2 + +z12=(0, lyc2); +drawENT(12, el, hspace4)(""); +x121=x12+sdtbs; +label.rt(btex MANUFACTURER etex, (x121, 2/3[y12bl, y12tl])); +label.rt(btex * manuf-name etex, (x121, 1/3[y12bl, y12tl])); + +z22=(x12br+hspace1, lyc2); +drawENT(22, el, hspace4)(""); +x221=x22+sdtbs; +label.rt(btex CAR-MODEL etex, (x221, 2/3[y12bl, y12tl])); +label.rt(btex * model-name etex, (x221, 1/3[y12bl, y12tl])); + +%%% row 1 + +z21=(x22, lyc1); +drawENT(21, el, hspace2)(""); +x211=x21+sdtbs; +label.rt(btex CAR etex, (x211, 5/6[y21bl, y21tl])); +label.rt(btex o year etex, (x211, 4/6[y21bl, y21tl])); +label.rt(btex o model (R) etex, (x211, 3/6[y21bl, y21tl])); +label.rt(btex * serial-no etex, (x211, 2/6[y21bl, y21tl])); +label.rt(btex * maker (R) etex, (x211, 1/6[y21bl, y21tl])); + +%%%%% relationship lines + +%%% MANUFACTURER / CAR-MODEL (12, 22) +drawnormalDCA(12mr, 22ml); +drawnormalCA(22ml, 12mr); +label.urt(btex { }{ }made by etex, z12mr); +label.llft(btex maker of{ }{ } etex, z22ml); + +%%% MANUFACTURER / CAR (12, 21) +VH(12bm, 21ml); +drawnormalCA(12bm.vh, 12bm); +drawnormalDCA(12bm.vh, 21ml); +label.llft(btex { }{ }made by etex, z12bm); +label.ulft(btex maker of{ }{ } etex, z21ml); + +%%% CAR-MODEL / CAR (22, 21) +drawnormalDCA(22bm, 21tm); +drawnormalCA(21tm, 22bm); +label.lrt(btex { }one of etex, z22bm); +label.ulft(btex type of{ } etex, z21tm); + +endfig; % end fig 7 + + +beginfig(8) % example 8 IDEF1X +%%%drawgrid; + +el := namespace(btex MANUFACTURER etex)(niextra); +eh := onelineh; + +hspace1 := namespace(btex made by maker of etex)(4ndextra); + +hspace2 := 5onelineh; % height of CAR +hspace3 := 5onelineh; % space between rows +hspace4 := 3onelineh; % height of MANUFACTURER + +%%% y coords +lyc1 := 0; +lyc2 := lyc1+hspace2+hspace3; + +%%% Zcol/row + +%%% row 2 + +z12=(0, lyc2); +drawdoublerectangle(12, el, hspace4, 1/2); +label.urt(btex Manufacturer etex, z12tl); +x121=x12+sdtbs; +label.rt(btex manuf-name etex, (x121, 3/4[y12bl, y12tl])); + +z22=(x12br+hspace1, lyc2); +drawdoublerectangle(22, el, hspace4, 1/2); +label.urt(btex Car-model etex, z22tl); +x221=x22+sdtbs; +label.rt(btex Model-name etex, (x221, 3/4[y12bl, y12tl])); +label.rt(btex Manuf-name (FK) etex, (x221, 1/4[y12bl, y12tl])); + +%%% row 1 + +z21=(x22, lyc1); +drawroundedbox(21, el, hspace2, 2sdtbs)(""); +label.urt(btex Car etex, z21tl); +draw z21ml--z21mr; +x211=x21+sdtbs; +label.rt(btex Serial-no etex, (x211, 5/6[y21bl, y21tl])); +label.rt(btex Manuf-name (FK) etex, (x211, 4/6[y21bl, y21tl])); +label.rt(btex Model-name (FK) etex, (x211, 2/6[y21bl, y21tl])); +label.rt(btex Year etex, (x211, 1/6[y21bl, y21tl])); + +%%%%% relationship lines + +%%% MANUFACTURER / CAR-MODEL (12, 22) +drawnormalD(12mr, 22ml); +label.top(btex of etex, 1/2[z12mr, z22ml]); + +%%% MANUFACTURER / CAR (12, 21) +VH(12bm, 21ml); +drawnormalthreeD(12bm, 12bm.vh, 21ml); +label.top(btex makes etex, 1/2[z12bm.vh, z21ml]); +label.ulft(btex P{ } etex, z21ml); + +%%% CAR-MODEL / CAR (22, 21) +drawnormalD(22bm, 21tm); +label.lft(btex of etex, 1/2[z21tm,z22bm]); +label.urt(btex { }P etex, z21tm); + +endfig; % end fig 8 + + +beginfig(9) % example 9 OMT +%%%drawgrid; + +el := namespace(btex {\bf MANUFACTURER} etex)(niextra); +eh := onelineh; + +hspace1 := namespace(btex made by maker of etex)(4ndextra); + +hspace2 := 4onelineh; % height of CAR +hspace3 := 4onelineh; % space between rows +hspace4 := 3onelineh; % height of MANUFACTURER + +%%% y coords +lyc1 := 0; +lyc2 := lyc1+hspace2+hspace3; + +%%% Zcol/row + +%%% row 2 + +z12=(0, lyc2); +drawdoublerectangle(12, el, hspace4, 1/2); +x121=x12+sdtbs; +label.rt(btex {\bf Manufacturer} etex, (x121, 3/4[y12bl, y12tl])); +label.rt(btex name : String etex, (x121, 1/4[y12bl, y12tl])); + +z22=(x12br+hspace1, lyc2); +drawdoublerectangle(22, el, hspace4, 1/2); +x221=x22+sdtbs; +label.rt(btex {\bf Car Model} etex, (x221, 3/4[y22bl, y22tl])); +label.rt(btex name: String etex, (x221, 1/4[y22bl, y22tl])); + +%%% row 1 + +z21=(x22, lyc1); +drawdoublerectangle(21, el, hspace2, 1/3); +x211=x21+sdtbs; +label.rt(btex {\bf Car} etex, (x211, 5/6[y21bl, y21tl])); +label.rt(btex serial-no : String etex, (x211, 4/9[y21bl, y21tl])); +label.rt(btex year : Integer etex, (x211, 2/9[y21bl, y21tl])); + +%%%%% relationship lines + +%%% MANUFACTURER / CAR-MODEL (12, 22) +drawnormalD(12mr, 22ml); +label.top(btex {\it makes} etex, 1/2[z12mr, z22ml]); +label.ulft(btex 1+{ } etex, z22ml); + +%%% MANUFACTURER / CAR (12, 21) +VH(12bm, 21ml); +drawnormalthreeD(12bm, 12bm.vh, 21ml); +label.top(btex {\it makes} etex, 1/2[z12bm.vh, z21ml]); +label.ulft(btex 1+{ } etex, z21ml); + +%%% CAR-MODEL / CAR (22, 21) +drawnormalD(22bm, 21tm); +label.lft(btex {\it produced as} etex, 1/2[z21tm,z22bm]); + +endfig; % end fig 9 + + +beginfig(10) % example 10 E-R +%%%drawgrid; + +numeric diam; diam := 2onelineh; + +upshift := diam; % circle diameter +nextup := diam+upshift; + +el := namespace(btex MANUFACTURER etex)(niextra); +eh := onelineh; + +numeric dl, dh; % length and height of diamond boxes +dl := 1/2el; dh := 2eh; + +numeric marg; marg := 4u; % double the seperation between parallel lines + +hspace1 := 1/2el; + +%%% y coords +lyc1 := 0; +lyc2 := lyc1+nextup; +lyc3 := lyc2+nextup; +lyc4 := lyc3+nextup; +lyc5 := lyc4+nextup; + +%%% Zcol/row +%%% row 4 + +z14=(0,lyc4); +drawENT(14, el, eh)(btex manufacturer etex); + +z34ml=(x14br+hspace1, y14mr); +drawdiamondbox(34, dl, dh)(btex has etex); + +z54ml=(x34mr+hspace1, y34mr); +drawENT(54, el, eh)(btex car\_model etex); + +%%% row 5 + +z15bm=(x14bm, lyc5); +drawcirclebox(15, diam)(btex Name etex); + +z55bm=(x54bm, lyc5); +drawcirclebox(55, diam)(btex Name etex); + +%%% row 3 + +z53bm=(x54bm, lyc3); +drawdiamondbox(53, dl, dh)(btex of etex); + +z13c=(x14bm, y53c); +drawtwodiamondbox(13, dl+marg, dh+marg, 2/5marg)(btex Makes etex); + +%%% row 2 + +z32bm=(x34bm, lyc2); +drawENT(32, el, eh)(btex car etex); +z31c=z32c; +drawENT(31, el+marg, eh+marg)(""); + +%%% row 1 + +z21bm=(x32bl, lyc1); +drawcirclebox(21, 5/4diam)(btex \twolines{Serial}{No} etex); + +z41bm=(x32br, lyc1); +drawcirclebox(41, diam)(btex Year etex); + +%%%%%% lines + +%%% Name / manufacturer (15, 14) +drawnormal(15bm, 14tm); + +%%% Name / model (55, 54) +drawnormal(55bm, 54tm); + +%%% Mnf / has (14, 34) +drawnormal(14mr, 34ml); +label.top(btex 1 etex, 1/2[z14mr,z34ml]); + +%%% has/ model (34, 54) +drawnormal(34mr, 54ml); +label.top(btex N etex, 1/2[z34mr,z54ml]); + +%%% Mnf / makes (14, 13) +drawnormal(14bm, 13tm); +label.rt(btex 1 etex, 1/2[z14bm,z13tm]); + +%%% model / of (54, 53) +drawnormal(54bm, 53tm); +label.rt(btex 1 etex, 1/2[z54bm,z53tm]); + +%%% makes / car (13, 31) +drawnormal(13bm, 31ml); +z31A=(x31ml, y31ml+1/2marg); +z13U-z31A = z13bm-z31ml; +z13A = whatever[z13U,z31A] = whatever[z13bm,z13mr]; +draw z13A--z31A; +label.urt(btex N etex, 1/2[z13A,z31A]); + +%%% of / car (53, 31) +drawnormal(53bm, 31mr); +z31B=(x31mr, y31mr+1/2marg); +z53U - z31B = z53bm - z31mr; +z53B = whatever[z53U,z31B] = whatever[z53bm,z53ml]; +draw z53B--z31B; +label.ulft(btex N etex, 1/2[z53B,z31B]); + +%%% car / serial no (31, 21) +z31C=(x21tm, y31bl); +drawnormal(31C, 21tm); + +%%% car / year (31, 41) +z31D=(x41tm, y31br); +drawnormal(31D, 41tm); + +endfig; % end fig 10 + + +beginfig(11) % example 11 NIAM +%%%drawgrid; + +numeric diam; diam := 2onelineh; % circle diameter + +upshift := diam; +nextup := diam+upshift; + +numeric hel, vel; % length of horizontal and vertical box pairs +eh := onelineh; +hel = namespace(btex made by etex)(nextra); +vel = namespace(btex of prod etex)(nextra); + +numeric del, deh; % horizontal & vertical diameters of oval boxes +del := namespace(btex MANUFACTURER etex)(niextra); +deh := 2eh; + +numeric marg; marg := 2u; % margin for doubly enclosed oval boxes +numeric lmarg; lmarg := marg; % gap for short lines + +numeric dashel, dasheh; % diameters of dashed ellipses +dashel := del+2marg; +dasheh := deh+2marg; + +hspace1 := diam; + +%%% y coords +lyc1 := 0; +lyc2 := lyc1+nextup; +lyc3 := lyc2+nextup; + +%%% Zcol/row + +%%% row 3 + +x13ml=0; y13bm=lyc3; +drawovalbox(13, del, deh)(btex manufacturer etex); +z14=z13c; +drawdashellipse(14, dashel, dasheh); + +z23ml=(x14mr+hspace1, y14mr); +drawENT(23, hel, eh)(btex of etex); + +z33bl=z23br; +drawENT(33, hel, eh)(btex made by etex); + +z44ml=(x33mr+hspace1, y33mr); +drawdashellipse(44, dashel, dasheh); +z43=z44c; +drawovalbox(43, del, deh)(btex car model etex); + +z53ml=(x44mr+hspace1, y44mr); +drawdashcircle(53, diam); +label(btex year etex, z53c); + +%%% row 2 + +z22c=(x23bm,lyc2); +drawcirclebox(22, namespace(btex U etex)(2nextra))(btex U etex); + +x42tm=x43bm; y42ml=lyc2; +drawdoublerectangle(42, vel, 2eh, 1/2); +label(btex of etex, z42ct); +label(btex is of etex, z42cb); + +%%z52c=(x53x,lyc2); +x52tm=x53bm; y52ml=lyc2; +drawdoublerectangle(52, vel, 2eh, 1/2); +label(btex of prod etex, z52ct); +label(btex prod in etex, z52cb); + +%%% row 1 + +z11ml=(x13ml,lyc1); +drawdashellipse(11, del, deh); +label(btex serial no etex, z11c); + +z21ml=(x23ml,lyc1); +drawENT(21, hel, eh)(btex of etex); + +z31bl=z21br; +drawENT(31, hel, eh)(btex has etex); + +z41c=(x43c,lyc1); +drawcirclebox(41, diam)(btex car etex); + +%%%%%% lines + +%%% manufacturer / of (14, 23) +drawnormal(14mr, 23ml); + +%%% made by / car model (33, 44) +drawnormal(33mr, 44ml); +draw (x33tl, y33tl+lmarg)--(x33tr, y33tl+lmarg); +draw (x33mr, y33mr+lmarg)--(x33mr+eh, y33mr+lmarg); + +%%% serial no / of (11, 21) +drawnormal(11mr, 21ml); + +%%% of / of (23, 22, 21) +drawnormal(23bm, 22tm); drawnormal(22bm, 21tm); +label.rt(btex id etex, z22mr); + +%%% has / car (31, 41) +drawnormal(31mr, 41ml); +draw (x31tl, y31tl+lmarg)--(x31tr, y31tl+lmarg); +draw (x31mr, y31mr+lmarg)--(x33mr+eh, y31mr+lmarg); + +%%% model / of (44, 42) +drawnormal(43bm, 42tm); + +%%% is of / car (42, 41) +drawnormal(42bm, 41tm); +draw (x42tfr+lmarg, y42tfr)--(x42tfr+lmarg, y42br); +draw (x42bm+lmarg, y42bm)--(x42bm+lmarg, y42bm-eh); + +%%% year / of prod (53, 52) +drawnormal(53bm, 52tm); + +%%% prod in / car (52, 41) +VH(52bm,41mr); +drawnormalthree(52bm, 52bm.vh, 41mr); +draw (x52tfr+lmarg, y52tfr)--(x52tfr+lmarg, y52br); +draw (x52bm+lmarg, y52bm)--(x52bm+lmarg, y52bm-eh); + +endfig; % end fig 11 + +end + -- cgit v1.2.3