; TeX output 1999.02.25:1519! /XYdict where not{250 dict /XYdict exch def /xy{mark exch XYdict begin countdictstack /xylevel exch def xyopen xycolor mark xypatt xypattern stopped xyclose end cleartomark}def /xyg{gsave xy}def /xyf{currentfont exch xy grestore setfont}def /xycc{{xychgcol}xy}def /xyc{XYdict begin xycolstore end}def /xyx{/xyYpos exch def /xyXpos exch def}def /xyp{currentpoint xyx}def /xyd{setupDirection XYdirection 2 mul}def /xyct{currentpoint xyt 2 copy 6 2 roll}def /xyt{xyXpos xyYpos 2 copy translate}def /xyr{neg rotate xynt}def /xyrs{neg rotate 3 -1 roll sub neg 3 1 roll sub exch moveto xynt}def /xynt{neg exch neg exch translate}def /xys{scale xynt}def /xyss{scale 3 -1 roll sub neg 3 1 roll sub exch moveto xynt}def /xyi{0 0 transform grestore gsave itransform}def }if&! /XYdict where pop begin XYdict begin! /xyopen{currentdict /XYddict known{XYddict null eq{} {XYddict begin xyopen}ifelse}if}def /xyclose{countdictstack -1 xylevel 1 add{pop end}for}def /xychgcol{/xycolor exch def}def /xysetcol{xypush xychgcol}def  ! /xypush{16 dict /XYddict exch def XYddict begin}def /undef where {pop /xypop{countdictstack xylevel eq{}{end}ifelse currentdict /XYddict undef}def} {/xypop{countdictstack xylevel eq{}{end}ifelse /XYddict null def}def}ifelse /pu /xypush load def /pp /xypop load def! /xypspt{72 72.27 div dup scale}bind def /pscorrect{.85 mul}bind def /gstartxy{gsave xypspt xywidth xycap xyjoin xymiter newpath 0 0 moveto}def /xypath{gstartxy rmoveto counttomark 2 idiv -1 1{pop lineto}for}def /xystroke{stroke grestore}bind def /xyfill{closepath fill grestore}bind def /xystfil{closepath gsave fill grestore 0 setgray 0 setlinewidth xystroke}bind def /xyeofill{closepath eofill grestore}bind def ! /xypolyline{xypath xystroke}def /xypolyfill{xypath xyfill}def /xydotsep{/@ currentlinewidth 2 mul def}def /xypolydot{xypath xydotsep [xydt @] 0 setdash xystroke}def /xypolydash{xypath xydotsep [@ @] 0 setdash xystroke}def /xypolyeofill{xypath xyeofill}def /pe /xypolyeofill load def /pl /xypolyline load def /pf /xypolyfill load def /pt /xypolydot load def /pd /xypolydash load def ! /arc4pop{arcto 4{pop}repeat}bind def /xyoval{gstartxy oval closepath xystroke}def /xycircle{gstartxy circle xystroke}def /circle{dup 0 moveto 0 0 3 -1 roll 0 360 arc}def /oval{newpath 2 copy exch 5 index add 2 div exch 3 copy 10 3 roll moveto 1 index dup 5 1 roll 3 index 7 index arc4pop dup dup 4 1 roll 4 index exch 6 index arc4pop 1 index dup 8 1 roll 4 index 4 index arc4pop arc4pop closepath}def /xyellipse{gstartxy counttomark 1 gt{squarify pop pop 1}if circle xystroke}def /ov /xyoval load def /ox /xyellipse load def P! /dotit{dup currentlinewidth 6 mul div round div /@ exch def [xydt @] 0 setdash}def /elldash{dup 4 -1 roll 10 exch div dashit}def /ovdash{dup 10 dashit}def /dashit{div round 2 mul div /@ exch def [@ @] 0 setdash}def /dotcirc{gstartxy cirlen dotit circle xystroke}def /dashcirc{gstartxy cirlen dashit circle xystroke}def /dotoval{gstartxy 5 copy ovlen dotit oval xystroke}def /dashoval{gstartxy 5 copy ovlen ovdash oval xystroke}def /cirlen{dup 6.283185 mul}bind def /ovlen{3 -1 roll sub 3 1 roll sub add exch 1.716815 mul sub}def /dotellipse{gstartxy counttomark 1 gt{squarify pop pop 1}if cirlen dotit circle closepath xystroke}def /dashellipse{gstartxy counttomark 1 gt{squarify add 2 div 1} {1 exch 1 exch}ifelse cirlen elldash circle xystroke}def /ot /dotellipse load def /od /dashellipse load def /vt /dotoval load def /vd /dashoval load def R! /filloval{gstartxy oval xyfill}def /stfiloval{gstartxy oval xystfil}def /fillcircle{gstartxy circle xyfill}def /stfilcircle{gstartxy circle xystfil}def /fillellipse{gstartxy squarify pop pop 1 circle xyfill}def /stfilellipse{gstartxy squarify pop pop 1 circle xystfil}def /squarify{4 copy sub 2 div 3 1 roll sub 2 div translate add 2 div 3 1 roll add 2 div 2 copy scale 2 copy add 2 div currentlinewidth exch div setlinewidth newpath}def /fe /fillellipse load def /sfe /stfilellipse load def /fo /filloval load def /sfo /stfiloval load def /fc /fillcircle load def /sfc /stfilcircle load def ! /xywidth{.4 pscorrect setlinewidth}bind def /xydash{[] 0 setdash}bind def /xycap{1 setlinecap}bind def /xyjoin{1 setlinejoin}bind def /xymiter{10 setmiterlimit}bind def 5! /cc{dup exec xychgcol}def /lw{dup setlinewidth /@l exch def /xywidth{@l setlinewidth}bind def}def /lc{dup setlinecap /@c exch def /xycap{@c setlinecap}bind def}def /lj{dup setlinejoin /@j exch def /xyjoin{@j setlinejoin}bind def}def /ml{dup setmitrelimit /@m exch def /xymiter{@m setmitrelimit}bind def}def ! /setupDirection{dup -2048 lt{3072 add neg 1024 exch} {dup 0 lt{1024 add neg -1024}{dup 2048 lt{1024 sub -1024 exch} {3072 sub 1024}ifelse}ifelse}ifelse atan dup 180 gt{360 sub}if dup /XYdirection exch def rotate}def ! userdict begin /gray{setgray}bind def /gray@{setgray}bind def /rgb{setrgbcolor}bind def /rgb@{setrgbcolor}bind def /hsb{sethsbcolor}bind def /hsb@{sethsbcolor}bind def /setcmykcolor where{pop}{/setcmykcolor{dup 3 1 roll dup 5 1 roll exch sub 1 add 5 1 roll exch sub 1 add 4 1 roll exch sub 1 add 3 1 roll setrgbcolor}bind def}ifelse /cmyk{setcmykcolor}bind def /cmyk@{setcmykcolor}bind def /sethalftone where{/sethalftone load /tone exch def}if /xycolarray 3 array def /xycolstore{currentrgbcolor 2 -1 0 {exch xycolarray 3 1 roll put}for}def xycolstore /xycolor{0 1 2{xycolarray exch get}for setrgbcolor}def /xypatt{}def /xypattern{cleartomark}bind def end ! end end&! /XYdict where pop begin XYdict begin! /:patt {XYddict begin 14 dict begin /BGnd exch def /FGnd exch def /PaintData exch def /PatternType 1 def /PaintType 1 def /BBox[0 0 1 1]def /TilingType 1 def /XStep 1 def /YStep 1 def /PatternMtx[24 0 0 24 0 0]def /PaintProc BGnd null ne {{begin BGnd aload pop setrgbcolor 0 0 1 1 rF FGnd aload pop setrgbcolor 24 24 true PatternMtx PaintData imagemask end}} {{begin FGnd aload pop setrgbcolor 24 24 true PatternMtx PaintData imagemask end}} ifelse def currentdict PatternMtx end gsave patangle xyland{180 add}if rotate macfreq patfreq div dup neg exch scale matrix currentmatrix grestore gsave setmatrix /DeviceRGB setcolorspace makepattern grestore end}defj! /rF{gsave newpath 4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto fill grestore}bind def ! /setpatscreen{/pattstring exch store patfreq patangle xyport not{90 add}if {1 add 4 mul cvi pattstring exch get exch 1 add 4 mul cvi 7 sub bitshift 1 and}setscreen}bind def /setcolpattern{setpatscreen 64 div 1 exch sub currentrgbcolor 1 1 3{pop 1 exch sub 3 index mul 1 exch sub 3 1 roll}for setrgbcolor pop}def /setgraypattern{setpatscreen 64 div setgray}def /macfreq 9.375 def /patangle 0 def /patfreq 12.5 def! /checkland{/normland where{pop normland not}{false}ifelse /xyland exch def /por where{pop por}{/isls where{pop isls not /xyland true def} {/land where{pop land not}{true} ifelse}ifelse}ifelse /xyport exch def}def *! /setpatfreq{/patfreq exch def}def /setpatangle{/patangle exch def}def /setbackcolor{/backcolor exch def}def /setforecolor{/forecolor exch def}def [1 1 1] setbackcolor xycolarray setforecolor /bg /setbackcolor load def /fg /setforecolor load def /pa /setpatangle load def /pq /setpatfreq load def ! /xypattern{checkland counttomark dup 0 eq{pop} {dup 1 eq{pop setpatscreen} {dup 2 eq{pop setcolpattern} {dup 3 eq{pop /setcolorspace where { /.setcolorspace where{pop pop pop setcolpattern} {/.buildpattern where {pop forecolor backcolor :patt setpattern }{pop pop setcolpattern}ifelse}ifelse} {pop setcolpattern}ifelse} {5 eq{/setcolorspace where{ /.setcolorspace where{pop pop pop pop pop setcolpattern} {/.buildpattern where {pop :patt setpattern }{pop pop pop pop setcolpattern}ifelse}ifelse} {pop pop pop setcolpattern}ifelse }{}ifelse}ifelse}ifelse}ifelse}ifelse cleartomark }def /xysetpattern{/xypatt exch def}def /sp /xysetpattern load def ! end end&! /XYdict where pop begin XYdict begin! /xysize 10 def /T true def /F false def /dimendiv{65536 div}bind def /xysegl 327680 dimendiv def /xyopp{1 -1 scale}bind def /xynormwidth{26213 dimendiv pscorrect}bind def /xywidth{xynormwidth setlinewidth}bind def ! /xyfont{4096 add 64 div round 64 mul 4096 sub}def /xydt 0.01 def /xysdfont{4096 add 32 div round 32 mul 4096 sub}def /xydots{xywidth 1 setlinecap [xydt 2] 0 setdash}bind def /f /xyfont load def /fs /xysdfont load def! /xyCheckDir{dup 8 div 3 mul 3 -1 roll sub neg exch div 360 mul dup dup XYdirection sub 180 div round 180 mul XYdirection add dup 3 -1 roll sub abs 10 gt not{exch}if pop}def G! /xyrulth{26213 dimendiv pscorrect setlinewidth 0 setlinecap}bind def ! /gsavexy{gsave xypspt XYdirection rotate xywidth newpath 0 0 moveto}def /gchksavexy{gsave xypspt setupDirection xywidth newpath 0 0 moveto}def m! /xyswap{XYdirection 180 add /XYdirection exch def}def /xyline{gstartxy setupDirection rlineto xystroke}def ! /dash{exch gchksavexy xysegl XYdirection dup -90 lt{pop neg}{90 gt{neg}if}ifelse exch{neg}if 0 rlineto xystroke}def /stopper{gstartxy setupDirection 0 xysegl 2 div rmoveto 0 xysegl neg rlineto xystroke }def /d /dash load def /st /stopper load def! /solid{gstartxy xydash neg exch neg exch rlineto xystroke}def /dashed{gstartxy 2 copy dup mul exch dup mul add sqrt dup xysegl add xysegl 2 mul div round 2 mul 1 sub div [ exch dup ] 0 setdash neg exch neg exch rlineto xystroke}def /l /solid load def /dd /dashed load def! /dot{gstartxy 2 setlinecap [xydt 2] 0 setdash 1 0 rlineto xystroke}def /dotted{gstartxy 2 copy dup mul exch dup mul add sqrt dup 2 div round 1 add div 2 setlinecap [xydt 3 -1 roll] 0 setdash neg exch neg exch rlineto 0 0 rlineto xystroke}def /p /dot load def /dt /dotted load def! /cubic{gstartxy docubic} def /docubic{chkvalid {chkcubedge 8 -2 roll moveto curveto xystroke pop} {cleartomark grestore}ifelse}def /chkcubedge{2 copy 1.0 eq{0.0 eq{pop pop}{cubicedge}ifelse} {pop cubicedge}ifelse}def /bz /cubic load def! /dotcubic{gstartxy 1 setlinecap [xydt 2] 0 setdash docubic}def /dashcubic{gstartxy [5 5] 0 setdash docubic}def /bt /dotcubic load def /bd /dashcubic load def! /squine{gstartxy dosquine}def /dosquine{chkvalid {chksquedge 2 copy moveto xysq2cub curveto xystroke pop} {cleartomark grestore}ifelse}def /q /squine load defD! /chkvalid{2 copy lt{dup 1 gt{false}{true}ifelse}{false}ifelse}def ! /chksquedge{2 copy 1.0 eq{0.0 eq{pop pop}{squineedge}ifelse} {pop squineedge}ifelse}def /xysq2cub{xysq2cubit 6 1 roll xysq2cubit 6 1 roll 3 index 3 index xysq2cubit 6 1 roll xysq2cubit 6 1 roll pop pop}def /xysq2cubit{2 index 2 mul add 3 div}def ! /dotsquine{gstartxy 1 setlinecap [xydt 2] 0 setdash dosquine}def /dashsquine{gstartxy [5 5] 0 setdash dosquine}def /qt /dotsquine load def /qd /dashsquine load def! /xy4mul{8 copy 5 -1 roll mul 5 1 roll 6 -1 roll mul 6 1 roll 3 -1 roll mul exch 4 -1 roll mul 3 1 roll add 3 1 roll add exch 10 2 roll 7 -1 roll mul 7 1 roll 4 -1 roll mul 5 1 roll 4 -1 roll mul 4 1 roll mul add 3 1 roll add exch 3 -1 roll }def ! /xy44mul{4 copy 16 4 roll exch 3 1 roll 4 copy 12 4 roll xy4mul 12 4 roll xy4mul 12 -4 roll 4 copy 16 4 roll 8 4 roll xy4mul 12 4 roll xy4mul}def M! /cubicedge{10 2 roll exch 8 1 roll 3 -1 roll dup dup 9 2 roll 5 -1 roll dup dup 9 1 roll 8 3 roll 4 1 roll dup dup 5 3 roll dup dup 5 1 roll 3 -1 roll 18 -2 roll 2 copy 1 sub neg 4 1 roll 1 sub neg exch 4 1 roll xy444mul pop pop pop 13 1 roll pop pop pop 9 1 roll 10 1 roll pop 8 1 roll 7 1 roll 8 1 roll pop 5 1 roll 3 1 roll}def ! /xy444mul{4 copy 24 4 roll 12 -4 roll 16 4 roll 4 copy 16 4 roll xy44mul 20 8 roll xy44mul 12 -4 roll 4 -1 roll 7 1 roll exch 4 1 roll exch 6 -1 roll exch 4 2 roll 16 8 roll 8 4 roll 4 -1 roll 7 1 roll exch 4 1 roll exch 6 -1 roll exch 4 2 roll 8 4 roll 16 4 roll 8 4 roll 20 -4 roll exch 3 1 roll 4 copy 20 4 roll 4 copy 16 4 roll 4 copy 12 4 roll xy4mul 28 4 roll xy4mul 20 4 roll xy4mul 12 4 roll xy4mul}def ! /squineedge{8 2 roll exch 5 1 roll 3 -1 roll dup 6 2 roll 1 index exch 10 -2 roll 2 copy 1 sub neg 4 1 roll 1 sub neg exch 4 1 roll xy44mul 4 1 roll pop 5 1 roll 6 1 roll 3 -1 roll pop}def c! /xyshort{2 copy abs exch abs add xysegl .5 mul lt {pop pop grestore}{rlineto xystroke}ifelse}def s! /tipwidth{xywidth xynormwidth dup currentlinewidth exch div sqrt dup dup scale mul setlinewidth 1 setlinecap}def ! /halftip{tipwidth xysize 10 div 0 0 moveto -.25 0 3 -1 roll -2.5 mul 0 xysize 2 div neg dup .62 mul 2 div neg curveto}bind def ! /atip{gchksavexy halftip xystroke}def /btip{gchksavexy xyopp halftip xystroke}def /tip{gchksavexy gsave halftip stroke grestore xyopp halftip xystroke}def /t /tip load def /a /atip load def /b /btip load def@! /cmatip{gchksavexy halfcmtip xystroke}def /cmbtip{gchksavexy xyopp halfcmtip xystroke}def /cmtip{gchksavexy gsave halfcmtip stroke grestore xyopp halfcmtip xystroke}def /halfcmtip{tipwidth 0 0 moveto -.1333 0 .25 neg dup .125 3 -1 roll .25 curveto}bind def /ct /cmtip load def /ca /cmatip load def /cb /cmbtip load def2! /xyfscale{/xyfsize exch def}def /xyfsize{10}def /eu{-0.0551 0.0643 -0.0976 0.1386 -0.125 0.2188}def /cm{-0.105 0.0437 -0.1804 0.1380 -0.2 0.25}def /XY{-0.1753 0.0181 -0.3452 0.0708 -0.5 0.155}def /tipstart{3 -1 roll gchksavexy exch xyfscale tipwidth dup XYdict exch known{dup /xy eq{pop /XY}if}{pop /XY}ifelse XYdict exch get}def /tipend{halfxytip xystroke}def /halfxytip{1 1 6{pop xyfsize mul 6 1 roll}for 0 0 moveto curveto}def /A{tipstart D}def /B{tipstart C}def /C{xyopp D}def /D{exec tipend}def /AB{tipstart dup gsave exec halfxytip stroke grestore C}def ;! /Tip{exch gchksavexy /xyfsize{10}def tipwidth gsave dup XYdict exch known{dup /xy eq{pop /XT}if}{pop /XT}ifelse XYdict exch get dup halfTip stroke grestore xyopp halfTip xystroke}def /XT{360 32 div neg}def /Xt{-1 .31 mul 1 atan}def /ET{360 64 div 5 mul neg}def /Et{-1 .31 mul 1 atan}def /halfTip{exec rotate XY halfxytip}def /halfTtip{halfTip}def /Ttip{exch gchksavexy /xyfsize{10}def tipwidth gsave dup XYdict exch known{dup /xy eq{pop /Xt}if}{pop /Xt}ifelse XYdict exch get dup halfTtip stroke grestore xyopp halfTtip xystroke}def /tt /Tip load def /tT /Ttip load def! /halfturn{xysegl 2 div dup dup neg exch rmoveto 0 exch dup exch -180 -90 arc}bind def /aturn{gchksavexy halfturn xystroke}def /bturn{gchksavexy xyopp halfturn xystroke}def /ta /aturn load def /tb /bturn load def! /xysqll 231705 dimendiv def /squigl{gchksavexy xysqll dup neg 0 rmoveto 2 div dup dup neg dup 3 -1 roll 2 sqrt mul dup 5 1 roll 135 45 arcn dup 3 -1 roll -135 -45 arc xystroke}def /g /squigl load defk! /fullhook{0 xysegl 2 div dup -90 90 arcn}bind def /halfhook{xysegl 2 div dup 0 exch 180 90 arcn}bind def ! /ahook{gchksavexy fullhook xystroke}def /bhook{gchksavexy xyopp fullhook xystroke}def /hook{gchksavexy gsave halfhook stroke grestore xyopp halfhook xystroke}def /h /hook load def /ha /ahook load def /hb /bhook load defe! /xyqcirc{dup dup neg exch translate newpath dup neg 0 exch moveto 0 0 3 -1 roll -90 0 arc}bind def x! /circ{gstartxy 3 copy pop 2 copy cos mul 3 1 roll sin mul rmoveto 0 0 5 2 roll arc xystroke}bind def /o /circ load def! /circhar{gsave dup 3 gt{7 sub neg}if dup 3 eq{pop dup 2 sqrt -2 div mul}{dup 1 eq{pop dup 2 sqrt 2 div mul} {0 eq{dup}{0}ifelse}ifelse}ifelse 0 translate 3 1 roll circ grestore}bind def /c /circhar load def ! end end*tj??]wheader=color.proheader=color.pro4jDtGGcmr17X>Y>-pic7tReferenceManqualqXQ cmr12Kristo erH.RoseoR!", cmsy10hkrisrose@brics.dki2 K cmsy8TRossMoSore=hross@mpSce.mq.edu.aui2y&OtVVersion3.7 h1999/02/16imu*S^"t : cmbx9Abstract%o cmr9ThisbdoAcumen9tsummarisesthecapabilitiesoftheuX9Y +_-pic pac9k|ragefortypAesettinggraphsanddiagramsinTuAEX.F:oraLwgeneralin9troAductionaswellasav|railabilityinformationandTconditionsrefertotheUser'sGuide[14 ?].A}c9haracteristicofX9Y Uy-picisthatitisbuiltarounda#j cmti9kernel Ndrawinglanguage5whic9h*isaconcisenotationforgeneralTgraphics,e.g.,#XUps: SDict begin xyc end$5" cmmi9A0HB3c" {6.72375 0 360 o}xy-z" {38.5429 13.66325 l}xyq~ " {-2711 h}xyRc_" {p}xynz " {p}xy-z" {3433 10 /xy AB}xyG%w9asTdrawnbythe(X9Y 1-pickernelcoAde&ߤN cmtt9\xy(3,0)*{A};(20,6)*+{B}*\cir{}**\dir{-}X?*_!/3pt/\dir{)}*_!/7pt/\dir{:}X?>*\dir{>}\endxyIt9Visanobject-orien9tedgraphiclanguageinthemostlit-eralVsense:`objects'inthepictureha9veV`methoAds'describ-ingho9wtheytypAeset,3stretch,etc.However,thesyntaxisTratherterse.P9articularAYapplicationsmakeuseofextensionsthatenhance©thegraphiccapabilitiesofthek9erneltohandlesuc9hTdiagramsas*ps: SDict begin xyc end:gRound4 " {20.0 ox}xy4 " {17.9 ox}xyYSquareޒ&-" {0.0 16.75859 -6.95 -16.75858 6.94998 ov}xy渌33!ep˟渌 e33JXGBendGGޅ3232I3232:3232323232323232323232323232323232323232:v3232 E G32323232323232323232b鮟3232323232323232323232Gޅ3232I3232:3232323232323232323232323232323232323232:v3232gZ" {mark 0.0 0.0 46.2497 -46.2497 84.6323 77.54756 130.88199 31.29787 0.12698 0.44696 bz}xygZ" {mark 0.0 0.0 46.2497 -46.2497 84.6323 77.54756 130.88199 31.29787 0.55307 0.93512 bz}xyzמ]" {2496 10 /xy AB}xy#whic9hTwastypAesetby\xy*[o]=<40pt>\hbox{Round}="o"*\frm{oo},X+<5em,-5em>@+,X(46,11)*+\hbox{Square}="s" s,*\frm{-,},X-<5em,-5em>@+,"o";"s"**{}?*+\hbox{Bend}="b"*\frm{.},"o";"s"."b"**\crvs{-},"o"."b";"s"**\crvs{-}?>*\dir{>}\endxyusingTthe`curv9e'and`frame'extensions.AllWthisismadeaccessiblethroughtheuseoffeaturesthat+pro9videconvenientnotationsuchthatuserscanen-terspAecialclassesofdiagramsinanin9tuitiveform,e.g.,*S2theTdiagram+B7ups: SDict begin xyc endUgE" {mark 50.14008 -73.29996 15.18234 -43.44832 0.0 0.0 1.0 0.0708 q}xy)r;cmmi6y2sA#" {2131 10 /xy AB}xygI" {mark 50.14008 -73.29996 15.18234 -43.44832 0.0 0.0 0.0708 0.90125 q}xygF" {mark 50.14008 -73.29996 15.18234 -43.44832 0.0 0.0 1.0 0.90125 q}xy GbǤ" {0.01512 -0.0732 l}xy/^" {2324 10 /xy AB}xy/^" {34.51897 -25.23709 l}xy/^" {0.0327 -0.05577 l}xygF" {mark 100.82085 -36.64998 54.62184 -7.08963 0.0 0.0 1.0 0.06104 q}xy:真zxdI#'" {2451 10 /xy AB}xygJ" {mark 100.82085 -36.64998 54.62184 -7.08963 0.0 0.0 0.06104 0.92297 q}xygF" {mark 100.82085 -36.64998 54.62184 -7.08963 0.0 0.0 1.0 0.92297 q}xy(C%X“% cmsy9ZGYg8ŝ+9" {0.0 0.0 l}xy;ŝ5Sq8ŝA" {1024 10 /xy AB}xyg8ŝC9" {0.0 -24.0 l}xyg8ŝC9" {0.0 0.0 l}xyLG"" {0.0 0.0 l}xyP/U( pdG"" {3072 10 /xy AB}xydG"" {24.0 0.0 l}xydG"" {0.0 0.0 l}xygG%Xgks*" {0.0 0.0 l}xyd)96WfksA" {1024 10 /xy AB}xygksC9" {0.0 -24.50002 l}xygksC9" {0.0 0.0 l}xy5PJ>cY?{G+1" {0.0 0.0 l}xyP.rCgdoG+1" {3072 10 /xy AB}xydoG+1" {37.50201 0.0 l}xydoG+1" {0.0 0.0 l}xygoJ>cZu2w9asCtypAesetusingthe`matrix'featuresbytheVX9Y -picinput 2lines2\xymatrix{U\ar@/_/[ddr]_y\ar[dr]\ar@/^/[drr]^x\\L^&X\times_ZY\ar[d]^q\ar[r]_pN,(&X\ar[d]_f8\\L^&Y\ar[r]^g,&Zc9N} 2F:eatures%existforman9ykindsofinput;5hereisaknot2t9ypAesetTusingthe`knotsandlinks'feature:Oiύ:ps: SDict begin xyc end$g<" {mark 12.0 16.79993 3.0 23.0999 12.0 29.39987 0.0 0.0 q}xy$g<" {mark 12.0 16.79993 3.0 23.0999 12.0 29.39987 0.0 1.0 q}xy$g<" {mark 12.0 16.79993 3.0 23.0999 12.0 29.39987 1.0 1.0 q}xy$g>" {mark 12.0 29.39987 18.0 33.59985 24.0 29.39987 0.0 0.0 q}xy$g>" {mark 12.0 29.39987 18.0 33.59985 24.0 29.39987 0.0 1.0 q}xy$g>" {mark 12.0 29.39987 18.0 33.59985 24.0 29.39987 1.0 1.0 q}xy$g=" {mark 24.0 29.39987 33.0 23.0999 24.0 16.79993 0.0 0.0 q}xy$g@" {mark 24.0 29.39987 33.0 23.0999 24.0 16.79993 0.0 0.1517 q}xy$g@" {mark 24.0 29.39987 33.0 23.0999 24.0 16.79993 0.5485 1.0 q}xy$g=" {mark 24.0 29.39987 33.0 23.0999 24.0 16.79993 1.0 1.0 q}xy$g<" {mark 0.0 -8.39996 -18.0 4.19998 0.0 16.79993 0.0 0.0 q}xy$g<" {mark 0.0 -8.39996 -18.0 4.19998 0.0 16.79993 0.0 1.0 q}xy$g<" {mark 0.0 -8.39996 -18.0 4.19998 0.0 16.79993 1.0 1.0 q}xy$g=" {mark 0.0 16.79993 18.0 29.39987 36.0 16.79993 0.0 0.0 q}xy$gA" {mark 0.0 16.79993 18.0 29.39987 36.0 16.79993 0.0 0.69559 q}xy$gA" {mark 0.0 16.79993 18.0 29.39987 36.0 16.79993 0.83444 1.0 q}xy$g=" {mark 0.0 16.79993 18.0 29.39987 36.0 16.79993 1.0 1.0 q}xy$g=" {mark 36.0 16.79993 54.0 4.19998 36.0 -8.39996 0.0 0.0 q}xy$g=" {mark 36.0 16.79993 54.0 4.19998 36.0 -8.39996 0.0 1.0 q}xy$g=" {mark 36.0 16.79993 54.0 4.19998 36.0 -8.39996 1.0 1.0 q}xy$g=" {mark 24.0 8.39996 18.0 12.59995 12.0 16.79993 0.0 0.0 q}xy$gA" {mark 24.0 8.39996 18.0 12.59995 12.0 16.79993 0.0 0.29166 q}xy$gA" {mark 24.0 8.39996 18.0 12.59995 12.0 16.79993 0.70834 1.0 q}xy$g=" {mark 24.0 8.39996 18.0 12.59995 12.0 16.79993 1.0 1.0 q}xy$g=" {mark 24.0 16.79993 18.0 12.59995 12.0 8.39996 0.0 0.0 q}xy$g=" {mark 24.0 16.79993 18.0 12.59995 12.0 8.39996 0.0 1.0 q}xy$g=" {mark 24.0 16.79993 18.0 12.59995 12.0 8.39996 1.0 1.0 q}xy$g6" {mark 12.0 0.0 6.0 4.19998 12.0 8.39996 0.0 0.0 q}xy$g6" {mark 12.0 0.0 6.0 4.19998 12.0 8.39996 0.0 1.0 q}xy$g6" {mark 12.0 0.0 6.0 4.19998 12.0 8.39996 1.0 1.0 q}xy$g7" {mark 24.0 8.39996 30.0 4.19998 24.0 0.0 0.0 0.0 q}xy$g7" {mark 24.0 8.39996 30.0 4.19998 24.0 0.0 0.0 1.0 q}xy$g7" {mark 24.0 8.39996 30.0 4.19998 24.0 0.0 1.0 1.0 q}xy$g9" {mark 24.0 -8.39996 18.0 -4.19998 12.0 0.0 0.0 0.0 q}xy$g=" {mark 24.0 -8.39996 18.0 -4.19998 12.0 0.0 0.0 0.29166 q}xy$g=" {mark 24.0 -8.39996 18.0 -4.19998 12.0 0.0 0.70834 1.0 q}xy$g9" {mark 24.0 -8.39996 18.0 -4.19998 12.0 0.0 1.0 1.0 q}xy$g9" {mark 24.0 0.0 18.0 -4.19998 12.0 -8.39996 0.0 0.0 q}xy$g9" {mark 24.0 0.0 18.0 -4.19998 12.0 -8.39996 0.0 1.0 q}xy$g9" {mark 24.0 0.0 18.0 -4.19998 12.0 -8.39996 1.0 1.0 q}xy$g>" {mark 12.0 -16.79993 6.0 -12.59995 0.0 -8.39996 0.0 0.0 q}xy$g>" {mark 12.0 -16.79993 6.0 -12.59995 0.0 -8.39996 0.0 1.0 q}xy$g>" {mark 12.0 -16.79993 6.0 -12.59995 0.0 -8.39996 1.0 1.0 q}xy$g>" {mark 12.0 -8.39996 6.0 -12.59995 0.0 -16.79993 0.0 0.0 q}xy$gB" {mark 12.0 -8.39996 6.0 -12.59995 0.0 -16.79993 0.0 0.29166 q}xy$gB" {mark 12.0 -8.39996 6.0 -12.59995 0.0 -16.79993 0.70834 1.0 q}xy$g>" {mark 12.0 -8.39996 6.0 -12.59995 0.0 -16.79993 1.0 1.0 q}xy$g@" {mark 36.0 -16.79993 30.0 -12.59995 24.0 -8.39996 0.0 0.0 q}xy$g@" {mark 36.0 -16.79993 30.0 -12.59995 24.0 -8.39996 0.0 1.0 q}xy$g@" {mark 36.0 -16.79993 30.0 -12.59995 24.0 -8.39996 1.0 1.0 q}xy$g@" {mark 36.0 -8.39996 30.0 -12.59995 24.0 -16.79993 0.0 0.0 q}xy$gD" {mark 36.0 -8.39996 30.0 -12.59995 24.0 -16.79993 0.0 0.29166 q}xy$gD" {mark 36.0 -8.39996 30.0 -12.59995 24.0 -16.79993 0.70834 1.0 q}xy$g@" {mark 36.0 -8.39996 30.0 -12.59995 24.0 -16.79993 1.0 1.0 q}xy$gA" {mark 24.0 -25.19989 18.0 -20.99991 12.0 -16.79993 0.0 0.0 q}xy$gE" {mark 24.0 -25.19989 18.0 -20.99991 12.0 -16.79993 0.0 0.29166 q}xy$gE" {mark 24.0 -25.19989 18.0 -20.99991 12.0 -16.79993 0.70834 1.0 q}xy$gA" {mark 24.0 -25.19989 18.0 -20.99991 12.0 -16.79993 1.0 1.0 q}xy$gA" {mark 24.0 -16.79993 18.0 -20.99991 12.0 -25.19989 0.0 0.0 q}xy$gA" {mark 24.0 -16.79993 18.0 -20.99991 12.0 -25.19989 0.0 1.0 q}xy$gA" {mark 24.0 -16.79993 18.0 -20.99991 12.0 -25.19989 1.0 1.0 q}xy$gA" {mark 36.0 -16.79993 42.0 -20.99991 36.0 -25.19989 0.0 0.0 q}xy$gA" {mark 36.0 -16.79993 42.0 -20.99991 36.0 -25.19989 0.0 1.0 q}xy$gA" {mark 36.0 -16.79993 42.0 -20.99991 36.0 -25.19989 1.0 1.0 q}xy$g?" {mark 0.0 -25.19989 -6.0 -20.99991 0.0 -16.79993 0.0 0.0 q}xy$g?" {mark 0.0 -25.19989 -6.0 -20.99991 0.0 -16.79993 0.0 1.0 q}xy$g?" {mark 0.0 -25.19989 -6.0 -20.99991 0.0 -16.79993 1.0 1.0 q}xy$g?" {mark 12.0 -25.19989 6.0 -29.39987 0.0 -25.19989 0.0 0.0 q}xy$g?" {mark 12.0 -25.19989 6.0 -29.39987 0.0 -25.19989 0.0 1.0 q}xy$g?" {mark 12.0 -25.19989 6.0 -29.39987 0.0 -25.19989 1.0 1.0 q}xy$gA" {mark 36.0 -25.19989 30.0 -29.39987 24.0 -25.19989 0.0 0.0 q}xy$gA" {mark 36.0 -25.19989 30.0 -29.39987 24.0 -25.19989 0.0 1.0 q}xy$gA" {mark 36.0 -25.19989 30.0 -29.39987 24.0 -25.19989 1.0 1.0 q}xyG@92Thecurren9timplementationisprogrammedentirely2withinj\standardTuAEXando> logo10METAF9ONT",i.e.,usingTuAEX2macros(no\special*s)andwithfon9tsdesignedusing2METAF9ONT. OptionallyspAecial`driv9ers'makeitpAossi-2ble?toproAduceD9VI2 leswith`specials'forextragraphics2capabilities,Te.g.,using'- cmcsc10PostScript.-=Aacmr61ff[ A ß-:!q% cmsy6L|{Ycmr8BRICS,XComputerScience,AarhÎusUniversity(bld. 540),NyMunkegade,DK{8000AarhusC,Denmark. [-:yLMPCEX(Mathematicsdept.),MacquarieUnivÎersityJ,XNorthRyde,Sydney,AustraliaNSW2109. > "5-:1L(- cmcsc10PostScriptXisaregisteredTJrademarkofAdob75B.1 UnsuppGortedUUincompatibilitiesC.....75B.2 ObsoleteUUkernelfeatures񍍑........75B.3 ObsoleteUUextensions&features1....76B.4 ObsoleteUUloading֍............77B.5 CompilingUUv2-diagrams.........77CCommonTErrorsz77ReferencesZ77Indexޕ78!#ListffofFigures1  !", cmsy10hpGosiitions. ҍ...............82 ExampleUUhplaceis1H............103 hob8jectis.................124 hdecoriations...............165 KernelUUlibraryhdiriectionals......176 hciricles.x.................197 SyntaxUUforcurves.q@...........228 PlainUUhframeis.c.............259 BracketUUhframeis.׍............2510 Rotations,UUscalingsand ipsO......3111 TheUU38standardMacintoshpatterns.8 .3212 impGortingUUagraphicforlabelling...3413 hpathisFύ..................3914 harrowis..................4115 PastingUUdiagram.F............4416 htwoGcellisލ................45gweL17ePhgraphisǍ.................52 jeL18ePhknot-pieceiUUconstructionset.....62eL19ePknotD~crossingswithorientationsand ePlabGelUUpositions8t..............63eL20ePknotsjoins,withorientations,labGelsePandUUshiftsj................65eL21ePExtension[implementationreplacedbyePuseUUofhdriverispGecials..........69WReK4PSfile="kris.eps" llx=0 lly=0 urx=66 ury=86 rwi=660 &Kristo erUURoseRJRossUUMoGore4PSfile="ross.eps" llx=0 lly=0 urx=62 ury=84 rwi=620 "銍eKPrefaceeKThisreferencemanualgivesconcisedescriptionsofeKthe\moGdulesofXXY <\-pic,writtenbytheindividualau-eKthors.èPleasepdirectanyTU>'ExXnicalquestionorsug-eKgestion"forimprovement"directlytotheauthoroftheeKcompGonent<;inquestion,A@preferablybyelectronicmaileKusingtheindicatedaddress. CompletedoGcumentseKandprintedtechnicaldoGcumentationorsoftwareiseKmostUUuseful. X썒eKTheyn rstpartdoGcumentstheyjXY n-pickernelwhicheKisalwaysloaded. TheremainingpartsdescribGetheeKthreekindsofoptions:8.': cmti10extensionsinpartIGIextendeKthekernelgraphiccapabilities,:fe}'aturesDzinpartIGIIeKprovideTspGecialinputsyntaxforparticulardiagrameKtypGes,oand#driversinpartIVmakeitpGossibletoeKexploitTtheprintingcapabilitiessuppGortedbyDVIeKdrivercprograms.F*oreachoptionitisindicatedhoweKit,shouldbGeloaded.]dTheappendicescontainanswerseKtoalltheexercises,A7asummaryofthecompatibil-eKity^withversion2,`andlistsomereasonswhyZXY A^-piceKmightUUsometimeshaltwithacrypticTU>'ExXerror.eKLicense.XY-picIisfreesoftwareIinthesensethatiteKisUUavqailableunderthefollowinglicenseconditions:"pps: SDict begin xyc endǍY2" {0.0 89.88191 -18.49307 -89.88191 18.49306 ov}xyUXY -pic:qGraphsUUandDiagramswithTU>'ExX ፍKc. s1991{1998 Kristo erUUH.Rose  hcEK 1994{1998 RossUUMoGore#eKThe.XY2-pic2packqageisfreesoftware;6youcanredis-eKtributeQitand/ormoGdifyitunderthetermsoftheeKGNUsGeneraltPublicLicenseaspublishedbytheF*reeeKSoftware=]F*oundation;EZeitherversion2oftheLicense,eKorUU(atyouroption)anylaterversion.eKTheXY D-picpackqageisdistributedinthehopGethateKitwillbGeuseful,Obutwithout\anywarr}'anty};withoutLWK3*tj??]even/theimpliedwarrantyofmer}'chantability笲or t- nessforap}'articularpurpose[.wSeeutheGNUuGeneralPublicUULicenseformoredetails.Y*oushouldhavereceivedacopyoftheGNUGen-eralXIPublicLicensealongwiththispackqage;ifnot,write{totheF*reeSoftware{Foundation,RInc.,675{MassAve,UUCambridge,MA02139,USA.InpracticethismeansthatyouarefreetouseXY -pic?foryourdoGcumentsbutifyoudistributeanypartn@ofnthenyouareobligedtoensurethatthefullsourcetextOofKXY aO-picisavqailabletothem(thefulltextofthelicenseOinthe le/ cmmi10X)andYforhdimenisionsOandlowerOcaselikexandy(forhfactoris.#8PartffI0Nq cmbx12The KernelꨍVers.3.7bCyKristo erH.Rosehkrisrose@brics.dkiuTAfter\givinganoverview\ofthe\XY -picenvironmentin8x1,qSthispartdoGcumentthebasicconceptsof8XY -pictureconstructioninx2,includingthemaintained`graphicstate'.+Thefollowingsectionsgivethepre-cisesyntaxrulesofthemainXY-picconstructions:the\pGositionlanguageinx3,^theob8jectconstructionsinx4, Bandthepicture`decorations'inx5.SUx6presentsthekernelrepGertoireofob8jectsforuseinpictures;x7mdoGcumentstheinterfacetomXY -picoptionslikethestandardUU`feature'and`extension'options.Detailsfoftheimplementationarenotdiscussedhere3butinthecompleteTU>'ExXnicaldoGcumenta-tionUU[15 ]. q荍1TheǨX#՟YY-picffimplementationThisCsectionbrie ydiscussesthevqariousaspGectsofthe~present~}XY -pickernelimplementationofwhichtheuserUUshouldbGeaware.^Z1.1LLoading&aX1"Yv-picXY -picPiscarefultosetupitsownenvironmentinor-der0tofunctionwithalargevqarietyofformats.!XF*oreKmostUUformatsasinglelinewiththecommand<\input?xyeKinKzthepreambleofadoGcument leshouldloadthe eKkernel(see`integrationwithstandardformats'bGeloweKfor.vqariationspGossiblewithcertainformats,dinpar-eKticularUUL5ffA͉TU>'ExX[9]).eKTherestofthissectiondescribGesthingsyoumusteKconsider/ifyouneedtouse+XY c/-pictogetherwithothereKmacro%packqages,,styleoptions,,orformats.u6ThelesseKyour<|environmentdeviatesfromplainTU>'ExXtheeas-eKier:itshouldbGe. ConsulttheTU>'ExXnicaldocumenta-eKtion[15 ]fortheexactrequirementsforotherde ni-eKtionsUUtocoGexistwithUQXY U-pic.?eKPriv\racy:XY-picwillwarnabGoutcontrolsequenceseKityrede nes|thusyoucanbGesurethatthereareeKnoPcon ictsbGetweenLXY $P-pic-de nedPcontrolsequences,eKthoseofyourformat,һandothermacros,providedyoueKloadUQXY U-picUUlastandgetnowarningmessageslikeXy-pic?Warning:`[:::h'?redefined.eKIn|generalthe|XY-pickernelwillcheckallcontrol eKsequencesitrede nesexc}'eptвthat(1)generictem-eKpGorarieslike\nextarenotchecked,(2)prede nedeKfontidenti ers(seex1.3)areassumedintentionallyeKpreloaded,andFF(3)someofthemoreexoticcontroleKsequenceBnamesusedinternally(like@{-}6)areonlyeKcheckedUUtobGedi erentfrom\relax.eKCategorycoQdes: ThesituationiscomplicatedbyeKthe exibilityofTU>'ExX'sinputformat..TheculpritiseKthen`categorycoGde'conceptofTU>'ExX(cf.[6,p.37]):eKwhenaloadeda XY -picrequiresthecharacters \{}%a(theeK rstBisaspace)tohaveBtheirstandardmeaningandalleKotherYprintablecharacterstohavethesamec}'ategoryeKas2when,XY q)-picwillb}'eused|inparticularthismeanseKthat?(1)youshouldsurroundtheloadingof;XY?-piceKwithF\makeatother...-\makeatletterFwhenload-eKingoqitfromwithinaL5ffA͉TU>'ExXpackqage,uandthat(2)omXY q-eKpicxshouldbGeloadedafter lesthatchangecategoryeKcoGdesJlikethegerman.stythatmakes" active.8SomeeKstylesa\requirethatyouresetthecatcoGdesforeveryeKdiagram,{e.g.,with@french.styyoushouldusetheeKcommandUU\english0bGeforeUUevery\xymatrix2:.eKHowever, eithispGossibleto`repair'theproblemincaseeKanyofthecharacters#$&'+-.<=>`AchangecategoryeKcoGde:eKff2 "H\xyresetcatcodes"ff2 -willUUloadthe lexyrecat.tex(version3.3)todoit.fff[ J= "5-:2LBNFmismthenotationfor\meta-linguisticformÎulae" rstusedby[10]todescrib'ExX[9]packqagebyxy.sty"C.썑xyidioms.tex: Thisincluded leprovidessomecommonidiomswhosede nitiondepGendsontheusedformatɮsuchthatɪXYI-piccanuseprede neddimen-sionIregistersetc.andyetstillbGeindependentoftheformatunderwhichitisused.OThecurrentversion(3.4)handlesplainTU>'ExX(version2and3[6]),AU>'M S-TU>'ExXd(version2.0and2.1[16 ]),ЕL5ffA͉TU>'EX(version2.09[8]and'2"[9]),AU>'M S-L5ffA͉TU>'ExX(version1.0,1.1[2],and1.2),andUUeplain(version2.6[3])^3|s.!{;xy .st9y: If}3youuseL5ffA͉TU>'ExXthenthis lemakesitpGossibletoloadXY-picasa`packqage'usingtheL5ffA͉TU>'ExX2"[9]UU\usepackagecommand: Nff2 '\usepackageUU[Rhoptioni,?...] ?{xy}4*ff2OwherethehoptioniswillbGeinterpretedasifpassedto\xyoptionUU(cf.x7). 4(Thexonlyexceptionstothisaretheoptionshav-ingthesamenamesasthosedriverpackqageoptionsofpartIV,whichappGearincf.[4,table11.2,p.317]orotheL5ffA͉TU>'ExX2" I5graphics7hbundle.Thesewillauto-maticallyBinvokeanybackendextensionrequiredtobGestl'ExX2" behaviour.}(Thismeansthat,"e.g.,[dvips]and[textures]canbGeusedasoptionsStothe\documentclasscommand, RwiththenormalUUe ect.)Theր lealsoworksasaL5ffA͉TU>'ExX2.09[8]`styleop-tion'althoughyouwillthenhavetoloadoptionswiththeUU\xyoption5ꏲmechanismUUdescribGedinx7.썍1.2Logo,version,andmessageseLoadingPXY 3T-picTprintsabannercontainingtheversionandvauthorofthekernel;ksmallprogressmessagesareprintedLwheneachma8jordivisionofthekernelhasbGeenUloaded.Anyoptionsloadedwillannouncethem-selfUUinasimilarfashion.IfzyourefertozXY -picinyourwrittentext(pleasedo 2 V8W^\) 2thenyoucanusethecommand\Xy-pic &totypGesetthe\XY -pic"logo.aTheversionoftheker-nel IistypGesetby\xyversionandthereleasedateby\xydate(asfoundinthebanner).,Bytheway*, theXY -pic"Lname[^4 _originatesfromthefactthatthe rstversionwaslittlemorethansuppGortfor(x;y[ٲ)coordi-nates8inacon gurablecoGordinatesystemwherethemain)ideawasthatallopGerationscouldbespeci edinamannerindepGendentoftheorientationoftheco-ordinates.GThis^propGertyhasbeenmaintainedexceptXeKthatnowthepackqageallowsexplicitabsoluteorien- eKtationUUaswell.@ieKMessages'thatstartwith\Xy-pic#Warning"areeKindicationsthatsomethingneedsyourattention;2aneK\Xy-pic#'ExXbGecauseoJXY N-picdoeseKnotUUknowhowtoproGceed.->eK1.3%KFontseKThevXY Lz-piczkernelimplementationmakesitsdrawingseKusingUU vespGeciallydesignedfonts:@3eKL͉ffNfd͟ fffdF*ontCYy fff\VCharacters ffN&Default۟ ffffN͟ ff͟fd\xydashfontCYy ffodashes ffN&xydash10۟ ff ͟ ff͟fd\xyatipfontCYy ffNQarrowUUtips,uppGerhalf ffN&xyatip10۟ ff͟ ff͟fd\xybtipfontCYy ffOarrowUUtips,lowerhalf ffN&xybtip10۟ ff͟ ff͟fd\xybsqlfontCYy ffMU7quarterUUcirclesfor ffN&xybsql10۟ ff͟ ffCYz ff\hoGoksUUandsquiggles ff۟ ff͟ ff͟fd\xycircfontCYy ffT&1=8UUcirclesegments ffN&xycirc10۟ ffffNeKThe# rstfourcontainvqariationsofcharactersina eKlargesnumbGerofdirections,zthelastcontains1/8cir-eKcleUUsegments.+>eKNote: ThedefaultfontsarenotpartoftheXY 8-piceKkernel~sp}'eci cationc:\theyjustsetastandardforwhateKdrawing[capabilitiesshouldatleastbGerequiredbyaneGXYK-pic1implementation.I[ImplementationsexploitingeKcapabilitites,ofparticularoutputdevicesareinuse.eKHencec9thefontsareonlyloadedbyc5XY 9-picifthecon-eKtrolsequencenamesareunde ned|thisisusedtoeKpreloadZ?thematdi erentsizesorpreventthemfromeKbGeingUUloadedatall.eK1.4%KAllo`cationseKOne nalthingthatyoumustbGeawareofisthatXY -eKpicalloGcatesasigni cantnumbGerofdimensionregis-eKtersandsomecounters,(tokenregisters,andbGoxreg-eKisters,in\ordertorepresentthestateanddocomputa-eKtions.oTheOcurrentkernelalloGcates4counters,P28di-eKmensions,g2bGoxregisters,4tokenregisters,g1readeKchannel,Hand1writechannel(whenrunningundereKL5ffA͉TU>'ExX;Ensome={otherformatsuseslightlymorebGecauseeKstandard^generictempGorariesareused)./OptionsmayeKalloGcatefurtherregisters(currentlyloadingevery-eKthingloads-o6dimen-,cv3toks-,1bGox-,and9count-eKregistersUUinadditiontothekernelones).fff[ J= "5-:3LTheX`v2'featureinÎtro "5-:4LNoXdescriptionofaTAEMXprogramiscompletewithoutanexplanationofitsname.LWK5٧*tj??gw2PictureffbasicsThebasicconceptsinvolvedwhenconstructingXY3- picturesllarepGositionsandob8jects,andhowtheycom-bineUUtoformthestateusedbythegraphicengine.Theb@generalstructureofanb'ExXusersmaysubstituteUU\begin{xy};*...\end{xy}2U \whereX]istheTU>'ExXIdimensiondistancerightXY B-picture(0?hasco-ordinates(<0mm,0mm>3h,\of(course).%ThezeropGositionofֱthe֭XY V-picturedeterminesthebGoxproducedbythe\xy...\endxy[commandtogetherwiththefourpa-rameters[Xmin ,XmaxA̲,Ymin,and[Ymax$'setsuchthatallJtheob8jectsinthepictureare`contained'inthefollowingUUrectangle:9A|ps: SDict begin xyc endǍ1" {0.0 71.16487 -34.1348 -36.95503 42.68724 ov}xyn O!cmsy7ޟ I0ܟ" {-21.37503 8.55159 dt}xy-*TU>'ExXUUreferencepGointlnn՟" {24.0 9.60004 dt}xyn՟" {-36.98839 0.0 l}xyn՟" {-1024 10 /xy AB}xyv2 wXminׇ" {71.13152 0.0 l}xyׇ" {3072 10 /xy AB}xy: wXmaxǍܟ"$" {0.0 -34.14313 l}xyܟk" {1024 10 /xy AB}xyܟ2ݵYminǍܟR3" {0.0 42.67891 l}xyܟ" {-3072 10 /xy AB}xyܟYmax1wherezthedistancesfollowthe\upandright>0"principle,Se.g.,theSindicatedTU>'ExXreferencepGointhascoGordinatesڵ< Xmin ,0pt>+ڪwithinڵtheڱXY Z-picture.ThezeroqqpGositiondoesnothaveqqtobecontainedinthepic-ture,bbut_Xmin䂸$~Xmax^^asUUreferencepGoint.2.2ObjectsuTThesimplestformofputtingthingsintothepictureisq9to`drop'anobje}'ctdatapGosition.sAnob8jectislikeamTU>'ExXbGoxexceptthatithasageneralEdge-aroundits referencepGoint|inparticularthishastheextents(i.e.,Bitڽisalwaysڽcontainedwithin)thedimensionsL,RDz, U,andD,;awayfromthereferencepGointineachofthefourdirectionsleft,right,up,anddown.oOb-jects\ areencoGdedinTU>'ExXboxesusingtheconventiongweKthattheTU>'ExXreferencepGointofanob8jectisatitsleft eKedge,Sthus shifted< `(L,0pt>`ײfromthecenter|soaeKTU>'ExX)bGoxmaybGesaidtobearectangularob8jectwitheKL=0pt.qHereUUisanexample:&2dps: SDict begin xyc endǍ32" {0.0 42.65114 -14.23187 -28.48038 22.75652 ov}xygnn՟" {-28.48038 0.0 dt}xyz8 Lڀ" {42.65114 0.0 dt}xyv RǍ3ϟ;\" {0.0 -14.23187 dt}xyT#DǍ3ϟ>U" {0.0 22.75652 dt}xyq7U-*TU>'ExXUUreferencepGointlcBn՟" {24.0 9.60004 dt}xy"weKThe{ob8jectshownhasarectangleedgebutothersareeKavqailable@eventhoughthekernelonlysuppGortsrect-eKangleandcircleedges.AItisalsopGossibletouseentireeGXYK-pictures'asob8jectswitharectangleedge,00 astheeKreferenceY|pGoint,ZL=Xmin ,R˲=XmaxX,D!=Ymin#_,eKand>Uc=LYmax\..Thecommandsforob8jectsarede-eKscribGedUUinx4.reK2.3%KConnectionseKBesideshavingtheabilitytobGedroppedatapositioneKinOapicture,allob8jectsmaybGeusedtoc}'onnect'theeKtwoZcurrentob8jectsofthestate,,i.e.,pandc.1F*oreKmostgob8jectsthisisdoneby` lling'thestraightlineeKbGetween6thecenterswithasmanycopiesaswill teKbGetweenUUtheob8jects:>7vJps: SDict begin xyc end&8O \cmmi5p" {6.0 0 360 o}xyc4" {0.0 9.0 -4.0 -9.0 4.0 ov}xy43" {155.89508 38.97359 dd}xyˍc3232)3232Vv3232323232323232Vg3232?J׍3232323232323232323232325׍32323232323232323232323232c3232)3232Vv3232323232323232Vg323284mT}E֠" {-8.53021 0.0 dt}xy]UݳL4֠" {5.69609 0.0 dt}xyIߟUR֠3" {0.0 -5.69609 dt}xy(v.D֠xD" {0.0 8.53021 dt}xyc#U53232y3232Vv3232323232323232Vg3232?c׍323232323232323232323232׍323232323232323232323232323232y3232Vv3232323232323232Vg3232z\ڏ" {-8.53021 0.0 dt}xyEGLڏ" {5.69609 0.0 dt}xy/EGRڏ񍍒GQ3" {0.0 -5.69609 dt}xyjƟ`Dڏ񍍒GQxD" {0.0 8.53021 dt}xysiUyL3232{>ɍ3232Vv3232323232323232Vg3232?yγ׍323232323232323232323232;՟׍32323232323232323232323232yL3232{>ɍ3232Vv3232323232323232Vg3232ԟL(z[" {-8.53021 0.0 dt}xy{34L;ԟ[" {5.69609 0.0 dt}xy4R[3" {0.0 -5.69609 dt}xy D[xD" {0.0 8.53021 dt}xyßU j*3232k3232Vv3232323232323232Vg3232?j׍323232323232323232323232x~%׍32323232323232323232323232j*3232k3232Vv3232323232323232Vg3232p$;jD5n" {-8.53021 0.0 dt}xyl$$Lx~$n" {5.69609 0.0 dt}xysϟ$Rnōr3" {0.0 -5.69609 dt}xyof4DnōrxD" {0.0 8.53021 dt}xyp*=UsZl3232[i3232Vv3232323232323232Vg3232?ZSS׍323232323232323232323232hu׍32323232323232323232323232Zl3232[i3232Vv3232323232323232Vg3232aAt*Z^/" {-8.53021 0.0 dt}xy\fӟLht^/" {5.69609 0.0 dt}xycSR^/cA3" {0.0 -5.69609 dt}xy`1D^/cAxD" {0.0 8.53021 dt}xy`lcϧUݍJ<3232L3232Vv3232323232323232Vg3232?J׍323232323232323232323232Yş׍32323232323232323232323232J<3232L3232Vv3232323232323232Vg3232QğfJ՟M" {-8.53021 0.0 dt}xyL#LYğM" {5.69609 0.0 dt}xySoRMSP3" {0.0 -5.69609 dt}xyPtDMSPxD" {0.0 8.53021 dt}xyPUG:3232'ExXcommandswhichaddeKtotpictures.zMostsuchcommandsareprovidedbyeKtheCvqarioususerGzoptionsd(cf.x7)|onlyafewarepro-eKvidedwithinthekerneltofacilitateprogrammingofeKsuchUUoptions(andusermacros)asdescribGedinx5.eK2.5%KThe&aX1"Yv-picstateeKFinally0wesummarisetheuser-accessiblepartsoftheeGXYK-pictureǦstateoftwoǦpGositionstogetherwiththeeKlastob8jectassoGciatedwitheach:thepr}'evious!,%}p,iseKthe_pGosition< P\XpR, ﮵YpR>with_theob8jectLpR,?!Rp,Dp,eKUpR,(Edgep,andthecurr}'entز,c,isthepGosition< >Xc,eKYc> 3withUUtheob8jectLc,Rc,Dc,Uc,Edgec. F5eKF*urthermore,XY-pic]hasacon gurablec}'arte-eKsian:rc}'oordinatesystem 'ɲdescribGedcfbyanorigineKpGosition/< oX1t}\cmti7originm,~Yoriginm>#gand/twob}'ase vectorsLWK6M*tj??gw<Xxbase,筵Yxbase>ܲand/<,XybaseN,KYybaseN>zaccessed/bythe usualUUnotationusingparentheses:{dE(Bx,?y[) ]P=$n<#dkXorigina+8xXxbase+yXybase",#dkYorigina+8xYxbase+yYybase">This޺isexplainedinfullwhenweshowhowtosetthebaseUUinnote3dofx3. IZFinally^typGesettingaconnectionwillsetupa\placementǦstate"forreferringtopGositionsontheconnection9\thatisaccessedthroughaspGecial? po-sitionvconstruction;thisisalsodiscussedindetailinx3.ThewXY {-pic{stateֲconsistsofalltheseparameterstogether. /TheyxareinitialisedtozeroexceptforXxbasenȲ=Yybasef=1mm.The\edgesarenotdirectlyavqailablebutpGointsonthe?edgesmaybGefoundusingthedi erenthcorneriformsUUdescribGedinx3.ItTispGossibletoinsertan`initial'pieceofhposihdecoriJatthestartofeveryJXY ʱ-picturewiththedec-laration ff2 F\everyxy={}htextiUU}I\ff2This=willactasifthehtextiwastypGedliterallyrightafterGeach\xycommand,parsingtheactualcontentsasfifitfollowsthis{thusitisrecommendedthathtexti?hastheformhpGosi, .2s,<0pt>?,(0,0),andD;/0pt/"gisD;di erentfromtheoth-ers?Notes؍3a.Whendoingarithmeticwith+{and-thentheresultingxjcurrentob8jectinheritsthesizeofthehcoGordi,i.e.,theRrightargument|thiswillbGezeroUUifthehcoGordiisahvectori.̼Exercise2: How#doyousetctoanob8jectthesame{sizeasthesaved{ob8ject"ob"@butmoved<?X,ߵY8>x?gweK3b.Skewing{^using!qjustmeansthatthereference eKpGoint ofcismovedwithaslittlechangetotheeKshapGeoftheob8jectaspossible,$i.e.,theedgeofceKwillQ\remaininthesameloGcationexceptthatiteKwillgrowlargertoavoidmovingthereferenceeKpGointUUoutsidec.OeKExercise3: WhatpdoGesthehposi...!R-Ljdo?eKBug:tTheresultof! 폲isalwaysarectanglecur-eKrently*.0eK3c.0A+hpGosi+c}'oversanotherifitisarectanglewitheKsizesucientlylargethattheotheris\under-eKneath".[UThe/.[opGeration/\extends"ahpositoeKcover*fanadditionalone|thereferencepGointofceKisMnotmovedMbuttheshapGeischangedtoarect-eKangleUUsuchthattheentirepob8jectiscovered.QeKBug:lnon-rectangular(ob8jectsare rst\trans-eKlated"]intoarectanglebyusingadiagonaleKthroughb@theob8jectasthediagonaloftherect-eKangle.eK3d.ThekopGerations:and::Wsettheb}'ase,3usedforeKhcoGordiinatesnhavingtheform(x,?y[)ֲ.#The: 9op-eKeration^willset<Xoriginm, /Yoriginm>to^p,a<Xxbase,eKYxbase>todcDorigin0,Kand< 'aXybaseN,YybaseN>toeK<HlfYxbase,ʵXxbase>(thisensuresthatitisausualeKsquareecoGordinatesystem). The::J4operationeKmay thenbGeusedafterwardstomakenonsqareeKbasesAbyjustsettingyb}'ase5toc֍originIԲ.7WHereeKarerWtwoexamples: rstly0;<1cm,0cm>:E䊲setstheeKcoGordinateUUsystem1h',|ps: SDict begin xyc end,n:" {28.45274 0.0 l}xy:" {3072 10 /xy AB}xyǍp" {0.0 28.45274 l}xyp-" {-3072 10 /xy AB}xy]origin=xbase$mybase7Q@(1,1)p-" {-28.45274 0.0 dt}xyǍ:" {0.0 -28.45274 dt}xyeKwhile y<1cm,.5cm>;<2cm,1.5cm>:<1cm,1cm>::eKde nesKHe&ps: SDict begin xyc endn" {-28.45276 28.45276 dd}xy̟" {-2048 10 /xy AB}xy- ybase jbAefore H::ǍWR%" {28.45276 28.45276 l}xyWz" {4096 10 /xy AB}xyǍ;%" {0.0 14.22638 l}xy;%-" {-3072 10 /xy AB}xyMj>%origin썍Zxbasem0LybaseS9]ǁ(1,1)Ǎ;%" {-28.45276 -28.45276 dt}xyǍWR%" {0.0 -14.22638 dt}xyyeKwhere,4ineachcasetheisat0l1,4nthebasevectorseKhaveUUbGeendrawnandtheisat(1,1)F.QeKWhen5`workingwithcartesiancoGordinatestheseeKthreeUUspGecialhfactorisareparticularlyuseful:_eKff2 *ˍ\halfroottwoK0:70710678 K1K&fes2 )PpHPfeE2 \partroottwoK0:2928932218 l1l&fes2PpPfeE2\halfrootthreeK0:86602540 K1K&fes2 )PpHPfeE3SeKff2 eKMore(canbGede nedusing\defLD(or\newcommand eKinUUL5ffA͉TU>'ExX).LWK75*tj??ځ> ffffd TQղSyntax\ActionX-ffd m͍QոhpGosiCI]!d 3hcoGordi\c hcoGordiiJ\jd 3hpGosiUU+hcoordi\c hpGosi5+8hcoGordi"1ɟ^3aJ\jd 3hpGosiUU-hcoordi\c hpGosi58hcoGordi"1ɟ^3azJ\jd 3hpGosiUU!qǸhcoordi\c hpGosithenUUskew^3b ߵcbyhcoGordiJ\jd 3hpGosiUU.qǸhcoordi\c hpGosibutUUalsocovering^3c øhcoGordiJ\jd 3hpGosiUU,hcoordi\c hpGosithenUUc hcoGordiJ\jd 3hpGosiUU;hcoordi\c hpGosiUU,UUswappandc,c hcoGordiJ\jd 3hpGosiUU:qǸhcoordi\c hpGosiUU,UUsetbase^3d C,c hcoGordiJ\jd 3hpGosiUU::qǸhcoordi\c hpGosiUU,UUyb}'aseP c8origin',UUc hcoGordiJ\jd 3hpGosiUU*hob8jecti\c hpGosiUU,UUdrop^3f Hhob8jectiJ\jd 3hpGosiUU**hob8jecti\c hpGosiUU,UUconnect^3g Qusinghob8jectiJ\jd 3hpGosiUU?qǸhplacei\c hpGosiUU,UUc hplacei^3hJ\jd 3hpGosiUU@hstackingi\c hpGosiUU,UUdohstackingi^3oJ\jd 3hpGosiUU=hsavingi\c hpGosiUU,UUdohsavingi^3pQոhcoGordiCI]!d 3hvectori\hpGosiUUishvectoriwithzerosize J\jd 3hemptyijqc\reuseUUlastc(donothing)J\jd 3p\pJ\jd 3xjqy\axisUUintersection^3k Wwith~fe [۟gpciJ\jd 3shdigitijqs{khnumbGeri}\stack^3o QpGositionUUhdigitiorhnumbGeribelowthetopJ\jd 3"i`0hidi"\restoreUUwhatwassaved^3p ߲ashidiearlierJ\jd 3{lhpGosiUUhdecori}\theUUcresultingfrominterpretingthegroup^3lQոhvectoriCI]!d 30\zero J\jd 3\absoluteJ\jd 3\absoluteUUwithequaldimensionsJ\jd 3(lhfactoriUU, ꧸hfactoriUU)\inUUcurrentbase^3diJ\jd 3aUU( ꧸hnumbGeriUU)\angleUUincurrentbase^3eJ\jd 3hcorneri\fromUUreferencepGointtohcorneriofcJ\jd 3hcorneriUU( ꧸hfactoriUU)\TheUUhcornerimultipliedwithhfactoriJ\jd 3/lhdirectioniUUhdimeni/\vectorUUhdimeniinhdirectioni^3miQոhcorneriCI]!d 3LUUj qRUUjDUUjU\o set^3n ߲toUUleft,right,down,upsideJ\jd 3CLUUj qCRUUjCDUUjCUUUjC\o set^3n ߲toUUcenterofside,truecenterJ\jd 3LDUUj qRDUUjLUUUjRU\o set^3n ߲toUUactualleft/down,...cornerJ\jd 3EUUj qP\o set^3n ߲toUUnearest/propGortionaledgepointtopzQոhplaceiCI]!d 3<UUhplaceijq>hplacei\shave^3h (0)/(1)UUtoedgeofp/c,fڧ 0=1J\jd 3(lhfactoriUU) ꧸hplacei\fڧ hfactorizJ\jd 3hslidei\pickUUplace^3h ߲andapplyhslidei@4J\jd 3!q{ ĸhpGosi}Rhslidei\intercept^3j HwithUUlinesetupbyhpGosiandapplyhslidei@4QhslideiCI]!d 3/lhdimeniUU/\slide^3i hdimeniUUfurtheralongconnectionJ\jd 3hemptyi\noUUslideffdRFigureUU1:qǸhpGosiitions.LWK8 Q*tj??X3e.Anangle^ }inXYH-picisthesameasthecoGor- dinatepair( cos z,sin z) ~where mustbGeanintegerinterpretedasanumbGerofdegrees.UThustheиhvectoria(0)isthesameas(1,0)Eanda(90)asUU(0,1)F,UUetc.8T3f.T*odr}'opjanhob8jectiatcwith* meanstoactu-allyy\physicallytypGesetitinthepicturewithref-erenceUpGositionatc|howthisisdonedependsonz@thehob8jectiinquestionandisdescribGedindetailu inx4.TheintuitionwithadropisthatittypGesetssomethingat<Xc, R޵Yc> andsetstheedgeofUUcaccordingly*.3g.S8Thec}'onnectopGeration**0will rstcomputeanumbGer.ofinternalparametersdescribingthedi-rectionKfromptocandthentypGesetsaconnection lledwithcopiesofthehob8jectiasillustratedin؎x2.3.qTheexactdetailsoftheconnectionde-pGendinx4.Theintuitionwithaconnectionis6thatittypGesetssomethingconnectingpandcandUUsetsthe? ꧸hpGosioperatorupaccordingly*.3h.qUsingʱ? _willʱ\pickaplace"alongthemostrecentconnectionR@typGesetwith**:.hWhatexactlythismeans@isdeterminedbytheob8jectthatwasusedfortheconnectionandbythemoGdi ersdescribedinUUgeneraltermshere.*The\shave"moGdi ersinahplacei,5<Kand> ,changethedefaulthfactori,f,andhowitisused,byv`moving'thepGositionsthatcorrespondto(0)and(1)빲(respGectively):Theseareinitiallysetequal2topandc,)butshavingwillmovethemto}thepGointontheedgeofpandcwheretheconnectionD\leaves/enters"them,{andchangethedefaulti=f|̲asindicated.#WhenoneendhasalreadybGeenZshavedthusthensubsequentshaveswillcor-respGond toslidingtheappropriateposition(s)aTU>'ExX\jot(usuallyequalto3ptٲ)furthertowardstheˋotherendoftheconnection(andpastit).CFi-nallyAthepickU~actionwillpickthepGositionlocatedtheQsfractionfeofthewayQsfrom(0)bݲto(1)wherefڧ=0.5difUUitwasnotset(by<R,>,orexplicitly).AllǦthisisprobablybGestillustratedwithsomeexamples: eachr in gure2istypGesetbyasequenceoftheformp; c**@{.}**?0'hplacei*{\oplus}'(where]weindicatethe?hplaceiineachcase.q(W*eUUalsogiveexamplesofhslideis.)8T3i.A1Thslidei1]willmove1]thepGositionadimensionfur-ther0Halongtheconnectionatthepicked0HpGosition.F*or,straightconnections(theonlyoneskernel(XY ),-pic`provides)thisisthesameasaddingavectorXeKinMthetangentdirection,i.e.,? mL:::›/A/isMthesame eKasUU? ?:::I+/"CA/?.^eK3j.eKThis2QspGecialhplacei ndsthepointwheretheeKlast connectioninterceptswiththelinefrompeKtocassetupbythehpGosi,thususuallythiswilleKhavetheform!{ hcoGordi;?hcoordi}^5 p,0forexample,eKBug:oOnlyPworksforstraightarrowsatpresent.N8eK\xy?<1cm,0cm>:H(0,0)*=0{+}="+"?;H(2,1)*=0{\times}="*"?**@{.},H(1,0)*+{A}?;(2,2)*+{B}**@{-}H?!{"+";"*"}?*{\bullet}eK\endxy獒eKwillUUtypGesetE~=Xops: SDict begin xyc endq!+5?8Ο-" {56.90549 28.45274 dt}xy qA4ܲ$BǍ5y͂" {22.03609 44.07217 l}xy#t\ɵeK3k.sThepGositionsdenotedbytheaxisointerse}'ctioneKhcoGordiinatesFxandyarethepointswheretheeKlinethroughpandcintersectswitheachaxis.eKTheUUfollowing gureillustratesthis:/BD,sps: SDict begin xyc endE/origin-Pgxb}'aseH,g" {28.45274 14.22636 l}xyH,g" {3584 10 /xy AB}xyv yb}'ase~g" {-14.22636 14.22636 l}xy~g" {-2048 10 /xy AB}xyF_K pM|QR cYdNjxT7ǍVdꬣ" {14.21939 28.43883 dt}xyH,g" {-14.21938 -7.09927 dt}xy>oş_y?BŁǍAßV" {-7.11317 -14.22636 dt}xy+֟" {-21.33955 21.33955 dt}xyD7eKExercise4: Given'prede nedpGointsA,Bq,C,eKandsDײ(storedasob8jects"A"3,"B"`Ѳ,"C",ands"D"),eKwritej0ahcoGordispeci cationthatwillreturntheeKpGoint=wherethelines}fe:ABand}fek`CDcross(thepointeKmarkedUUwithalargecirclehere):C9ꍍ9ps: SDict begin xyc end " {1.0 0 360 o}xyǵA!j-" {1.0 0 360 o}xyT}-B2}ޯ" {1.0 0 360 o}xy5}ޯC8-Ο@;" {1.0 0 360 o}xy;-Ο@;D)R" {3.0 0 360 o}xyǍ0" {41.8074 60.08694 dt}xyǍ$X" {-25.19963 50.3934 dt}xyPeK3l.eKA?hpGosihdecorigr}'ouped!in{},-braces^6 ) isinter-eKpretedT3inaloGcalscopeinthesensethatanypeKand9b}'asebuiltwithinitareforgottenafterwards,eKleaving}lonlythecastheresultofthehcoGordi.eKNote:dqOnly:pandb}'asearerestored{itisnotaeKTU>'ExXUUgroup.fff[ J= "5-:5LTheXbracescanb "5-:6LOneXcanuse(* U`.j..*) insteadXalsohere.LWK9 dՠ*tj??9Hqɠ%U 6ps: SDict begin xyc endnC]Y " {10.0 ox}xynC]Y " {7.9 ox}xy!ǵpUUiscircular: FcU>isa CKsquareG9text!ǍQ]Y2" {0.0 20.00003 -20.00003 -20.00003 20.00003 ov}xy>]X33(e*)(33=]W" {249.99997 -101.875 dd}xy?yʟ!Ǹ]b?(0)@N" {21.65613 13.01474 l}xy@N" {3686 10 /xy AB}xyMyʞ!Ǹ#]b?(1)NN" {21.65613 13.01474 l}xyNN" {3686 10 /xy AB}xyyʟ!ǸY۾:?NȞ" {21.65613 13.01474 l}xyNȞ" {3686 10 /xy AB}xyy!/y?(.7)ޝ" {21.65613 13.01474 l}xyޝ" {3686 10 /xy AB}xyyɟǸcr?<>(.5)Ǎ]X q" {0.0 -11.11113 l}xy]X8" {1024 10 /xy AB}xyyɟǸ]Zr?<>(.2)(.5)õD" {-21.65659 -13.01524 l}xyõD" {-410 10 /xy AB}xy?yʟ!Ǹ\][?@C" {-21.65659 -13.01524 l}xy@C" {-410 10 /xy AB}xy1#'毟?>>>>Ǎ5" {0.0 -11.11113 l}xy5;h" {1024 10 /xy AB}xyyq ]']?<>(.7)" {-21.65659 -13.01524 l}xy" {-410 10 /xy AB}xyyq.]?>(.7)Ǎ]%l\" {0.0 -11.11113 l}xy]%#" {1024 10 /xy AB}xy,⍍CFigureUU2:qExamplehplaceisR39Exercise;5: WhatGe ectisachievedGbyusing theUUhcoGordiinate\{;}"?⍍3m.The;vector/8Z/,whereZ=Wisahdimenision,isthesamemasthevector<jZaIJcoso z,IwZaIJsinS z>where istheK{angleofthelastdirectionsetbyaconnec-tioni(i.e.,with**Sc)orsubsequentplacement(??)pGosition.qItispGossibletogiveahdirectioniasdescribedinthenextsection( gure3,note4linparticular)that5FwillthenbGeusedtosetthevqalueof z.gItisalsopGossibletoomitthehdimeniinwhichcaseitUUissettoadefaultvqalueof.5pcUI.3n.qA hcorneri6isano setfromthecurrent<>3Xc, R޵Yc>pGositionu[toaspeci cpositionontheedgeofthecԲob8ject(thetwo-letteronesmaybGegiveninanycombination):Ejps: SDict begin xyc endǍ;k1" {0.0 42.67891 -11.37827 -14.2263 25.61012 ov}xy9AϞc-1͟" {-12.06253 0.0 dt}xyf" {40.51512 0.0 dt}xyǍ;k `" {0.0 -9.2255 dt}xyǍ;kc" {0.0 23.45735 dt}xy͟L-1͟" {14.37505 0.0 l}xy-1͟" {3072 10 /xy AB}xywyRf" {-14.37506 0.0 l}xyf" {-1024 10 /xy AB}xy8˾ DǍ;k `" {0.0 13.94447 l}xy;k " {-3072 10 /xy AB}xy8˾UǍ;kc" {0.0 -13.94447 l}xy;k" {1024 10 /xy AB}xylLD-1͟ " {8.0713 6.55676 l}xy-1͟ " {3904 10 /xy AB}xyt{RDf " {-11.00055 3.1028 l}xyf " {-1312 10 /xy AB}xy#ПեLUǍ-1͟c" {6.40436 -11.37366 l}xy-1͟" {1600 10 /xy AB}xyr mޮRUf" {-8.94489 -5.30913 l}xyf" {-416 10 /xy AB}xyoCL-1͟" {9.63824 -4.82596 l}xy-1͟" {2560 10 /xy AB}xyt|SCRf" {-11.50836 -1.79689 l}xyf" {-864 10 /xy AB}xySϟDCI " {-8.07478 6.55676 l}xyI " {-1856 10 /xy AB}xyN3եUCǍIc" {-6.396 -11.37366 l}xyI" {448 10 /xy AB}xyXnCI" {-12.26079 -6.13039 l}xyI" {-512 10 /xy AB}xy4P-1͞[" {14.13577 2.20949 l}xy-1͞[" {3232 10 /xy AB}xyp9Aϟ" {52.22581 20.8885 dt}xy  E-1͟S" {12.9053 5.24171 l}xy-1͟S" {3488 10 /xy AB}xy7TheD`edgepGoint'E rliesontheedgealongthelinefromN_ptothecentreoftheob8ject,Oincontrasttothe4`propGortional'pointP ѲwhichisalsoapGointon؎theedgebutcomputedinsuchawaythattheob8jectUUloGoksasmuchUU`awayfromp'aspGossible.qFinally*,ka3following( sf) suxwillmultiplytheo setUUvectorbythehfactorif.$GExercise٭6: Whatzisthedi erencebGetweenzthehpGosiitionsUUc?<jandUUc+EL?39eKExerciseT7: WhatUUdoGesthistypeset?N8eK\xy?*=<3cm,1cm>\txt{Box}*\frm{-} H!U!R(.5)?*\frm{..}*{\bullet}\endxy؍eKHintز:+T\frmnisde nedbytheframeextensionandeKjusttypGesetsaframeofthekindindicatedbytheeKargument.keKBug:EزCurrentlywonlythesingle-lettercorners(L,eKR, ID,U,C,E,andP) 7willworkforanyshapGe|theeKotherssilentlyassumethattheshapGeisrectan-eKgular.@eK3o.,jTheWstackk\isaspGecialconstructionusefulforstor-eKing,asequenceofhpGosiitionsthatareaccessibleeKusing,thespGecialhcoordiinatessln,4wherenisei-eKtherasingledigitorapGositiveintegerin{} |s:Eqs0eKisalwaysthe`top'elementofthestackandiftheeKstack hasdepthdthenthe`bGottom'elementofeKthestackhasnumbGers{ wd~1}?.RThestackissaideKtoj]bGe`empty'whenthedepthis0andthenitiseKanterrortoaccessanyofthes Bqnor`pGop'whicheKmeansremovethetopelement,%/shiftingwhatiseKins10tos0!,s2Atos1,etc.VSimilarly*,`pushc'eKmeans$toshifts0.tos1 ,-etc.,and$theninserttheeKcUUasthenews0 O.eKTheUUstackismanipulatedasfollows: rOeKff2  @I̸hstackingi>aActionkeKff2 m @+hcoGordi>apushUUhcoGordii @-hcoGordi>ac hcoGordi&VthenUUpGop @=hcoGordi>aloadUUstackwithhcoGordi @@hcoGordi>adoUUhcoGordi&forUUc stack @i>ainitialise @(>aenterUUnewframe @)>aleaveUUcurrentframekeKff2 鍒eKT*oy`loadstack',(meanstoloadtheentirestackeKwithUthepGositionssetbyhcoordiwithinwhich,eKmeansUU`pushc'.LWeJ10 *tj??gwT*o;#`dohcoGordiforallstackelements'meansto set`ctoeachelementofthestackinturn,fromthebGottomandup,andforeachinterpretthehcoGordi.2Thus9ythe rstinterpretationhascsetto thebGottomelementofthestackandthelasthascsettos0 u.QIfthestackisempty*,thehcoGordiisUUnotinterpretedatall.These-=twoopGerationscanbecombinedtorepeataUUparticularhcoGordiforseveralpoints,likethis:N8\xy@={(0,-10),(10,3),(20,-5)}?@@{*{P}}\endxy!LwillUUtypGesetCӍ?Fps: SDict begin xyc endOPsޟHP8缟F`P.fFinally*,thew3stackcanbGeforciblyclearedusing@i ,vQhowever,thisoisrarelyneededbGecauseof@( ﲲ,which^savesthestackasitis,aandthenclearsit,suchwhenithasbGeenused(andisempty),and@)isissued,thenitisrestoredasitwasatthetimeUUofthe@( O.Exercise8: HowNwouldyouchangetheexam-ple2@abGovetoconnectthepGointsasshownbGelow?Cps: SDict begin xyc end" {-56.90521 -14.2263 l}xyǍsޟv" {28.4526 36.98839 l}xy8缟 ۶" {28.4526 -22.76208 l}xy$5 (3p.qIt?ispGossibletode nenewhcoordiinatesontheform" @hidi"bysavingthecurrentcusingthe...=" *hidi" OhpGosiitionrRform.ȾSubsequentusesof"hidi" 1willthenreestablishthecatthetimeoftheUUsaving.Usinga"hidi"thatwasneverde nedisanerror,however,C_saving>intoanamethatwaspreviouslyde ned justreplacesthede nitionwithoutwarn-ing,;i.e.," {hidi" alwaysreferstothelastthingsavedUUwiththathidi.However,many`otherthingscanbGe`saved':ingeneralUU@RhsavingiUUhaseitheroftheforms ʍff2 9x@:"Whidi"Hm"M hidi",restores /currentHmb}'asefd@׸hcoGordi"?hidi"Hm"M hidi"6FreinterpretsIhcoGordi@@"Whidi"Hm@="X-hidi"(reloadsthisstackff2dThe rstformde nes"hidi"tobGeamacrothatrestoresUUthecurrentb}'ase[.TheseconddoGesnotdependonthestateatthetime_ofde nitionatall;itisamacrode nition.gweKY*ou~canpassparameterstosuchamacrobylet- eKtingitusecoGordinatesnamed"1"ײ,"2"ƈ,etc.,andeKthen2use="1"&,')="2"',')etc.,just2bGeforeeveryuseeKof&ittosettheactualvqaluesofthese.N Note:<0itiseKnot,pGossibletouseahcoordioftheform" )hidi"eKdirectly:qwriteUUitas{" Ohidi"} ."Q덒eKExercise9: W*ritechamacro"dbl"todoubletheeKsizeofthecurrentcob8ject,e.g.,changingitfromeKtheUUdottedtothedashedoutlineinthis gure:/Z1ps: SDict begin xyc end'㏞!+Lr3232"3232K(32323232323232323232323232323232323232323232323232323232323232323232K3232ʍ]㋷3232O3232323232323232323232323232323232323232323232323232A㋷3232O3232323232323232323232323232323232323232323232323232323232"3232K(32323232323232323232323232323232323232323232323232323232323232323232K3232g3232" {3072 F d}xy ^" {3072 F d}xy D" {3072 F d}xy" {3072 F d}xy" {3072 F d}xy" {3072 F d}xy" {3072 F d}xy" {3072 F d}xy D" {3072 F d}xyD3232=Ztؾ" {1024 F d}xyΤ ;32" {1024 F d}xy32" {1024 F d}xy32" {1024 F d}xy32" {1024 F d}xy ;32" {1024 F d}xyؾWo" {1024 F d}xyW= ;32" {1024 F d}xy32" {1024 F d}xy32" {1024 F d}xy32" {1024 F d}xy ;32" {1024 F d}xy32g3232" {3072 F d}xy ^" {3072 F d}xy D" {3072 F d}xy" {3072 F d}xy" {3072 F d}xy" {3072 F d}xy" {3072 F d}xy" {3072 F d}xy D" {3072 F d}xyD3232(ɩ_XeKThe\ nalformde nesaspGecialkindofmacroeKthatshouldonlybGeusedafterthe@=vstackoper-eKation:\the+,entirecurrentstackissavedsuchthateKtheUUstackopGeration@="Lhidi"Rwillreloadit.eKNote:hThereisnodistinctionbGetweenthe`nameeKspaces'$ofhidisusedforsaved$coGordinatesandeKotherUUthings.$͍eK4Obfjects. eKOb8jectsaretheentitiesthataremanipulatedwitheKthe* ۱and**hpGosiڲoperationsabovetoactuallygeteKsomeoutputin}XY)-pictures.nKAsforhpGosiitionstheeKopGerationsareinterpretedstrictlyfromlefttoright,eKhowever,ftheactualob8jectisbuiltb}'eforeqalltheeKhmoGdi eris=takee ect.CThesyntaxofob8jectsisgiveneKin gure3withreferencestothenotesbGelow.lRe-eKmark:.Itisnever⧲allowedtoincludebraces{}.insideeKhmoGdi eris!=In'caseyouwishtodosomethingthateKrequires{...} thencheckinthismanualwhetheryoueKcanuse(* в...*)Fzinstead.^IfnotthenyouwillhavetoeKuseUUadi erentconstruction!?eKNotesEeK4a.,jAnhob8jectiisbuiltusing\object(obox;{Ahtexti}?.eK\object%6box+:isUUinitiallyde nedasN8eK\def\objectbox#1{%H\hbox{$\objectstyle{#1}$}}eK\let\objectstyle=\displaystyleeKbuta\maybGerede nedbyoptionsortheuser.eKThe\htextishouldthusbGeinthemoderequiredeKbylthe\objectboxcommand|withthedefaulteK\objectbox,Obshownj5abGoveitshouldbGeinmatheKmoGde.LWeJ11 à*tj??X ffffd T SyntaxĆActionX-ffd fd hob8jectiE%K!^GhmoGdi eriUUhob8jectiĆapplyUUhmoGdi eritohob8jecti LEj^Ghob8jectbGoxiĆbuildUUhob8jectbGoxithenapplyitshmodi erisi hob8jectbGoxiE%K!^G{gahtextiUU}ĆbuildUUdefault^4a Qob8jectLEҸj^GhlibraryUUob8jectijq@\nhdiriĆuseUUhlibraryob8jectiorhdiriectional(seex6)zLEҸj^GhTU>'ExXUUbGoxi{ ꧸htexti}Ćbuild'ExXbGoxiĆcommand,UUe.g.,\hbox_LEҸj^G\objectUUhob8jectiĆwrapUUupthehob8jectiasa nishedobjectbGox^4cLEҸj^G\compositeUU{ ꧸hcompGositeiUU}ĆbuildUUcompGositeob8jectbox^4diLEҸj^G\xyboxUU{ ꧸hpGosiUUhdecori}ĆpackqageUUentireUQXY U-pictureasob8ject^4ez hmoGdi eriE%K!^G!gahvectoriĆhob8jectiUUhasitsreferencepGointshifted^4f HbyhvectoriLEj^G!Ćhob8jectiUUhastheoriginalreferencepGointreinstatedLEҸj^GhaddUUopihsizeiĆchangeUUhob8jectisize^4gzLEҸj^GhjqiĆhob8jectiUUishidden^4h C,invisible^4i@4LEҸj^G[gahshapGeiUU]Ćhob8jectiUUisgiventhespGeci edhshapei^4jLEҸj^G[=UUhshapGei]Ćde neUUhshapGei^4k Wtoreestablishcurrentob8jectstyle LEҸj^GhdirectioniĆsetUUcurrentdirectionforthishob8jecti haddUUopiE%K!^G+jjt(-\j#=oʸj+= 5j}-=Ćgrow,UUshrink,set,growto,shrinktoi hsizeiE%K!^GhemptyiĆdefaultUUsize^4gLEҸj^GhvectoriĆsizeUUassidesofrectanglecoveringUUthehvectoriz hdirectioniE%K!^GhdiagiĆhdiagionalUUdirection^4lzLEҸj^GvUUhvectoriĆdirection^4l ofUUhvectoriLEj^Gq{RhpGosiUUhdecori}Ćdirection^4l fromUUptocafterhpGosihdecoriLEj^GhdirectioniUU:qǸhvectoriĆvectorUUrelativetohdirectioni^4mLEҸj^GhdirectioniUU_?jhdirectioniUU^Ć90^9cloGckwise/anticlockwiseUUtohdirectioni^4m hdiagiE%K!^GhemptyiĆlastUUuseddirection(notnecessarilydiagonal^4lIJ)LEҸj^Glgajm~ rv]j|/d!juĆleft,UUright,down,updiagonal^4lLEҸj^GldljrrdWjlujruĆleft/down,UU...diagonal^4l hcompGositeiE%K!^Ghob8jectiĆ rstUUob8jectisrequiredLEҸj^GhcompGositeiUU* ꧸hob8jectiĆaddUUhob8jectitocompGositeobjectbGox^4dffd 'ExXbGoxwithdimen- sionsYwR7(h+d)willhaveLc R=qRc=wD=2,Uc=;=*ZDc=(h`+d)=2,thusinitiallybGeequippedwiththeadjustment!C(seenote4f).NInpartic-ular:inlordertogetthereferencepGointonthe(centerJof)thebaselineoftheoriginalhTU>'ExXbGoxithenyoushouldusethehmoGdi eri!;utogetthereference=pGointidenticaltotheTU>'ExXreferencepGointUUusethemodi er!!LL._TU>'ExXnicalremark:xAnymacrothatexpandstosomethingxthatstartswithahbGoximaybGeusedasUUahTU>'ExXbGoxihere.r4c.T*akes{anob8jectandconstructsit,hbuildingabGox;itisthenproGcessedaccordingtothepreceedingmoGdi ers. H^This2formmakesitpossibletouseany2hob8jectiasaTU>'ExXbGox(evenoutsideof2XY -pictures)0IbGecausea nishedob8jectisalways0IalsoaUUbGox.4d.qSeveralLhob8jectiscanbGecombinedintoasingleob8jectusingthespGecialcommand\compositewith#alistofthedesiredob8jectsseparatedwith*s9astheargument.[rTheresultingbGox(andob-ject)istheleastrectangleenclosingallthein-cludedUUob8jects.4e.T*akeanentireXY:-pictureandwrapitupasabGox``asdescribedinx2.1.Makesnestingof`\XY `-picturespGossible:?+theinnerpicturewillhaveitsown$zeropGointwhichwillbGeitsreferencepointintheUUouterpicturewhenitisplacedthere.4f.Anob8jectisshifte}'duahvectoribymovingthepGointRinsideitwhichwillbGeusedastherefer-encepGoint.ASThise ectivelypushestheob8jectthesameUUamountintheoppGositedirection.zčExercise810: WhatHisthedi erencebGetweentheUUhpGosiitions0*{a}!DR0and0*!DR{a}-U=?4g.S8Ahsizeiزisapair<յWc,H>ӲofthewidthandheightofG}arectangle.H?Whengivenasahvectoritheseare}justthevectorcoGordinates,i.e.,the}hvectoristartsinthelowerleftcornerandendsintheup-pGer?rightcorner.`Thepossiblehaddopierationsthat"@canbGeperformedaredescribedinthefol-lowingUUtable.2;L͉fffd͟ ff͟fdhaddUUopi/` ff4#descriptionޟ ffff͟ ff`fd+/` ff4#growޟ ff ͟ ff`fd-/` ff4#shrinkޟ ff͟ ff`fd=/` ff4#setUUtoޟ ff͟ ffpbfd+=/` ff4#growUUtoatleastޟ ff͟ ffpbfd-=/` ff4#shrinkUUtoatmostޟ ffff38tIn\eachcasethehvectorimaybGeomittedwhichinvokes"the\defaultsize"fortheparticularhaddgweKopi:4̍L͉fffd͟ ff͟fdhaddUUopi/` ff4#defaultR ffff͟ ff`fd+/` ff4#+g k ff ͟ ff`fd-/` ff4#-g k ff͟ ff`fd=/` ff4#=R ff͟ ffpbfd+=/` ff4#+= ʟ ff͟ ffpbfd-=/` ff4#-=  ffff4GeKThekdefaultsforthe rstthreearesetwiththe eKcommands eKff2 ~.\objectmarginUUhaddopi{Rhdimeni}.\objectwidthUUhaddopi{Rhdimeni}.\objectheightUUhaddopi{Rhdimeni}eKff23eKwhere_haddopiisinterpretedinthesamewayaseKabGove.<3eKThe{defaultsfor+=8u/-=are{suchthattheresult-eKingob8jectwillbGethesmallestcontaining/largesteKcontainedUUsquare.eKExerciseL11: How3 aretheob8jectstypGesetbyeKtheWhpGosiitions\*+UR{\sum}4"and\*+DL{\sum}"eKenlarged?eKBug:XCurrentlyHchangingthesizeofacirculareKob8ject?isbuggy|itischangedasifitisarect-eKangle^andthenthechangetotheRr\parametereKa ects/thecircle.[TThisshouldbGe xedprobablyeKbyageneralisationoftheo ?QshapGetobeovqalsoreKellipsesUUwithhorizontal/verticalUUaxes.xfeK4h.AhiddenMob8jectwillbGetypesetbuthiddenfromeGXYK-picinthatitwon'ta ectthesizeoftheentireeKpictureUUasdiscussedinx2.1.eK4i.eKAnQinvisibleob8jectwillbGetreatedcompletelyeKnormalexceptthatitwon'tbGetypGeset,i.e.,XY m-eKpicUUwillbGehaveUUasifitwas.eK4j.eKSettinggtheshap}'e²ofanob8jectforcestheshapGeofeKitsedgetobGeasindicated.ThekernelprovideseKthree|shapGesthatchangetheedge,namely[.],eK[],UUand[o],correspGondingtotheoutlines#3! ps: SDict begin xyc endaǷa ,(*ps: SDict begin xyc endǍz2" {0.0 42.65114 -11.36993 -28.48038 19.92793 ov}xyZaǷ" {-28.48038 0.0 dt}xy C LG!" {42.65114 0.0 dt}xy.ơ RǍz ^" {0.0 -11.36993 dt}xyfDǍzs" {0.0 19.92793 dt}xyaFUpIֲ,UUandps: SDict begin xyc endaǷ" {20.0 0 360 o}xy" {-20.0 0.0 dt}xyAƞ L(" {20.0 0.0 dt}xyO RǍ" {0.0 -20.0 dt}xy  DǍ" {0.0 20.0 dt}xy梟 U#eKwhereOthedenotesthepGointofthereferenceeKpGosition̠intheob8ject(the rstisapoint).קEx-eKtensionscanprovidemoreshapGes,however,alleKshapGes6settheextentdimensionsL,oRDz,D,andeKU.<3eKTheMdefaultshapGeforob8jectsis[]andforplaineKcoGordinatesUUitis[.].LWeJ13*tj??gwF*urthermoreFthehshapGeis[r],|[l],[u],andF[d], areLde nedforconvenienceLtoadjusttheob8jecttotheMindicatedsidebysettingthereferencepGointsuch ythatthereferencepGointisthesamedis-tance6afromtheoppGositeoftheindicatededgeandthe8Aob8ject[r]\hbox{Wide?text}j0Ihasrefer-encev!pGointattheinps: SDict begin xyc endjWideUUtextǍ." {0.0 40.4173 -3.47221 -3.47168 3.47221 ov}xy!Ǹ3:buttheob8ject[d]\hbox{Wide?text}[ŲhasreferencepGointattheoinps: SDict begin xyc endWideUUtextǍ0" {0.0 21.94449 -3.47221 -21.94449 3.47221 ov}xy;!Ǹ/.Finally*,6[c]putsthereferencepGointUUatthecenter.DNote:ExtensionszcanaddnewhshapGeiob8jecthmoGdi erisPwhicharethencalledhstyleis.p'ExXeKgrouping.荍eK4l.eKSetting