(original) (raw)
%!PS-Adobe-2.0 %%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software %%Title: cdtbasic.dvi %%Pages: 12 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%DocumentFonts: Helvetica-Bold Helvetica Helvetica-Oblique Times-Roman %%+ Times-Italic Times-Bold CMMI9 CMSY9 CMR9 CMR6 MSAM10 CMSY6 CMMI6 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -D600 -o cdtbasic.ps cdtbasic.dvi %DVIPSParameters: dpi=600, compressed %DVIPSSource: TeX output 2002.08.01:2343 %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ /Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) (LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: 8r.enc % @@psencodingfile@{ % author = "S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry", % version = "0.6", % date = "1 July 1998", % filename = "8r.enc", % email = "tex-fonts@@tug.org", % docstring = "Encoding for TrueType or Type 1 fonts % to be used with TeX." % @} % % Idea is to have all the characters normally included in Type 1 fonts % available for typesetting. This is effectively the characters in Adobe % Standard Encoding + ISO Latin 1 + extra characters from Lucida. % % Character code assignments were made as follows: % % (1) the Windows ANSI characters are almost all in their Windows ANSI % positions, because some Windows users cannot easily reencode the % fonts, and it makes no difference on other systems. The only Windows % ANSI characters not available are those that make no sense for % typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen % (173). quotesingle and grave are moved just because it's such an % irritation not having them in TeX positions. % % (2) Remaining characters are assigned arbitrarily to the lower part % of the range, avoiding 0, 10 and 13 in case we meet dumb software. % % (3) Y&Y Lucida Bright includes some extra text characters; in the % hopes that other PostScript fonts, perhaps created for public % consumption, will include them, they are included starting at 0x12. % % (4) Remaining positions left undefined are for use in (hopefully) % upward-compatible revisions, if someday more characters are generally % available. % % (5) hyphen appears twice for compatibility with both % ASCII and Windows. % /TeXBase1Encoding [ % 0x00 (encoded characters from Adobe Standard not in Windows 3.1) /.notdef /dotaccent /fi /fl /fraction /hungarumlaut /Lslash /lslash /ogonek /ring /.notdef /breve /minus /.notdef % These are the only two remaining unencoded characters, so may as % well include them. /Zcaron /zcaron % 0x10 /caron /dotlessi % (unusual TeX characters available in, e.g., Lucida Bright) /dotlessj /ff /ffi /ffl /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef % very contentious; it's so painful not having quoteleft and quoteright % at 96 and 145 that we move the things normally found there to here. /grave /quotesingle % 0x20 (ASCII begins) /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash % 0x30 /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question % 0x40 /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O % 0x50 /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore % 0x60 /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o % 0x70 /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef % rubout; ASCII ends % 0x80 /.notdef /.notdef /quotesinglbase /florin /quotedblbase /ellipsis /dagger /daggerdbl /circumflex /perthousand /Scaron /guilsinglleft /OE /.notdef /.notdef /.notdef % 0x90 /.notdef /.notdef /.notdef /quotedblleft /quotedblright /bullet /endash /emdash /tilde /trademark /scaron /guilsinglright /oe /.notdef /.notdef /Ydieresis % 0xA0 /.notdef % nobreakspace /exclamdown /cent /sterling /currency /yen /brokenbar /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen % Y&Y (also at 45); Windows' softhyphen /registered /macron % 0xD0 /degree /plusminus /twosuperior /threesuperior /acute /mu /paragraph /periodcentered /cedilla /onesuperior /ordmasculine /guillemotright /onequarter /onehalf /threequarters /questiondown % 0xC0 /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis % 0xD0 /Eth /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute /Thorn /germandbls % 0xE0 /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis % 0xF0 /eth /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide /oslash /ugrave /uacute /ucircumflex /udieresis /yacute /thorn /ydieresis ] def %%EndProcSet %%BeginProcSet: texps.pro %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{ dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def} if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def} def end %%EndProcSet %%BeginProcSet: special.pro %! TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N /vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N /rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N /@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ /hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B /@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ /urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known {userdict/md get type/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale }if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState save N userdict maxlength dict begin/magscale true def normalscale currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts /psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR/showpage{}N/erasepage{}N/copypage{}N/p 3 def @MacSetUp}N/doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N/@beginspecial{SDict begin/SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}N/@setspecial{ CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N/copypage{}N newpath}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{end} repeat grestore SpecialSave restore end}N/@defspecial{SDict begin}N /@fedspecial{end}B/li{lineto}B/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY moveto}N/ellipse{/endangle X/startangle X /yrad X/xrad X/savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet %%BeginFont: CMMI6 %!PS-AdobeFont-1.1: CMMI6 1.100 %%CreationDate: 1996 Jul 23 07:53:52 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI6) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI6 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 102 /f put dup 105 /i put dup 115 /s put dup 118 /v put readonly def /FontBBox{11 -250 1241 750}readonly def /UniqueXX 5087381 def currentdict end currentfile eexec 80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98 74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730 48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f 15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427 bdd7da12534ba078ad3d780414930e72218b3075925ce1192f11fc8530fcd5e3 038e3a6a6db2dcfbae3b4653e7e02730314e02b54a1e296d2bef8a79411d9225 dad7b4e6d6f9cf0688b69ba21193bf1495807e7a1e67ed7e41cc25acc04702f6 8ef703e3d45722c1a91fdef7100a48631a02a6f02a08c6b1f9b4df8310385b86 8632718fd87119a233f219d9411383b7fa9f3e4780d8c27e2e89e0cae883d664 c3eac57a3aef8988a2e9f0f8c7f53e0a80bdfc4620e21287d0390e1975398544 7f3ea66401024bea75e1b4c4437b7bb188f76f96b918ac7c6ad7e8ae7f21d8c2 790f08cccec904fe48ef39e597ed4d4237c1d1f596f5906b19ea308020f7a35c 168e327ec3246b1dfabe912f6b6daac09974876d3996e57d180261110db05f15 e3e8eebba3d90b5764c03df3033a1ed678ebc679569a2fb297378b25434c0f20 5313ecb8a952f07242d3ee731b0cdc086a4481178a3d65129c47c09b22e9c431 e11b3747b94c26a757c38d06001798c6a568303d541385244b967d3b1786edea f65bb53c4c2fe75e4b1b15c2c78d930b4296c80f08bad86012451edc8e9f0854 c3b390a16e27b11b3d45a9f72eff8baded2242dc928a61685d79e09681c97425 5b90a498614cf560fa5b1718981388268ba206a96989e6d0b5d485d9aca5594a e67dd7b34d8a369adb06647f8aff8814d6d9cdc04a4835918e557174c5bc0f3f bcea9907a04cf93c12727ec40db3f2f77596dca477862747435bdedacd9b2311 6cc97fa47ffdd7d897fb6bdd5572e35d34e7e1cb5e7273a4ffd86525323ace4a 84e1297028c2bd5469baa2e75d19360c2c9042139d5e7dd4390a6a3935424711 de21910126d750ae279916ceb71da3591d60dc62db333c5021e2c1cd61ade51e 93964fa67d27fae86cba2166fd5bcdea975949a3e0624ae3acf2f9d1e076ec28 16079d2355e287d207594971500a6e9d4461a73bd542758d04c9b39f4ebc0cec 643c99a225524660b18a4006538e6e418546ab370e7320b0078f4860ab133295 c79d7e2c9a9e7fb637263a5d3d47aac7ada8977f238b3d66c90ff6039718890d 3aeb82a9f6e05d4b3c67d32e949333a88bf3617fc3242fe4a3de47d3abc93a97 30e8fb9881ea440c4399ec3e4b8c1c0b824998361626484fde9818fa9eca059b 843aca0c97101734d1bab1024262118b2c15081174d2ff2e8fbf53748cdfb60e f3448a74a06adea616cb13e8866fc2ea5362aa58c0ec667c2928c93f226a0bca 3c46ed7893ffe3a2326ec1b03d602a21daaddaffe0188fad95415b1068dd5198 32206e0118e5653e83c42a5608e426e88c8bd4cdb4f5bfbb10bdde8c51f1ec77 3a45288f14352abcdaffadc86c37963a443f3d86d820ca2e75b507b54e961e45 b806ac6d3d1e5b41b0cb0bb55185b56f549d1ecd6cbde74f0aef28f4179c5cbe 55e31ef5d383913cd5d81b09359ddbb30a2878baffa094b271f6553906a0c65c b7dd719f048ff34ea7c084e94bc7acc98b081ad19becf5fd24c5900a793e89ff 9f8b660d678577c817f721a189ed4479688c85e68894face7cdbf68d02428656 6079e9743584523b513b82abbaf8819396e49b0a5b61fb8af0d612ef8b5edd94 e7130fc71bad9718dc4668622863ce90fe39572b7edb2ab1a32f960b246b77c1 4ad587b0eee9999a5f9e19ee70fa09bc78d0d75ae83f5b141f55835ec776deb7 919e9c65e697b30a10f63afa6201bd937ecdcd85e7f3852a584ba1251bfb935a 9046e494089a9d86fec90dee24fa5520bd94af67f9b714fa9a4b71c972eb4d41 3a8613a8b1a41dd25ec2e49c724ba415ac6295a40aa870d073ccb177f2e11ec1 c8f1719048d3b9a9d166bb4635d9ce0dfe1c472879c54397c983d7af1ff2c190 84ffe3ac1726b60cf8f5254196c8a61def69cef70fda204592b0965d79961f0b 43194c925bc74def683c92e131e0a339c004804e1b8c017fd769a4280f380bd2 5b12a727ad201344f57bf7c21d451f5537ccc6a914ccb2c45ba93541d12a6794 b5f15c9cca08f39a8362bb7043ab956b4632cc4c9a53e4e8619bd0fe018ffbf8 dab3554a7d0d26f7ca48ad8c4f878a5f0fb29e9e0356bec93c6beeda543a2427 1e76f3cf8fdc9d6b46999916582db6385cf8542e52a403356880179207eb2f30 7873a0b19e73f988175e28cc9c098743d99118e05bce 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSY6 %!PS-AdobeFont-1.1: CMSY6 1.0 %%CreationDate: 1991 Aug 15 07:21:34 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY6) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY6 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 14 /openbullet put readonly def /FontBBox{-4 -948 1329 786}readonly def /UniqueXX 5000816 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352 05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23 b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145 d026957276530530a2fbefc6c8f059084178f5ab59e11b6a18979f258b8c6ed3 ccafbc21aca420c9c83eea371adc20e038b4d7b8ac303004b0aa205f04135140 76407216032fdd22e6219da8f16b28ca12524deb7bca073cc5eba65c102a5e85 fd48e6d062cd4283ee570a7774597e5bf0e3400b6be72db0115f3cb12db70ce0 83722870cddfadee715f10f1fcaf20e06f3c54afe5ca238539bfe2b596116e83 f5371ff18fa5003d8543226cfd4025f9940365b392a858d27f078d3abcffe4a1 54e78c7692d1a32bf935967c64f01b24788ff8325d61145e2d4a489fd986fb77 38e6b254522c77ca2797a504a9ce4676a77ebacb026eca94dde5922c936f8e90 c43e28519671e8def84a1526a8b89450ef2bd624857da91e78f75dfbf7b8bcdc dc20960373fe601e8ea49e3d1cff1deb5c14e11975cd39edb706b363607acacc 3355ca449db8fc533b240f899da7a68418f9f0c3a4f0e82a6dff680742c4f0b5 bca221fcbd0bcc643f93787e2cac3f808ed2b8f4815cfb0881d58bb8f79f759b 5fe30bc3492d4e40dbf69e0178d4d70ee5f7def0ac821a51130fcde7d902aa74 87a0be32cb54fb38d9c49056cc4ffebaa3f33f23805d1807a65411fa8db1da30 a77af5891ba4d5bf30e66a5397cf175a574844f8e8255321fe74d501fd3918ef 43c34d2a7697b83b09e600d41f1910557c9247e272c7a293078bbf572b2ec5b4 e95a 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: MSAM10 %!PS-AdobeFont-1.1: MSAM10 2.1 %%CreationDate: 1993 Sep 17 09:05:00 % Math Symbol fonts were designed by the American Mathematical Society. % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (2.1) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (MSAM10) readonly def /FamilyName (Euler) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /MSAM10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 4 /squaresolid put readonly def /FontBBox{8 -463 1331 1003}readonly def /UniqueXX 5031981 def currentdict end currentfile eexec 80347982ab3942d930e069a70d0d48311d7190fa2d133a583138f76695558e7a e9348d37cac6651806d08527c1bb4a062a4835ac37784cc39ad8841404e438b4 d52d3901e47a1de4f7924e0fb3daf442499175bab1226edf692a4956739f8828 e80592f450c5d5c22ac88bcfbe9748f61d18243a16f4a4467f084e8e2be46ef4 7fc51c3a8199e3cda62ff9c4fb73956dab8b6683d2156377808cb35026073e80 523f59a30d195fcf9b9fce4ffafc6f33457e3200f0935ea98f1a0cfaff49cfa2 d877ff805620cba84126dfd175a82e1b4c6ec58461fce97cdd749a012e2c4243 86b199a97c306b282350cbe5af90cf1d8e7371dcaedbd5fa3346dd3e558072c5 fd51a2edfee6890f62efd1b552699123f4f52c2817dadd5ece30b3bc178a3ef4 f45fd8ad0ee5bf30db5f9eee9ddefe249f3c349a886cf9130cba68ae559ad719 c439930ece1d52d38366116c390cbeabb8fdb36811cf3b8e2416825e8c880b24 6521ec6880ebe7f127c8741c756b29e1f89e3fd5d638a7bbade8c3a0fdbbf7ba ec37cd372afb2d9dd25d509726d20a05914e418f6b7e759c440beb61519df02a 06734ec1226890d17c51f25f775e6879fdc231bc4d7fcb4b33d04fa273bdb8e8 f124171714614f8a94e98a6c2d6bdc1254913999f9c181e42c0886556cdf48af 92a265c1eb06bb30fb2745840c17bd31c7b8bdfd37dfb9643a418a2eaae14094 6752e0a315207aef85c3c2630538907971ec1b05687208571a3504bb3369b5c8 9a43e5abe343d0599fd8d41a1bf01de49f5856bdd67d63a2b3ecea75d721a6ca 0c8751ab41e892e9cf674218dd44acfd40019bf59f4d69ea40d5cf9068a6ff96 9f8cc772b920baf17334833d732431a2969b9a30fe38bd44772cef653935a957 af61dd568f041847ccce3c587656cba7bbf46d8cefec936c6d34dbe51bc04929 0440354f3b29ed8e6b4f21ad53b5809779d67339f284563d54ed4d2a504b014d 974a31c0ceb57b364af519bad4e85c41d521a3ffc26dbac555b42dc191367152 1d60c30b95b5bbafb3c7d87a1c043ea5f0e6dab83a4de99a742e75f02837b923 c50eb478ac4131ee604e3d7b784bd8c93eb9430291d452c21be0495718546333 66a602a9f142a563fdae3c8d40de6a8aa581ff3172367ca325e6d23102c5c6a2 02cc99580287dbd76a05e8abdefa6d89e5befb1b6e4f327bca379b265460b2ec 7698833eb4e26a019f23e584e3af3556463cef3f6401bcb3a8bc984c05565a1c 82cb1154cb682b7c6dce44c40e0dcc937f77f1b7fb8d52ca797e37f3dc33979f 9cbd88df8d8796d566f1012356d9e11dbb5eb84b280b8b08699b2ca953ae4823 bb9ee34133c5c95b3290e1bf010705ad852c72be87291e1034b09f4b6d9a247a 94a6214f4e95a33b77266e55d59aa26a0ff5e9a12c4cf4c19532f54b587107ed 96b0eca344e95547d3fd73ee4066b5cdfae47365ca1e5d37 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR6 %!PS-AdobeFont-1.1: CMR6 1.0 %%CreationDate: 1991 Aug 20 16:39:02 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR6) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR6 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 50 /two put readonly def /FontBBox{-20 -250 1193 750}readonly def /UniqueXX 5000789 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b4486858b2a4b5a0cc2e1bf4e2a4a0e748483c3bcf 5de47cc5260a3a967cac70a7a35b88b54315191d0423b4065c7a432987938c6b edad3b72ad63c2918b6e5a2017457e0d4ebc204b031f3fc6c13d7da7277a94ba 018e9998b3dd888011a5d7c4204989f30f908b95533bda845746b673ab71ea57 65a0d14f4350707e47c8276305b28513cbe1bb0dbd269a53719bda46e536685d df78ca0146b6b93e760256b74d939d4e35b5e77238f04c92298dfdd188feea30 e053eefbcbb52f2011772b3aae39f5805597bbc1e8bb75a446ce014030f4f2f0 f49f9e962ee4a1024a746fa92a3628db5270732b54e43fe5ecfa524f127e5fcc 788e77e66098336ad67fe4cccaf0253272d5df79864bf4b734cb9a5859d557d8 bc11b8e00221ebc12e97de4b1f466ead83a4c894709363bca9040410a52d592e 34ee40cc7e5efa920546b981aa659513a24b1b85c221a1875b62d0b89e57a368 321b8043a5b094e0379760a443d632892b14ad6d19dacc8c78093243ad67e6a3 08e56e6b68412ee690b10dac6e17708754a00d51fc957b500eb80175716eef4b 2ca1ef867614659bee3f2b7319e97b6fdf1efc847bf3cee3156f72f21751da8e 5fb6898919e6799820d3de0642d756e09d6fae4ff08dd3deda3173bff4bb11f7 9109c97ddc05897af709ea199a90fcee8ce4c7a3c15b18170c41c04de2d3fba8 f34296a95b8e1e8de3739b17273f8f2c85e914615e8eac5e8bd2387ba3b1edf4 7968f06e2067d836d0f9f3e085cdfd2de06a62c81d786b304326f7002e83160a 36598589228b4dddddc43c85e1d126f8fe81b828028e26317af5894aaccf4f69 6301e1a9fc45935d8a414957f08febebbc3a72ada80f101e47447d019ade56e9 f4fab969bba2b44e47399fedf5caa1bcea216d7ba713d523dfa618d367b001af bfc9543651fadf6389c92ef4a113933bfb4ce45b9ec1da149da8266d7ae816ac 591763c1ce0975ca2c6fad4dbf00da2d5ea9005dfe188787b84606f607dcb299 dbd62d54c0d9a3f63151b4605487b20b6612bacb429274d9c41584d6b0364b8e 3d9974f806134b12b859a7d761a1cf69b88c3b8fcd7df349ecea60c16041cf86 b3759ca18300e771a59922287a619d7d1e85a6c05fd807d62fb128a85222d66a 5ffdfc23a68bf4b49d6cb703a4b61c83a49b8e965c46262f03314b3b201179ba 4523b7f14bc486d8c369a8681b7a2837f5f82810d48ab9c8063598298c56340e 20e031c2603386b7564b3ff929be77050ce216cf7ccca14fd4916821b5e568bc 46c3ae7c6c63e4bb5f9cff87417005f6403af598ac4fbf73ff557e9124485569 1327cc0942e6061e12c0f107926d130a 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR9 %!PS-AdobeFont-1.1: CMR9 1.0 %%CreationDate: 1991 Aug 20 16:39:59 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR9 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 2 /Theta put dup 10 /Omega put dup 40 /parenleft put dup 41 /parenright put dup 43 /plus put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 54 /six put dup 56 /eight put dup 57 /nine put dup 61 /equal put dup 99 /c put dup 102 /f put dup 103 /g put dup 105 /i put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 115 /s put dup 118 /v put readonly def /FontBBox{-39 -250 1036 750}readonly def /UniqueXX 5000792 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bacdd6500abda5ed9835f6a016cfc8f0 0b6c052ed76a87856b50f4d80dfaeb508c97f8281f3f88b17e4d3b90c0f65ec3 79791aacdc162a66cbbc5be2f53aad8de72dd113b55a022fbfee658cb95f5bb3 2ba0357b5e050fddf264a07470bef1c52119b6fbd5c77ebed964ac5a2bbec9d8 b3e48ae5bb003a63d545774b922b9d5ff6b0066ece43645a131879b032137d6d 823385fe55f3402d557fd3b448685bdd20eb05d5e7c2126132e33a59a7170609 dcf4871a5d023c9ef57d3362d9f2d7a440bb69bf653364105f16f4d0f03582f9 aced3d05cc76489b16e3fa8a446094d30038b06ecceda269f2eab9d19a99c7f9 39f9548f206c5a457a19270b2b82c43b091dfc5573468eaa3e7a4a32f8042891 d85e4b180fcbcb3091d2800e54c87d84ce9cad6869b5aabbbe47f40c68799893 d22b765295e1e69e33aa048b7ed98ba480ceca91f3ebf8ef85fe9a3976909626 b95ac5940d53f9b02215d84a44837ba25ed15cce0d504f1d335065594f3bc824 5405407591cccb11cfd4645da60d960c0b93f187b0cf7b105543c0b70f89af5d 264b6c026e3ae646acf145950202ec73282111e3e601cf2bcde22ce3edf6db23 516481420f26552ff4472d749811f27768150450d0d0ebe3c79f999e99b5c0f2 2eaebb12d97782b1bd91b2a1f62a76412548ad53c0dd411d4a08c0f071c2c218 63d9adb75a4621803ecb84c2bb235b620b658984b2d8e0c4637e2811bc8f0d04 6c8935afc70141e1b2d9c23bdb251d304b3378faf8928bd09686aa0340fb0cb1 dc48c996ef91530ff078666fad227a3589f50b605267212d3a65ebc1019a8eec 9a0739a00279471a01e1505c17658c10030fae32f274fdc8c8774b0d5406c384 a1d17068dcb0c2575c562fdc5a2176609bad9a2c255e426a4325a4fc3053c7b3 2f35f7bbc9aa50135f30223360fa2fbf019294b3af98224c5c05d6038db08bc1 4103010094dc215ef9ccfb96b237851332c8ed81a9184cced4edbda26b381f0c 73a2bc4a92533b0e667e82ce49ddd8ac9e34d9d40fd4b5b9910eab3b1234bbf3 af6608d66eaa424c158eddb75fbe39462708da8f5c18d92fbdb2f534598a844a e076f96a741f8002af3b38d7e4bfa363f5f5d1193014f71b8226bb6336157b2a 7db1c1b6087fb5d476b13c7d44a76606517f2ef1a08d2a00990a298b5ed7cc0d 6b97f6bc5291550b83b1650cdbe7e081f863839d40932266d81902ac884d9836 5373a18ad2dfc4bcc92d0f64cb3b67c6d83c73e120a49fa529675c419ebfc1f6 ae5e420062795c6cb870d3b4c12853cb30b44d70562849b184b2fcef435adf52 2b552a37363e8ec26c74f1dad3d51e6ebe3152775bb35f0db4eb9ef8164ba86e 56de44238e4158784af0ff5e0065c383f704373c924400abe826b0c41758b476 3781c60ca0d97d5043b80198e7254d96ffe992e04693f3b6c836bd46060fa254 023532e18c7b466d99654ca7f84c4bcff372527ef7f20ecad766ad68f1b639bb 4253d824b8ef415306114c057bff212dc55cbb868286cd0b6b22d70096a5a76d a8fcc2a8865bb70a15af127c58f4410abb57d688d3fbead8687d51384aa51bf6 f0c876c80405b9419341e4de8d0d9ecd3ffed5169c075ea2c6335d4e668bf669 05facf8ba1ef5d791028868cec4e9731b2857f0a0284c44fb26d01addcc9b73e 6f4751754bc800f99f6d8d462d34632aed2147a89082889c874ddc2d9c049e30 0e3d09c76f7d32fea0deb5bb588eeaac9055b38aae07ef717fd4916af3e1d044 7e03554c92a79a4353d0ba4448a9bd1123ecdecde0a78ec7533acf0f5fd5fe28 63d49b51423570bc66b7ca96e288f12936a3b9fa8ea5b5a3e14b35600d95eb5f 5baeefff0ad260eae987d94f4598fc483d9076b47957bc05df2027ad72caacc5 91021b519c648ff281a07cd112c7b9c14bde2dae57a7f2b9d04d880fa4c59f9f 3069849d6a3049a61426f935af2bd0094ff8124e394dd336f3a3b577691f2e62 8a2869e844095206a44b65fb518781fd4daa9190b1aee4bc56bfadfa9fcbea09 8c04b71822749b8ee6ca39aba183b172907a6178acd3818216bdafebdec65281 025e6454f3ea5c4f5079683e3de1f8ac657e96a6338c3433cb42555f0dd1361b 2a8b3d87f4d03d24adbb98625ce7db75b5931f7a9af427a3e8dde1f02874f43d e3417d0b905fe225aa1e39cc14f7531d31df00b0290787f04a0bc5c7a59bed0f db974893c704b3aa10d898e07f63908a257c059f52ffef8e7dd1a6a1c42a5034 442d32534210cc0d593d00849197f83f379435f28104557e4cb097121bd74004 3817cac294cd5c94b601edbdd0c67d17acae6d5dc8872d548dfad07c39ba9ab7 1bf88dae96e6bd3191438d982732437754c44215df5cbb05f139ca390196f531 7dddb9f17865bb32c7c786b7d7f476e1d60323e713284aa94493f4e8d0285788 d3bee6d865af0146bab6fd67b7f88fcf0e2bc5f8e9d3912046bf61e335fec0e5 412e3433dbedb22308dab25016487726062f1bce1c9faf62c25287c7844a323e e62c2d70bfb3e66600076739133a69a576b0460c4730a5c8ea2dc01d01b87735 b69a7eedda692ddce7724a5583c3aa1ec60459775107dbf9ecab1818a84b490b ba1a9772c3fdf2642b1d1a772f6403eb499b76805eb4fdbe683be03ff2f48c9f 80f1c3e773cd1845ab2799dad3bbed87c53cd6e664ac3d097cd48e1aeadaedff 6dcd7d25954ac171ffe6aef0336fa30e3bf693d94feea17e11f6a13e219804fa 9be9ae518c4fb7c755e40b2ee30ded4b43626981c3e9faa765693432d5f2170a 7149e8b3d4212934fe78364ae2bfd9884d9fd67b5e23cb0cb62f955ce714dfbe 3501c81f04c36b6fd6e9eab64860d90a3f8b2a9f902e56a4d26b7df1ffa95476 11c032af1eb7885195f03987e7d7496a0aac67598160ec2f71f9e006355ed97f aba84f73e1456314681828ad78dff5080397d381793493a8e2ee6484c7cd0191 8dc072f8cec2823d5c6d4fa45514437ad3e163b7f828c1a7ef22292ce8a8627d de9103bc8ea7e645baaab2a7d7169f1132cd8b8036ab2463289bc7c55af42966 8f8e0bbabf130295318e0c013a5a8d4f2babec2beea7a5c7b9d408285ffca6ad 8b79609e04fe6b2dbe2a069ab54256ac9b31f16161f0da05a39d799497fc470e 3bcdf7a712ea129d031cfb108761abd1156f47a3b230e3e4458763f5a12a0876 d0220a81bdf90b3db80814ad3b476e513dbbe38c3bc8d64fdccdf3537a3a7f06 1e7d8dd2d89a96c3b901769f977cf83dd9df447624bbb8e63cd79f003f53bf82 66da48e565f6dd0a23c4dc0bf432135c22f487e0d5e8ebc0bcb2acd0fbcf9351 ec80210bf8baeef3b48d020b522bbbcd59422ca458e877a210115152c8174641 9d84312270f5d38d1389342b6a37b2edc7b72c4e2e02cf07747b3b1ce8d591d5 0e5fc8b8fc9dd611d3f9f90d379c67106e483edc3c9840cde077c51acadd7755 4745c3e6d08e93767ec4284ee0dc1e602a0da1fee4ea33514a63232ccd140546 c145fdad775fe92197e6e442fe2680a3668e8af262a4ba887390ffe7ef165112 2b2def9e4b448b191212f30b53a3a6b015cd2b63fe0f4744d0cfb32c7c4053e1 145ec20ac959a4806a0aa0d7f2dceaec1c1aa968997c6beed0b54ba4d20e7832 c6916f208d19e1b3a4e7c64aab5ccbb2de61470ec470087c7d5b20d32a2b6d65 cb6db42acf3c702e8c02af4d167ed8d58ac427e06d4eee0276fa47d90a449181 38618e30dfd1a93648611f77364e1b091ddb19ab34988505bc46f4de6122a3d2 5539336a06b330435ea8b525d2389f37d71abe94ccfd3477af9c945b351ad435 9f1822b01ffe3d74334edc893ac6b77c0680a0aa8ebeaea9cb790bba659f7463 5bacf2e3b21fd483aedca4e86ad9cd5c21a2072ac6d279a1abe280005f4ae239 55065d42207e5c4feb422f07931283df8da746823c6393996bcaa55b34eccf97 b6be13d5fbbef26f07f852ef17089bd9d04880c62c63b8176e263bd9037b3879 3e93a7357e16a09179be92f373d0b10b5f97756b8ace5905770b00142e6a3260 888eb914b7db800e34c8d8e24cce914155f6eb49ad2393ea9bf0279fd23b1099 c4c6fbb846af23bc2af65468e3e4643fb1185f52ef2268d2f32954e84b75f436 423f12144327cbea9b068a19ec54654d015c79457c3736247274faed2889b970 e0c6e4390342e38fcb24cf6d7f014fa5309042a829b021391d965d1016f85958 5c5fa4aa83fd01e4f32cd761f3db8183c1b9e3fcf66e7239d15d8057dad69252 484f721e12f1a9dffa19c4f889b1b840584fe44932bf55b8ba192dcc9fff46a4 c1d05b56eea333eabc49b15afd3bde871c4559d5a1bc38cf56892a750acfd32d f5cfc0df4ef290246a7b9e8003dc914633b970be4b9f1dd5f6b1d1db18855f7a d9873c943549c2e841f4bb5fa85a0edb606adb6445be7aa353618069846bce10 fc2ed4a9613f65f43fbe47599f8d7ebec913323e6812f9890f92356228bb57ed 0f7f9b117c81573457d9bd1ebcb800edb2050caf76347697fcbca8f3616700c1 223c5c83c28af19bc9a99e913a1f5f2f75a7c81e926031ce30166efdd13436b4 11130636f2cba6b204f630825b2e4ebfd6ac43d3b34ae2973052a93eef89ff84 390902df4315f142ee8755e6a7540d2d29eb530d7bbbba9a8d039161d19008be 125c74080d6d4280897298852ba1d2f2315caac0125c46374a6e9973c4f54875 09fccc6d7fc83bf10e45ab5909d6863104aca04c0e31e3658515f2accb18bdb1 ccb4c4cf1dc965b6f28692f76a3d185990a03d513559f0fe88e07a65b1968a24 bf3fdbe0af393cb55b94930a615edde4687e69671a93c257cb83f5d889267008 0b46e5625ba291d29cebb41a1ea7610de57971f5498913ee8cccc895a3838095 f964ac538962c89c4632172bb59d039fb76acea64faebbce4eaa02cda239dbe0 55e2f2810bdff2a382afb281cf42acad9ec9b10369b656090a7c1b301f31e507 14599662a312e6e846539966f36f5a0193154b3255ac95b0be6d69a9870dbd39 6c3f6f10f34b283deca263cfd323bda303ab5d3a02840a91059529087115e3c0 4bf0ecbcfcc9612300e81a9abf8d9818461dbf512b9ff23cbd5013d4d110238d 032ad296129c66c8f79aa043c61c1a790210873c101ca6f9d01ec4cb965cf04a 061256db1215c6b0b1caee81707d6c1f7dfb154ed90a57735f0052bbfd3391b4 3cd6b10f035cf3ab3df5a940991ec954b86515c5a4b446020e8f6c3e93c20071 893cdec0771ddd26f9faf6447b1b2e3324145eea166370d0ee8e086f4321a47d 2d41baffd851218d0eee33eeae8204ad7a2369ce49a636ca78880d8fe89161a6 6e28be2431a9f4ae9641643b8744a649bcba0e7b1b646688b57a6981e85a1643 cd8aff0180634cfd307af352e838eb3c2f3a8ae5e8e76dc0f80bae2e0e9bfa98 4b00f3d99ad9aa17ebe9b9bf3939c0c438b2a3017b28e54799e0c79dce7e4052 5d1fdd4670f1d68e49acb87cfe9c9e2f76a44105d845c841469aa56a6fcfd402 d2d086df38e8a747facbe8f28d943feccdeddcfd51d1d17693b87e471632ba91 6c6e88396321f0eda90e0bf9e599a8b9ed211ac7cf8e85eb4569ea042a12b9c3 c8eec8bbdb047998a0bed237ec594753f6851653ba16d8bda0e144d51b8fd7ea 35cf15dd84d8da5467ed2564e1b434f4088b893e3aaff85efb359b6636a2c7b6 1d479e1fdfe44e603eba96abd080f117ab5f0e2767f898213bdfdb6c8f1213f7 8273f6bad723278cde827d666b9612272c1c621cf5c4503e9242782a07bf1a01 0e620650844d3ed00e3f10ec018ed0aa818aab2e51ff490f8de1488628d07a1a a5e88f7f3da69dd9eea8664c2d3e824cb380300f6eea2a5cba5557e6ab1d94d7 70c63444e7b8401ecc270797d663b9d3a52b4ab1fdbb717a173314bcdaa30970 5f644ea6b7664cd06d649ceba1725d791c7d1997e9ca5ac05727c75035383251 cf2797973e7a10372dc9a6bd2dad1f15eeee5c48be5e1c8d18783419d289acd7 052f61b5dbdd7d80a6b6394aa9841015961c844c1f4ff6e5e24839990e9e57ce 22597daec4334c659c2fc01412e6d8b80af278f9994c692164f0523199ab6b0f 7715289e2e095083f5fe40e17983a00931035516c906589640c890d4195968fa 964deb0f0a7d474de0a4f67bfb7a84bb685b7f5cb8f9b7e0aa0e9f057a0c1c21 2e604b2ed3ece5fbfcbd570785f25a8e283ae7ce2d8f9aa2605ff7e2e5f89e6a 07c7e0d252c0bd2e88d4dd6881e2a64b72ffbd0b99f60e31c35b62bd9b481958 cf9e18c640b2f91b9466ff0571e1ad2d9d662896d088481e437beb63b167dea1 7c6e02edae6d544f880fbe1874bc9bb3dc58da1ca3306670073bdff871b58b1a 5475cf16cc618614ef07357d8db56c88f5947360fbd09f849831dd58b5fffbaf 3171777b7119b3013d3f1a45c13d01bed5d89a31b1c185dca7ffcebb9ca6d94d 3a6ce93d5f4db1e6da6d26a31f830f93480a8a4f3076eb5d4bcb1b70d202553a 91d6298538224d89d829f95d5201a36e275736986fa1a2b033be9d52b157c418 eb565a912a6ac2c85e626161e71865572a05dddb676fda54dd0213bb3bb4394e 34666a4969b71c839c0f14b6c425908c5dac0cb3aeafd64dc9b04d3da965e32d 55bf 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSY9 %!PS-AdobeFont-1.1: CMSY9 1.0 %%CreationDate: 1991 Aug 15 07:22:27 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY9 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /minus put dup 15 /bullet put dup 20 /lessequal put dup 21 /greaterequal put dup 52 /triangle put dup 79 /O put dup 91 /union put dup 92 /intersection put dup 102 /braceleft put dup 103 /braceright put dup 106 /bar put readonly def /FontBBox{-30 -958 1146 777}readonly def /UniqueXX 5000819 def currentdict end currentfile eexec 9b9c1569015f2c1d2bf560f4c0d52257bac8ced9b09a275ab231194ecf829352 05826f4e975dcecec72b2cf3a18899ccde1fd935d09d813b096cc6b83cdf4f23 b9a60db41f9976ac333263c908dcefcdbd4c8402ed00a36e7487634d089fd45a f4a38a56a4412c3b0baffaeb717bf0de9ffb7a8460bf475a6718b0c73c571145 d026957276530530a2fbefc6c8f67052788e6703bb5ee49533870bca1f113ad8 3750d597b842d8d96c423ba1273ddc63eb43f34fa90ea73a234af35fd9b24eb7 4f19626e9124df7acb92629cc87b2cf81c4a89b27447806db34393ddf0402958 e2daee0b4bf315f9aa0a2650d2e11ee289ffaec940d0af160fe7f29411c1c458 69d1ac3bcfe2ae4da72422549095f1fc9fec606289316f106e719a4ae2fd45ee 868fddf07a80e9a626bb43cdfdaa9dcd208b88fd99af20b27f9d6b5cda6a3fa8 8d5acfce8b5eebb38854378cecc3bfdac526514f1be9fb28ae628918ba942a3e 05b78c3aff808cf416a5ed01be280231b75a7aee0c66b0549713bef6b3cbc188 e625ba827c3a559737fd421e79699430c8f94b8aaebc82860aaa50ebaa494896 f2237662345b7d90e33a47320cdec13284a9874035fd99433b0d7197b7b3d74d 158d244c9d15c229a82969c73e24cbfb1cc6dee798bbb92ac34ef10907c4b264 8090e9af68accb6cdfaef2e299844a29a72a75d6fd3892837f2a9ff89ee894fa 48619c58808d8492af25c36e14af33f8bd9a8de5e53e1392c5cc6e535dda9be5 7fd6bd6becedae9880b178fd0dfd86d06271a69d75e20d0e00610cb237ccfd5b ca34c2dd188a636a6bbf2d4a9e30c5fcc39c9033fa779a59f8dcc154511b6357 1c99af44c1af0ab61147ebc23c962c199c9f4175ea12a2a0235cebc86493ed1a 3db1f3cb065071f50ffcbfd94b6f572902fb72daa88e29e27f985b22298cd21e e06966a1579dc459019bb52cafda47417884b000449f911a2fa0acaafd711737 9f0b2f17291de6b97ccffe1418c169cd1523158569f1153acc0e9e4fefb29c30 bb2a30146d9a498abedc969b1b3d6bd1e079eeb6f371d88779b8badcabcb53f1 d5287475b195e66e5c5dbd6b8cac025d7e13b79397328d7b22f69f627ed3d229 2768246cf8380c03d462d33f6ddf6bf3aa1b57dfe5e34df46760976d6dccd3be ae9cfc6be6630d8f1225a70052a39dd98c70005f6478d98832c8d06ae780d31c 030146939e9fcd243e94ec2c2ff1fdcc36b51eda285742cf9bdaa6b3c8a3e164 23343b46bee22e9d2ed84ba67ebefc7b21e3fc55d873b528baeb0bef8121c0a0 2dcf4b7f16ad3632ebc3d4eb68e1eb4ab0749a2d42f78dc8b3fb3c5c0806547e cc2ddba5c3fe0ca30859e1236db07d564c501253562508cd597773499bb7c10b 7ccf65dcd954e5ba4ffaed172d8fa58b6ec9f7f70201c095e2660cdea39afe7b e39cc10c8d84d457c9c5ca368eb0e0c9f51e91b5cc1c60d4793e12a99785ecba a838beb7cd07888bc65c7ab71e93f8a6f9bae6050135e3e28cf051a27fad6208 b73a1f40749b4e428806cf38803c646e1b07b9739b7995051cb88b4270d73e5c 6254e4841d1d6679fa11a81eca5acc656be317c3ed60a8654203095d8e846649 93ff060ed4428e5eb5aaed7c987bc803c481a97c1137874eb2f46bcc3be808fa 0ecc588f0820fa5df99fb1b6fb2125816f3620fbaa7630911c9a0105aab0c0be 33a453d1ab33468e626aa7c1dbce3db83e9ab61c3d66ca262094facf1b3adc94 73c692171793c92b5b0c3b3eb1007165759b8cfbfe442315fce1c05fb86a3a52 4e8ac743d6c5105f6f524ad0bc01f8fd2e078f01a12d94c4ed9a158229ae0846 96be05255aae84f331b874d43ecf53cb8a747fe05c76186ac1cadba3f660098d c5bbad9e5efe8f89d9d502b2a84aaf180194fc4cef9053b0542f297df3e9280d 0fd79452a41a8a88a7aa27d973d1b51f04462e8189826691faf2033762cbf9ae 7c9191e2a49ee7282cc92b5bcb8d35335a5b967ebf20a7ee8b690ab320e66917 2064df33d646b9f58e2ff17524929f507bf50973b5980691394d18ebc83250c0 9a553d27dd0d41c15cef402b398cf09f7e5f3664cc7494126436a9a076b343a7 ca94de7c18b2fbf96c83a9d7b6d409f53c07ddfadbef1db2e190941e30a0df66 6dcfc30ffc09bfa7f2e7966c69aed677685b51ec1f60ad5d45599cc82c02389d 87b88c16dd23f0177fc743a66d2f2e509285436e2a18f82b3c50e3b489a954af 0638582694d2fbe3162401ce125de4bad307fbf7627e4d3f66e37b5aaec2145a 021cc1c6dba3feb9a896d0d15fd1f97320378886a7c8776667a31a1dd9d735d6 c91fa185d2bd32bdc3f84d152d5929cde23b84125327a73493740fb8faa83ab7 f5438bd3af10519feeec2599a3ba919fcd54cd07494d22a8593af2b9459ee5a3 739956ca070c2fe4754e059cc32254a106780002b7877d80dc5420b9f3a4abc3 03d194b7ec766ef9bd656fbf1a6eff4815f696eb582f1c4cb2f512259b3e3138 4e3e456e8360994aeea94f291b438aff48badba74ec850885219f5496e3f7273 15b719db215509baf74b6249bb7532a5be376f857b204e2858cc9c719a5dacae 86dae99275e80fa98209c7e707c1e09f6c260e59d466b02bfab4fa946635fab4 431d8e8a0d7993ccbb9b304b5752cfde4a78ad2dfd1677bdfce801d07960e895 ce9b76d157d300acb2cdefe3255570d17d2c28e81a60467221358da514909dde 4e0cab5b9a2ebf06e01e238289 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI9 %!PS-AdobeFont-1.1: CMMI9 1.100 %%CreationDate: 1996 Jul 23 07:53:55 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI9) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI9 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 30 /phi put dup 59 /comma put dup 60 /less put dup 61 /slash put dup 71 /G put dup 79 /O put dup 80 /P put dup 83 /S put dup 84 /T put dup 86 /V put dup 88 /X put dup 89 /Y put dup 90 /Z put dup 96 /lscript put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 109 /m put dup 110 /n put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put readonly def /FontBBox{-29 -250 1075 750}readonly def /UniqueXX 5087384 def currentdict end currentfile eexec 80347982ab3942d930e069a70d0d48311d725e830d1c76fba12e12486e989c98 74c2b527f0925722787027f44470d484262c360cdfdddf3657533a57bb16f730 48bfbbfcb73a650484015441fdc837add94ac8fbd2022e3ec8f115d4b4bb7b7f 15388f22cc6198efe768bd9fceb3446ee4a8dc27d6cd152485384ef5f59381ff da43f2d20c8fb08aa27ab2015b774db10dacfdcd33e60f178c461553146ab427 bdd7da12534ba078ad3d780414930da4f8d58abefd45db119b10eb409dd89792 3c6e705479464a4b33ae3d31bfe98efe259f07f7950237bbaee4f7b64ffea83a 757fa717d50c3298392891bfd60e34a056b0d6021da3fd9b8b01bf78b0b23dc4 ea3b0605150d20b27ff9ea5f2524661019d982a2e47cd7c21ee5ca9ed9227821 f8d07119397de26838c11d7b35bcedc43e011626e300f8249ed846d7b5ccbd89 02550cda17ddf113df658fb13f8162681013766863784efac128e01ef997e1a4 30312afac8f3d948edecd7d5090ab5c864b91d7f6e80256f0e1fc99f1102b74c 61cc456e2e1bedf0e627d5f70f738f963a13666405c51ebf23ca077e97570a2f 1118536b92e585cf1dbd5fbf36a0a5d197538c05304e93a15f3c931168d91d42 483ef428b1a3f1b7e548fd1d23b80f5523c8b8bf450b02804fb689f915c86693 f7dfb1c43f681627c7f027021aa3a8179148f1819cd94b8890a9ac63dc1e8a68 f254b64f6f173c3d02e3ebc037da05074017c8b113e94f4e2d26b467ef9da07e afd7ea7c86e025af52c5ceeb835951e67e02a38daf1e9e698bd21996c1071e84 ff7fbe77f6ddf9d06fa92b16ecebcbe0370b5cd9d450d0f2906a105cadf93ed0 0abc7fcf2c996e7c15e452006e35390d99b9cfc59925f1444c20d9c3e1fc2910 32cf9fa9d580eac1bc956334da391b870a757c3bee6aa3e005b20988d8587876 3ced20c6edf2ac2b22890e37ff7aedeb0986d85ae05bc84339bf2116df48c5d1 cc888bb33d409b06dd70ffd0618b2080442aac439aeb39c20a87ad74ef10629c f1604db8611e8e4224c5b21ab0c7ebddc77fe9a283b3a8c6a2a9508f6836e3fc 3eae1366b4da4f44cb7a77fd81d278c17775d56cb28b70f18d894bfd1ec1827f fb176f05df4fcab566e07dded14c57e66105a9e60e32de99118249f2a76e882d 636e4f92112ba31b72786b8fe8509a0d73a4378b1f89f4264ccdef62c74861cb 674cb90b83b0dcd5ee69c985c58ea1234196809fc68f9bfbbe42135d6ef997c8 559fa8c3072943d8a015422b8e5973384f34ec8391ef901135d33ea6c01e5cbc 4e4d1aece6c83f2c22c406c1f8f91430505780c4a5d3421e2e44122e98ebfbe3 4b2ab9c9d40c2fe1d8d2a5fc9427a5d8c2c064d857867b7457df94071072d503 caa631a8001087c18d1b833202f6baa6d09dc5b14ce2fb94c7afcc61b26ad12d a90414750a7776cb3a41c49409b52406330c22dfd36108502da843f77f8d2a9f 1fdef9fe7c016c4e18aff786576c19dac922e89333798d7ae23dc68c887ac784 cebd36ffc00dd0b7e753cd7aa891c5df51fed2497321ef8e4c63295f11cffb3a 89bb399eb2f48a068d92c5c22805ba0a356647ab9e48287926598bc14852198c b5b38fae5f96598c03fdcddc022bcc6af27ef68f41c29c3b561f94075775df43 ea6549076596d27f76809faaa402ae49cedaa086569e929e4098d9ef4e8fdcbe 14a7cf21c2fbef0f1a7db46a6891fbc4fcbce020afb79b40e4b4ecb96e04f2a2 78473958ddbf352fc47a3e6ac883594f059e6a27b0ab93dc6163d336c4c23a2d 4e5495388b1958216e499307df0f7200f68f1a9c2a97a7ac101d248439ad076a 012d3000688d70dd8e34502d0301d53abb348503e79e9e77aeaa67cd48924165 a0013ba55e185984623a19e998f2467088f50a97e1f24fca17150e62c0e569a3 349ab2fb536d617ae15d54bec88f8f4cf9b898836c8fba2b10ba748cad894400 77786ba064f0df2e1e9e0c6e92a5719c8799e26af388599a5c4ed0eb1a43c06e 6ffcc6b8577cc846a592d56a2af592311f9c7dc1489f7755a35e564bd2a84983 f96b8d530ab6a304423a59d4503273936b5cbaec3612e75827f0b5edb71332cc f5f44affbb53ce063738b7eaa74626beab076e56cd7f0fbef676ca4713eb7213 a8b22960c2c4b3491294f610c8fd6871035d1c9abc708b53dd57a65f26c86609 c307cda3936195c318bd095203989aa944081930c9846f417b1cd9afef089959 a5516d11448a19a2ac9e38e8460ac858dec4d20653af3d34c9200b31da7101dc f2ec7a4032b52f3fc366b63e6a5dc46e9e122e3f774ef4f3f770958b03e087b1 8d83d31b401fc733f13fca187b5748bf289fbeedf5a5c389a1376397a6b3eec4 6c8530c2303876a2ed785dcbb0b3a4c4a4490205870ea40127add72556cca567 b2b4c4c59b2fe83f2a9626bbf32f289fee51f65f8c7f185b5eab73a40a3944a8 d2b7cb75b7efa31dc07b72510b79cdbb5f765467f07e73ea40f52c93d393a71c bfd8b8433966c800166d671464cd27bfec0022d2eecc6c80b184fd9ebc31c8fb 56df8465c4e9a80847e94fa277240365232757d0517b84e0500840bce3a05c45 3f164a2c4434b358af3982de12cf063f9132887562b3a9d2ecf06dd2d5ff5a85 f1a60621f59e1178b4abe6c66574856ccf111324c9659093c848353aa4bdab3f b9d8f9967ded267b6adc499c6e656a7e3c0f85b79cf9ab0da536764ac0a7ac9b c02c354b54ff21f320d3a19de484b3ad10e687ca1986c66a6c3b45d98b26097f 973727c195e23b778cfcd2ef9bbca96917abb3675477daa802700af76495fa10 11f74ce58229bea7bcc53afd2d75ad340d25685f7ac18ed4fd62ca7b08d636aa 5ae6eee5c825b8229442e2133dc13d58cd188f6bdb311d43f4815eee982868f8 37dd43b75067372758672882d77a538846aec5726cd92a75664f64e6389889eb efa0cb4f904c8d9765e40cd26262e17742c954a35216a3cce4a096b1e6c4af54 09ada247086fbb4bed4d9b96a327c775e71b5a9268cebe72e5d5f211516f117e 86e1aef2be03f659914e6241239447a6be63cd932d520e2f2770762eb0a16caa b1ecca41374264ec7e96ecc532a2e86cb04d7f22f44f3129ced0e1a88cacdbdd 294e70b65d2563767374270fd6fa01776f5771664d0b159e4980bb45d27d4b10 3725ce9e6c1b6865b65935f910a3a0f1de7f9621573ba95bca434a3c4c4850f2 e8206d60016c43c99337919f6dfca1b24abfc29e1b2b199916cb387bf9739289 0322d9f1ea84a9964da31b53d53cebeea60cb05b5927c66f357074e9fc485a98 e0571e3f5d242d0ab6171e0a2aeccb3be58a3e5dcdebadf33773dfa652bb8138 be73a2229842bff0eb6245b3479da7729231e40a7a48231c9f5c374ba72c9ac7 ee5cb9b58df8537277ca7023bf3fc83c0beb93406be671392ccb3d7eeeb880c1 99bc8ec38ddd75c97db55dc0a70d8915db3681f0d97090ab84942204371d0d8b 189d74c2b7274c155e662e80b34c21634d3d67b094d4c40a00146a1026a80243 d5544c4a52a87add18bc81e97faef47835b323b84cd0c01a2ba8d998215eb942 90ded97a2f1d25817c1f86df805f38bb53b55a2e0044dee9a0620186f119df85 281dfbb637225c7d8d78453b03514aa4cf8af09179bac1987a0b48d46c558c48 e2b8c639e3e340b24b400916c55412ecd694fd133e4cb21a4c03596d826d7e9d dceebae5f1aced1f038051271d57394030f43561a43d0e5e987c09dde9e416bf bb5d49f3f49bfb0461d3cf129c0ed1c28bd9cfca0976dd0a960b32f321a1bdcc e6ad4a159f0bf5651fc12c93e8a397ca30c473bfc71c7a1a1da45dc5f27ab5de 5b7044257c8d2a7253a01e869b7850daee450003c75d9a6318320a975db5625b f807d28251509ebb88d9ca5f84ea67c33262544010f4d1c087c0490f9c94f6ac fbcf939a2ac018cee33995bcf7774b39022e80e7ca7b60033f1226f0452c2803 04bc08e8f7236072ad47f4ff9d594cd734e6c399c6ecb6ee80b714c95022a7db fb95b3c15e2a9f5f1bb7acf877de223a103e3774a7c7174c9d370e6e98ea81a5 fba9d9bde2dea0cfebcb61c26e58c669a27a943eaf86dc49d32d3b31089a6a8d fffaaee93470509bc03a00af79b9ac156246670e7112e965853fa7100182a788 8ca43f85d66330da848379dcaf99d0ff44d8184bc2ad5691a6860ceb7b647aec ddd11d6ce7095f0222a1a8a070e0df1c9c512b8d600b3894876a5df8924fbd91 90f9e6b974efe75145e502513226f7c4a8d20306636ecd0a547868e8b61bb728 e1819b7c37677f36c193261de39c4ec0ff69efd64bd8bcb65dc34062639277e6 5f12384a19f96f205fbd6a1cab0388693b71580a3bbe837b9b8034878942eba3 ca2906c455c37c0abe160e474a3fbbe33539dd5b08005b936984dc857ebb6e85 86dff51287315f1e679f7df5b3ad3d8d606b7f6c4f690cf03b0d85442a0e4f64 026aab116cd616e31435c662dfc607493dfc7a66fd07c4c9f3e5a472093819ff 34916f273d0636593ba88a56e23257a0bf241947dd76a824242514056b83d032 3c6bf5b3f5ad85d1f4cd88a9c9f52a054f83979cb91e20d3e8363cff3c517928 adde26e7f80cf32020acb6a9b58b7ed450098c5b0f354ac82a82d79676db9db2 5d11e5369987d60ead452d4e291bede19abf70f04cf6ec4d133285ef86e64222 80f85ff5f324430c11cb51dc26d8cdd6d8ec8987911c3c4132d02203a1f1bde9 49b25d94b4fddbc5817fa8292ac4ad5b20be1b164bcf2dc7f55add3b6f80dfc1 9ba580da39ac2f16c7c7c4e30055f169f1c4335c091db67e35a7e7590ce08e55 79db1f042ffab0b1b1d09a2d34b35a47b35b9f94d447ab7265e93f33da5ebaa9 0bbe2153723e7cee95c18ee6087c22695878e745ce6a9eeb0118fe55d0ce34d7 0882602e8badab4aef472fc9d3c39f1eee5feda10d9983e13d6541f2855bff4e fa0982f9abd2731c4de81d68409c81acc71e56fb0e7b2cea45d105cb7ad282b5 38ea7a88c479bcf08404d2c979851d025a7d02281cea692b65a3b0d922325723 bc9387b13162be17e5da8b1494d2d7f03118a36b695cae0aae2d0f63a7cf8bbb 286769b1edbb40c6aef7d130fcad013fec7458c5d8bdbd937ee8c4fa9d301f63 dbce0bb1fd08cafe66ceb89df4c7ba935b53853bc0165bd7573390fbdaab8f09 0cc72c1cc3d8a8c5a6f1840971bae1834c6abe31fb7a069e82ce8274e22ffa2a 5e308f40ee6755d80ba097d2d0727ab18075aed930174043a45b82c04f6b4a0c 1fb4f25c1bd6697b02f0ed5ac23256e0e86e79191053b43d868c44d9f9ad567d e95d2223b664c9371a4284381b7bc3cea56d25e3c73d8ce09ea30841647b0457 e673600e56a4b2349ee18feb5fde75e568ae147381d4d068cdd627e9bdc8f51a 43ce22147894c5c54a55125aff00ae488fb62ac9bb8310ed49311f4c6de7dd39 fe371538b10cbd113e00df7951863a433d9c9bb9c36df61f293b5b30851bca63 ebcaaca4c845b89e34070ef443f68957d59853f65d635f5a610515356db86e21 782a74277c011113b809306a4d1acfb2a700bc021bf5dff73400a26f452cd0e5 6fc4e31aa29ec757daffb1f9f4b53b57ce18146bc45f43f4c7206ed63f62a137 8879b91adf10bbf5df5cbd6a638a69af3fba0a87e488ae6d7efa057fcf738425 3e505434eb3bf238744c17db0ca0b66225564ae8174eda02472b4962f7a657d3 ceb11d918b8918a0666204ac3cbf12d67d4e3935642e5d7d7131c576620e263e 4561cf580b709fac96663b372d7587901dc70ef7482c9c18719429ec360e33e9 b921b63c8582702cb20efa3c79f0bc8372b6aa565fe3b619d60d2da8c5e7ce9d 8c14199dac11d0d186e411ae14e3068f9d187f363fbc2ba01bcd12a4da3fa160 a7f0d62eee4d156160dfca1f8c62c145334d98296d39a046160921e0e6a44356 8a0748bb7a07e11e4f37e1bbb2db7833c3d7720eb9122d94c87a31a9d785bd53 f72ed5e2ec06eb4e525d9e2085a3d22d692059315fb00f6d18899f9bc1dea2ff dd31eb540d211cd3380bfae25576ad0d59cb95399271677b50954a93a925a4d0 42e3fdd88e25e89557925de29aefd41c99b1ede5eaa5465deb8bac570d1f9bbf 9bdf62f0282e1a34b3f0e7c2ee45a6f5398676db9d0bbc8e21a10efd8c623db3 5ebf102e7008a05ef6edcf24715121aad7f5e1ed2c36ab02028e76792364435f 7bcef68fd30e4817adfc41830a5a7d26e02525e66933be154ba347db460fd202 3b450d2680c61c70f2c9a53127487c31fbd94a790afa7af0f2b4766198d94083 d4664d33a986df75a9e785e532b0017a5172b4b6aca121fe35370af4af60aaa6 32efd6c72284a2c89229e38f5002c7d65a14802c1eaf2da4f8efde8c4dd4cfe9 b57afad22f70b4a0351a0edd1063d386aa27f3cb2ab8e2d56121a04e440aeabe 699e7a44ffe75479eeffc61d94d16d49a3d5f9f6c5bcc87d4a47a8adfd1b1cc2 39ddb27f3eb7af5f4405adac3aa508bfc455545056dde7130f55d2dd3ecb375e a33078627c9daf8b9b13dc2ae651d23b5ef9972390e33ee5ca9642bfe3cb15d5 e1d234181a8a78ffa7485a292426201f792b703b1c830af8490cddadcd328e5a e490624dd40a4fe57ca0d30592b79f807f9427b93b905be421b3c7bbded5f888 b9782f31c99d9bbaa4a94e7e016443eef727975733a6398586c8c8408d586232 77e4dc480313defdc5c02a7e0f2c374f09e6d76712ec965f2e0d2526f257fea6 2adf550beaf1e3c23b1ca1fa6caeea553b58d64ab44cf1072ea06a6a2a9efce9 f0f5546c7af30518466f9c8668eaca694ddba0e5c4cd91da51ee721e4d9e496b e4643f34a9e0461babc9e67768b2aed2b66d96265243455be45f14896fc7f8a4 f6d59d67e8f2c79163665f1a9412882f3d17b5a34a4863f295c418428e86a16e 6b680e1390c20715f39f64dd1a2979bbc3c658e460aed5b6244f52af6e37fefd 82a887ce6d91882acad16c072c25cf580ab7eebba5a953147b78879cfab3be7d 71a51ba963e85782f0d9accdf493f697cf45eb626aa356df0a75e5cfeab79b76 b185cb9f07a95de952540e7dd03846450ecd577f15b67b2010f955f45f96ed27 e7cde923a72b90b7baa42e30eee29b1a03ccafe2e880fd7c36bc86851c3e752f b12390c2b8f9127979bb0bb0571aa3e6fd79012fb6426e688912796270eeb038 c7bf2db25209dffb60327982604314fb2517ebf5890e6b79b42b83ae12d76c55 f8c4715e80a814cb6b563cc3e7d976f4f948dc92b38133107df805b6d4535d30 bb5b737f6d0e9152fe8ce7646d59fc663135a85f5b2e5c5d02e5405f3b9c1ef8 c0a337644f17fdcbe57f0735a0cce5e997a426b82188165bbf467c824ace9a37 fb029b3475637cb242e2f3185089e9231fa4c214045fa6436300fc88d302fa8a 7413e02df299cad0ac7096779453690f9e5228a1e6309fba51994c890e684d8e 0e2c640e0e7bc2d39407b73fa86132a492631265c94e31b0d32837c6bd2ff366 e3511bfc95706abd9dc427ef11e9937acd5d0f908ab507e5f98b49080aa7953b 1a2ff61e5c056ca5cd35975f132ed89f16b5fde4eca14ee1e28cc63a482f9fb3 882411b4dcc39767c6cbc4bc0cf294f9b4476cbaa87393faa61c7ead99885b33 b26d91843b0fff8391fa8ed0693ff004f333c42d1dfbd5201dc1015bdbbd4e8e 9b204db406b0d1df0eb45b7cf9b1774504dd6430cd6ea7bf870c91d11115f720 560ac5278bf22b60557d8f332a2572eb862fc5b37113da033e5d451a0c773ab2 f5250b301a17e1df8227c0c669037da0b62a1b8f061611e393f87cc3823ba3bf c364c18e1d815d06611a647558ed252e87c227d3940f35a844178da539f23e36 d632deae474d38d73f47efc0b1bc30e020c53b416423d6732eb2090fa2cec86f be1da84a7852c30e44136f3d77d554656fbaa983827d8d839bde77196ec97bae de4cea31e7c3370fe0cd0d7c690b9eee663522ec9255b10ed84617d2927387f6 c1b22d02d545910cfbe15dfb8bae1b5894db16762064aabee51b56991ebf2c01 456b54124507d5654eda71654f95da50a08e750f055ba66cb449a4b19447eebc 4f658396c65c871b3f2e8065755e6aa06b120db2d885ec7f673e8affea7fb112 bd7a0c1291de35845d233f393bee84c96b1e4ca96df8d6b8f1a7bea77e9ae707 c093ffe343e273f533273aa567665359731b1826bd477fdb48b979237d156293 926422fa5a842e6eb3568cbd89ddd217f987c3f6e03a92f2366ce0cf07dd429e 30889dd1058ecd4eebf987dde45aa9484340230ee40c7d71bd52b091edd35da1 c4afbed8351f81149dc74e54a8fce114e42cf296e569d6cffd751ce60527bb10 db414347d36b1004cefd68886133d991ad518ec4b1dc6c120e8a4922b85fc699 ec196e8c8a90d4b3265178df865759f8483747b660d19dc93ebdeca4791b8511 4f20ec6fd489fb712c0640b8af0e443a6333bd20643b80ecd1846e1c669d8147 ada96faada0c7e723c1cca1f938c786ac5906942245c2410752c94a94a9f390e 4df77e8b324d9d8b3ef0d55e135a48717275286749ff3a819626906648b55ba0 7292849e3b7aa85399c95b35ba65e8d88221d6882d1aa4e4e5ece60c5ef56347 7cca4c78b8ef572e023b2e4fdabb2698302c1d11744ceb07b8e3f3e3358a8b7b 32adc486f7f8a73806b4ce1995a13b7860efd6f8baf89db4a91efefc8e7dfae9 2b385d8b83caf92340aa920bbf361e9fd5de3172b8d5cc6ac503af89f2adab11 cf3e15d1d786498838fab8e720f3485e6ec2faf9aa61aabd3cf00697e8983fbc 97179aee3500467be81345a97cca088e6d6814566bb0108548608e73a5408cea 18ef7a547c7f5c217a5bb8b2748ae1188e780e6d2e3a7c4db2a08492aec04505 1507f1211f45c20dd3b33e787d5fd399f3d0acdb168536892eebf188f1f8663d 0350e86ad4849ebd67d61de8840ba5669482584d20d692bc27e1c12aa92e5b0b 2d04c6225a23771b4b50ca1d508735e2738945d81a61724bd76266cc1fd0a84c 475dbc3be857135b7a9dcd4fdf569fe4da7dcc53d000398be3f7886b547bbe98 611b0ee2175d3bc63578e5eb6e89bf51fcb879068fa1a1c22ffd3a6b36fcc757 1e694c80b846a899ae0a6d82ddaf9b4ba5a793c08c89fb5329e3bc3cbc4d7a21 9428f0d8c33bd899f7fe8041ddc88e2f27fb75f64c85a1817c4267fd306ec4d7 387d3130571e74367c08fc5c6fc1c4fb0b8e09386eb52994701bfbfdba050e94 9b33c1325fdbb8a1d1a601241df8965dcf729af3da13c53a1156705efc23bc34 e323bb45825a8fa7b3e4bf9b6d3b6c6439a0653b87f6095b0e721e5c6d07e91f 97ad6bf7261f700f940d1c7e71e8ab43ce4b15bace857c5d4fc79ab50e5dc41a 72d0809e48677b99f78f86acbb89f0645fde94cbc943b73854fe5c00e0671792 ff20f7b3cbd46c9624c6052cd29a2620d972c66cd27b8f180ba512ec1022a7b4 ec197cacb28d17a0276c00a2a6ff03ebf2ec24e90334c20d448c08cba6f63589 c322b5e0f7fb17a969656391c1092e936ae3b089fb58851c3c144ec085d0e2fb f2545f376e9309e634c2cd932f2577346d43f5e4792bb552eb3e53aadd761c8a 0272ac2ddaa522bc34e828d6c4fe8d6736b0861ee564f03f30400c2752a72a44 14dd02db8ef2e601c41efaccc15b6eb6f3af0ac761e9b5314a1933803c71fc88 4eb73cb802213fcca3cc333bb8e7a1a6680bd812eca41439cc9e4c6c3b286edc a1cea82aef70be6364a7fe3292123721288c65fd14ed61ea5dcf98f24032b77d 38e22d2ace7335bbf5e30ad52fc237ea357da3f4c244d7db26afffcf6019b6d3 a0207b3b39d5df701cd547bbe3ff045972ffc6990013638d2b790c55a6770571 bac8619e8d6dce7a05f1a40c24fcbe7c4735e15609cbfb5afc6e98035a90e24e f58480b44a0522be6bcbec7c35b1781fa9cbcb82789a409bab27cd50e507c961 03b522d3d13c1476cdca3bec3be2dc717824a6777fbdc9f75764753572897c24 1e126e575ac08f2441668c8081c74701d7317d000b6cca3daff952438d08b4dc ebd370 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont TeXDict begin 40258431 52099146 1000 600 600 (cdtbasic.dvi) @start /Fa 137[31 2[29 9[22 2[30 102[{}4 49.8132 /CMMI6 rf /Fb 241[32 14[{}1 49.8132 /CMSY6 rf /Fc 133[37 7[25 5[17 4[42 1[42 2[42 42 97[{TeXBase1Encoding ReEncodeFont}7 74.7198 /Helvetica-Oblique rf /Fd 251[60 4[{}1 74.7198 /MSAM10 rf /Fe 134[29 1[44 2[18 26 26 1[33 1[33 48 18 2[18 3[29 1[29 1[33 97[{TeXBase1Encoding ReEncodeFont}13 66.4176 /Times-Italic rf /Ff 205[25 25 49[{ TeXBase1Encoding ReEncodeFont}2 49.8132 /Times-Roman rf /Fg 205[30 50[{}1 49.8132 /CMR6 rf /Fh 137[41 2[30 3[38 43 64 21 2[21 1[38 23 2[34 37[60 3[38 38 1[38 1[38 38 38 38 38 4[60 1[30 30 29[55 7[60 2[{}24 74.7198 /CMR9 rf /Fi 149[21 2[38 38 9[51 51 11[61 26[68 30[60 60 4[38 14[60{}11 74.7198 /CMSY9 rf /Fj 135[44 55 37 44 28 36 35 34 39 1[46 68 6[37 36 40 33 33 1[32 5[52 45 63 1[45 1[45 47 2[49 58 7[60 9[38 60 21 28[46 30[{}30 74.7198 /CMMI9 rf /Fk 87[25 19[25 25 24[37 37 37 54 37 42 21 37 25 1[42 42 42 62 17 37 17 17 42 42 21 42 42 37 42 42 12[46 50 54 1[50 58 54 62 42 2[21 54 58 46 50 54 54 50 50 5[21 21 42 8[42 1[21 25 21 2[25 25 17 35[37 37 2[{TeXBase1Encoding ReEncodeFont}57 74.7198 /Helvetica rf /Fl 138[46 2[29 8[21 1[46 1[42 30[46 11[25 42 42 42 42 42 42 42 42 42 42 48[{TeXBase1Encoding ReEncodeFont}17 74.7198 /Helvetica-Bold rf /Fm 107[29 29 25[33 33 48 33 33 18 26 22 1[33 33 33 52 18 33 1[18 33 33 22 29 33 29 33 29 3[22 1[22 5[48 41 37 3[48 48 59 3[22 1[48 37 41 48 44 1[48 7[33 33 33 33 33 1[33 33 33 33 1[17 22 17 40[37 37 2[{TeXBase1Encoding ReEncodeFont}54 66.4176 /Times-Roman rf /Fn 133[33 37 1[54 37 42 25 29 33 2[37 42 62 21 2[21 42 37 25 33 42 33 42 37 3[25 1[25 6[50 3[46 4[58 6[54 9[25 37 37 1[37 37 37 37 37 37 37 2[25 19 2[25 25 37[42 2[{TeXBase1Encoding ReEncodeFont}42 74.7198 /Times-Bold rf /Fo 87[25 45[29 33 33 50 33 37 21 29 29 37 37 37 37 54 21 33 1[21 37 37 21 33 37 33 37 37 6[42 2[62 46 54 42 37 46 54 46 54 50 62 42 2[25 54 54 46 46 54 50 46 46 1[37 4[25 6[37 37 3[19 25 19 40[37 37 2[{TeXBase1Encoding ReEncodeFont}57 74.7198 /Times-Italic rf /Fp 75[25 11[25 16[75 37 1[33 33 24[33 37 37 54 37 37 21 29 25 37 37 37 37 58 21 37 21 21 37 37 25 33 37 33 37 33 3[25 1[25 1[54 54 71 54 54 46 42 50 1[42 54 54 66 46 54 29 25 54 54 42 46 54 50 50 54 1[33 3[21 21 37 37 37 37 37 37 37 37 37 37 1[19 25 19 2[25 25 25 58 7[25 12[21 13[42 42 2[{TeXBase1Encoding ReEncodeFont}82 74.7198 /Times-Roman rf /Fq 134[46 46 1[46 51 28 46 32 2[51 51 74 23 2[23 1[51 28 46 51 46 51 46 10[55 1[51 1[60 1[55 3[51 2[23 1[65 51 55 60 60 1[60 6[28 46 46 46 46 46 46 46 46 46 46[51 2[{TeXBase1Encoding ReEncodeFont}42 83.022 /Helvetica-Bold rf /Fr 134[42 2[42 46 23 42 28 2[46 46 1[18 42 18 18 2[23 46 46 42 46 46 11[60 1[55 15[60 55 55 84 17[23 1[23 44[{TeXBase1Encoding ReEncodeFont}26 83.022 /Helvetica-Oblique rf /Fs 136[72 1[55 28 1[33 2[55 55 2[50 1[22 55 2[55 55 50 1[55 13[66 72 7[50 74[{ TeXBase1Encoding ReEncodeFont}16 99.6264 /Helvetica rf /Ft 133[58 65 2[65 71 39 65 45 2[71 71 1[32 2[32 71 2[65 71 65 71 65 12[71 1[84 1[78 8[90 2[84 84 84 66[{ TeXBase1Encoding ReEncodeFont}24 116.231 /Helvetica-Bold rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%EndSetup %%Page: 1 1 1 0 bop 673 584 a Ft(Constrained)31 b(Delauna)n(y)g(T)-7 b(etrahedralizations)31 b(and)976 700 y(Pr)n(o)n(v)n(ab)o(l)n(y)g(Good) i(Boundar)q(y)e(Reco)n(ver)q(y)1317 900 y Fs(Jonathan)f(Richard)e(She)n (wchuk)539 1099 y Fr(Univ)n(ersity)22 b(of)i(Calif)n(or)r(nia)g(at)f (Ber)q(k)n(ele)n(y)-8 b(,)24 b(Ber)q(k)n(ele)n(y)-8 b(,)24 b(CA,)f(U)m(.S)n(.A.)h(jrs@cs)o(.ber)q(k)n(ele)n(y)-8 b(.edu)1782 1788 y Fq(Abstract)0 1970 y Fp(In)17 b(tw)o(o)f (dimensions,)i(a)f Fo(constr)o(ained)h(Delaunay)g(triangulation)f Fp(\(CDT\))f(respects)h(a)f(set)h(of)f(se)o(gments)i(that)e(constrain)h (the)g(edges)g(of)g(the)f(triangula-)0 2062 y(tion,)h(while)f(still)g (maintaining)h(most)g(of)f(the)h(f)o(a)o(v)o(orable)g(properties)g(of)f (ordinary)i(Delaunay)f(triangulations)h(\(such)f(as)f(maximizing)i(the) e(minimum)0 2153 y(angle\).)30 b(CDTs)21 b(solv)o(e)h(the)f(problem)h (of)f(enforcing)h Fo(boundary)i(conformity)p Fp(\227ensuring)e(that)f (triangulation)h(edges)g(co)o(v)o(er)g(the)f(boundaries)i(\(both)0 2244 y(interior)g(and)h(e)o(xterior\))f(of)g(the)g(domain)h(being)g (modeled.)37 b(This)23 b(paper)h(discusses)g(the)f(three-dimensional)h (analogue,)i Fo(constr)o(ained)e(Delaunay)0 2336 y(tetr)o(ahedr)o (alizations)f Fp(\(also)e(called)g(CDTs\),)g(and)h(their)f(adv)n (antages)i(in)e(mesh)h(generation.)32 b(CDTs)20 b(maintain)i(most)f(of) g(the)h(f)o(a)o(v)o(orable)f(properties)0 2427 y(of)26 b(ordinary)i(Delaunay)f(tetrahedralizations,)i(b)o(ut)d(the)o(y)h(are)f (more)h(dif)n(\002cult)f(to)g(w)o(ork)h(with,)h(because)g(some)f(sets)f (of)g(constraining)i(se)o(gments)0 2518 y(and)22 b(f)o(acets)g(simply)g (do)g(not)g(ha)o(v)o(e)g(CDTs.)31 b(Ho)n(we)n(v)o(er)m(,)23 b(boundary)h(conformity)e(can)g(al)o(w)o(ays)h(be)f(enforced)h(by)f (judicious)g(insertion)g(of)g(additional)0 2610 y(v)o(ertices,)e (combined)i(with)e(CDTs.)27 b(This)20 b(approach)i(has)e(three)h(adv)n (antages)h(o)o(v)o(er)e(other)h(methods)g(for)g(boundary)h(reco)o(v)o (ery:)27 b(it)19 b(usually)i(requires)0 2701 y(fe)n(wer)26 b(additional)h(v)o(ertices)f(to)h(be)f(inserted,)i(it)e(yields)g(pro)o (v)n(ably)i(good)g(bounds)f(on)g(edge)g(lengths)g(\(i.e.)e(edges)j(are) e(not)g(made)h(unnecessarily)0 2792 y(short\),)19 b(and)g(it)f (interacts)h(well)g(with)f(pro)o(v)n(ably)i(good)h(Delaunay)f (re\002nement)f(methods)h(for)f(tetrahedral)g(mesh)g(generation.)0 2967 y Fn(K)n(eyw)o(ords:)28 b(\002nite)19 b(element)h(mesh)g (generation,)h(tetrahedral)g(mesh)f(generation,)h(constrained)f (Delaunay)g(tetrahedralization,)h(bound-)0 3058 y(ary)f(conf)n(ormity)l (,)f(boundary)f(r)o(eco)o(v)o(ery)594 3322 y Fq(1)83 b(Intr)n(oduction)0 3488 y Fp(Delaunay)40 b(tetrahedra)g(ha)o(v)o(e)g (desirable)g(properties)g(that)f(mak)o(e)0 3580 y(them)f(popular)i(for) e(\002nite)g(element)g(meshes.)82 b(These)39 b(proper)o(-)0 3671 y(ties)23 b(include)i(their)e(tendenc)o(y)j(to)d(f)o(a)o(v)o(or)h (\223round\224)h(tetrahedra)f(o)o(v)o(er)0 3762 y(\223skinn)o(y\224)k (\(high)g(aspect)f(ratio\))g(tetrahedra,)i(their)d(suitability)h(for)0 3854 y(interpolation)18 b([25)q(,)f(24)q(],)g(and)i(their)e (mathematical)i(properties)f(that)0 3945 y(allo)n(w)26 b(Delaunay)g(re\002nement)g(algorithms)g([6)q(,)f(8,)g(14)q(,)g(21)q(,) g(22)q(])g(to)0 4036 y(generate)20 b(meshes)f(that)g(ha)o(v)o(e)g(pro)o (v)n(ably)i(good)f(properties.)0 4177 y(Ho)n(we)n(v)o(er)m(,)44 b(Delaunay)c(tetrahedralizations)f(are)f(con)m(v)o(e)o(x.)84 b(The)0 4269 y(domains)31 b(modeled)f(with)g(\002nite)f(element)h (methods)g(usually)h(are)0 4360 y(not.)57 b(Domains)30 b(ha)o(v)o(e)g(boundaries)i(that)e(must)g(be)g(respected)h(by)0 4451 y(the)37 b(mesh,)k(including)d(both)f(e)o(xterior)f(boundaries)j (that)d(bound)0 4543 y(the)27 b(mesh,)j(and)e(interior)f(boundaries)h (used)g(to)f(separate)h(re)o(gions)0 4634 y(ha)o(ving)k(dif)n(ferent)g (material)f(properties)h(\(e.g.)f(the)h(interf)o(ace)g(be-)0 4725 y(tween)16 b(tw)o(o)g(metals)g(in)g(a)g(heat)g(conduction)i (problem\),)f(to)f(represent)0 4817 y(kno)n(wn)h(discontinuities)f(in)f (the)g(solution,)i(or)e(to)g(establish)h(v)o(ertices,)p 0 4870 720 4 v 0 4947 a Fm(Supported)h(in)f(part)g(by)g(the)g(National) i(Science)g(F)o(oundation)g(under)e(A)-6 b(w)o(ards)0 5018 y(A)m(CI-9875170,)25 b(CMS-9980063,)g(and)e(EIA-9802069,)i(and)e (in)g(part)g(by)g(a)0 5089 y(gift)c(from)e(the)i(Oka)o(w)o(a)f(F)o (oundation.)25 b(The)18 b(vie)n(ws)h(and)f(conclusions)i(in)e(this)0 5161 y(document)h(are)g(those)g(of)e(the)i(author)l(.)25 b(The)o(y)18 b(are)g(not)h(endorsed)g(by)l(,)e(and)i(do)0 5232 y(not)i(necessarily)i(re\003ect)f(the)f(position)h(or)e(policies)i (of,)f(the)g(Oka)o(w)o(a)g(F)o(oun-)0 5304 y(dation)e(or)e(the)g(U.)g (S.)f(Go)o(v)o(ernment.)2430 4225 y @beginspecial 0 @llx 0 @lly 400 @urx 346 @ury 1368 @rwi @setspecial %%BeginDocument: whycdt2.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: whycdt2.fig %%Creator: fig2dev Version 3.1 Patchlevel 2 %%CreationDate: Sun Dec 5 02:27:52 1999 %%For: jrs@triangle (Jonathan R Shewchuk) %Magnification: 1.00 %%Orientation: Portrait %%BoundingBox: 0 0 400 346 %%Pages: 0 %%BeginSetup %%IncludeFeature: *PageSize Letter %%EndSetup %%EndComments /MyAppDict 100 dict dup begin def /$F2psDict 200 dict def F2psDictbeginF2psDict begin F2psDictbeginF2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -160.0 398.0 translate 1 -1 scale .9 .9 scale % to make patterns same scale as in xfig % This junk string is used by the show operators /PATsstr 1 string def /PATawidthshow { % cx cy cchar rx ry string % Loop over each character in the string { % cx cy cchar rx ry char % Show the character dup % cx cy cchar rx ry char char PATsstr dup 0 4 -1 roll put % cx cy cchar rx ry char (char) false charpath % cx cy cchar rx ry char /clip load PATdraw % Move past the character (charpath modified the % current point) currentpoint % cx cy cchar rx ry char x y newpath moveto % cx cy cchar rx ry char % Reposition by cx,cy if the character in the string is cchar 3 index eq { % cx cy cchar rx ry 4 index 4 index rmoveto } if % Reposition all characters by rx ry 2 copy rmoveto % cx cy cchar rx ry } forall pop pop pop pop pop % - currentpoint newpath moveto } bind def /PATcg { 7 dict dup begin /lw currentlinewidth def /lc currentlinecap def /lj currentlinejoin def /ml currentmiterlimit def /ds [ currentdash ] def /cc [ currentrgbcolor ] def /cm matrix currentmatrix def end } bind def % PATdraw - calculates the boundaries of the object and % fills it with the current pattern /PATdraw { % proc save exch PATpcalc % proc nw nh px py 5 -1 roll exec % nw nh px py newpath PATfill % - restore } bind def % PATfill - performs the tiling for the shape /PATfill { % nw nh px py PATfill - PATDict /CurrentPattern get dup begin setfont % Set the coordinate system to Pattern Space PatternGState PATsg % Set the color for uncolored pattezns PaintType 2 eq { PATDict /PColor get PATsc } if % Create the string for showing 3 index string % nw nh px py str % Loop for each of the pattern sources 0 1 Multi 1 sub { % nw nh px py str source % Move to the starting location 3 index 3 index % nw nh px py str source px py moveto % nw nh px py str source % For multiple sources, set the appropriate color Multi 1 ne { dup PC exch get PATsc } if % Set the appropriate string for the source 0 1 7 index 1 sub { 2 index exch 2 index put } for pop % Loop over the number of vertical cells 3 index % nw nh px py str nh { % nw nh px py str currentpoint % nw nh px py str cx cy 2 index show % nw nh px py str cx cy YStep add moveto % nw nh px py str } repeat % nw nh px py str } for 5 { pop } repeat end } bind def % PATkshow - kshow with the current pattezn /PATkshow { % proc string exch bind % string proc 1 index 0 get % string proc char % Loop over all but the last character in the string 0 1 4 index length 2 sub { % string proc char idx % Find the n+1th character in the string 3 index exch 1 add get % string proe char char+1 exch 2 copy % strinq proc char+1 char char+1 char % Now show the nth character PATsstr dup 0 4 -1 roll put % string proc chr+1 chr chr+1 (chr) false charpath % string proc char+1 char char+1 /clip load PATdraw % Move past the character (charpath modified the current point) currentpoint newpath moveto % Execute the user proc (should consume char and char+1) mark 3 1 roll % string proc char+1 mark char char+1 4 index exec % string proc char+1 mark... cleartomark % string proc char+1 } for % Now display the last character PATsstr dup 0 4 -1 roll put % string proc (char+1) false charpath % string proc /clip load PATdraw neewath pop pop % - } bind def % PATmp - the makepattern equivalent /PATmp { % patdict patmtx PATmp patinstance exch dup length 7 add % We will add 6 new entries plus 1 FID dict copy % Create a new dictionary begin % Matrix to install when painting the pattern TilingType PATtcalc /PatternGState PATcg def PatternGState /cm 3 -1 roll put % Check for multi pattern sources (Level 1 fast color patterns) currentdict /Multi known not { /Multi 1 def } if % Font dictionary definitions /FontType 3 def % Create a dummy encoding vector /Encoding 256 array def 3 string 0 1 255 { Encoding exch dup 3 index cvs cvn put } for pop /FontMatrix matrix def /FontBBox BBox def /BuildChar { mark 3 1 roll % mark dict char exch begin Multi 1 ne {PaintData exch get}{pop} ifelse % mark [paintdata] PaintType 2 eq Multi 1 ne or { XStep 0 FontBBox aload pop setcachedevice } { XStep 0 setcharwidth } ifelse currentdict % mark [paintdata] dict /PaintProc load % mark [paintdata] dict paintproc end gsave false PATredef exec true PATredef grestore cleartomark % - } bind def currentdict end % newdict /foo exch % /foo newlict definefont % newfont } bind def % PATpcalc - calculates the starting point and width/height % of the tile fill for the shape /PATpcalc { % - PATpcalc nw nh px py PATDict /CurrentPattern get begin gsave % Set up the coordinate system to Pattern Space % and lock down pattern PatternGState /cm get setmatrix BBox aload pop pop pop translate % Determine the bounding box of the shape pathbbox % llx lly urx ury grestore % Determine (nw, nh) the # of cells to paint width and height PatHeight div ceiling % llx lly urx qh 4 1 roll % qh llx lly urx PatWidth div ceiling % qh llx lly qw 4 1 roll % qw qh llx lly PatHeight div floor % qw qh llx ph 4 1 roll % ph qw qh llx PatWidth div floor % ph qw qh pw 4 1 roll % pw ph qw qh 2 index sub cvi abs % pw ph qs qh-ph exch 3 index sub cvi abs exch % pw ph nw=qw-pw nh=qh-ph % Determine the starting point of the pattern fill %(px, py) 4 2 roll % nw nh pw ph PatHeight mul % nw nh pw py exch % nw nh py pw PatWidth mul exch % nw nh px py end } bind def % Save the original routines so that we can use them later on /oldfill /fill load def /oldeofill /eofill load def /oldstroke /stroke load def /oldshow /show load def /oldashow /ashow load def /oldwidthshow /widthshow load def /oldawidthshow /awidthshow load def /oldkshow /kshow load def % These defs are necessary so that subsequent procs don't bind in % the originals /fill { oldfill } bind def /eofill { oldeofill } bind def /stroke { oldstroke } bind def /show { oldshow } bind def /ashow { oldashow } bind def /widthshow { oldwidthshow } bind def /awidthshow { oldawidthshow } bind def /kshow { oldkshow } bind def /PATredef { MyAppDict begin { /fill { /clip load PATdraw newpath } bind def /eofill { /eoclip load PATdraw newpath } bind def /stroke { PATstroke } bind def /show { 0 0 null 0 0 6 -1 roll PATawidthshow } bind def /ashow { 0 0 null 6 3 roll PATawidthshow } bind def /widthshow { 0 0 3 -1 roll PATawidthshow } bind def /awidthshow { PATawidthshow } bind def /kshow { PATkshow } bind def } { /fill { oldfill } bind def /eofill { oldeofill } bind def /stroke { oldstroke } bind def /show { oldshow } bind def /ashow { oldashow } bind def /widthshow { oldwidthshow } bind def /awidthshow { oldawidthshow } bind def /kshow { oldkshow } bind def } ifelse end } bind def false PATredef % Conditionally define setcmykcolor if not available /setcmykcolor where { pop } { /setcmykcolor { 1 sub 4 1 roll 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat setrgbcolor - pop } bind def } ifelse /PATsc { % colorarray aload length % c1 ... cn length dup 1 eq { pop setgray } { 3 eq { setrgbcolor } { setcmykcolor } ifelse } ifelse } bind def /PATsg { % dict begin lw setlinewidth lc setlinecap lj setlinejoin ml setmiterlimit ds aload pop setdash cc aload pop setrgbcolor cm setmatrix end } bind def /PATDict 3 dict def /PATsp { true PATredef PATDict begin /CurrentPattern exch def % If it's an uncolored pattern, save the color CurrentPattern /PaintType get 2 eq { /PColor exch def } if /CColor [ currentrgbcolor ] def end } bind def % PATstroke - stroke with the current pattern /PATstroke { countdictstack save mark { currentpoint strokepath moveto PATpcalc % proc nw nh px py clip newpath PATfill } stopped { (*** PATstroke Warning: Path is too complex, stroking with gray) = cleartomark restore countdictstack exch sub dup 0 gt { { end } repeat } { pop } ifelse gsave 0.5 setgray oldstroke grestore } { pop restore pop } ifelse newpath } bind def /PATtcalc { % modmtx tilingtype PATtcalc tilematrix % Note: tiling types 2 and 3 are not supported gsave exch concat % tilingtype matrix currentmatrix exch % cmtx tilingtype % Tiling type 1 and 3: constant spacing 2 ne { % Distort the pattern so that it occupies % an integral number of device pixels dup 4 get exch dup 5 get exch % tx ty cmtx XStep 0 dtransform round exch round exch % tx ty cmtx dx.x dx.y XStep div exch XStep div exch % tx ty cmtx a b 0 YStep dtransform round exch round exch % tx ty cmtx a b dy.x dy.y YStep div exch YStep div exch % tx ty cmtx a b c d 7 -3 roll astore % { a b c d tx ty } } if grestore } bind def /PATusp { false PATredef PATDict begin CColor PATsc end } bind def % crosshatch30 11 dict begin /PaintType 1 def /PatternType 1 def /TilingType 1 def /BBox [0 0 1 1] def /XStep 1 def /YStep 1 def /PatWidth 1 def /PatHeight 1 def /Multi 2 def /PaintData [ { clippath } bind { 32 16 true [ 32 0 0 -16 0 16 ] {<033003300c0c0c0c30033003c000c000300330030c0c0c0c 0330033000c000c0033003300c0c0c0c30033003c000c000 300330030c0c0c0c0330033000c000c0>} imagemask } bind ] def /PaintProc { pop exec fill } def currentdict end /P3 exch def 1.1111 1.1111 scale %restore scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog F2psBegin10setmiterlimitn0792m00l6120l612792lcpclip0.060000.06000sc1slj15.000slwF2psBegin 10 setmiterlimit n 0 792 m 0 0 l 612 0 l 612 792 l cp clip 0.06000 0.06000 sc 1 slj 15.000 slw % Polyline n 2700 1350 m 2700 6600 l gs col0 s gr % Polyline n 2700 6600 m 8850 6600 l gs col0 s gr % Polyline n 8850 6600 m 8850 1350 l gs col0 s gr % Polyline n 8850 1350 m 2700 1350 l gs col0 s gr % Polyline n 2700 1350 m 3150 900 l gs col0 s gr % Polyline n 3150 900 m 9300 900 l gs col0 s gr % Polyline n 9300 900 m 8850 1350 l gs col0 s gr % Polyline n 9300 900 m 9300 6150 l gs col0 s gr % Polyline n 9300 6150 m 8850 6600 l gs col0 s gr 7.500 slw % Polyline [66.7] 0 sd n 2700 6600 m 3150 6150 l gs col0 s gr [] 0 sd % Polyline [66.7] 0 sd n 3150 6150 m 3150 900 l gs col0 s gr [] 0 sd % Polyline [66.7] 0 sd n 3150 6150 m 9300 6150 l gs col0 s gr [] 0 sd 15.000 slw % Polyline n 5700 4800 m 4950 6150 l 6000 3000 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 330.00 200.00] PATmp PATsp ef gr PATusp gs col0 s gr % Polyline n 5700 4800 m 5925 6225 l 6900 6300 l 6000 3000 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 380.00 200.00] PATmp PATsp ef gr PATusp gs col0 s gr % Polyline n 5700 4800 m 7200 6300 l 6000 3000 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 380.00 200.00] PATmp PATsp ef gr PATusp gs col0 s gr % Polyline n 5700 4800 m 4500 6300 l 3975 6075 l 6000 2925 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 265.00 195.00] PATmp PATsp ef gr PATusp gs col0 s gr % Polyline n 5700 4800 m 6000 2925 l 3600 5700 l 5700 4800 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 240.00 195.00] PATmp PATsp ef gr PATusp gs col0 s gr % Polyline n 5700 4800 m 7275 5625 l 8100 5700 l 8175 5175 l 6000 2925 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 380.00 195.00] PATmp PATsp ef gr PATusp gs col0 s gr % Polyline n 5700 4800 m 8550 4800 l 6000 2925 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 380.00 195.00] PATmp PATsp ef gr PATusp gs col0 s gr % Polyline n 6000 3000 m 5700 4800 l 3900 5100 l 3375 4800 l 3225 3450 l 6000 3000 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 215.00 200.00] PATmp PATsp ef gr PATusp gs col0 s gr % Polyline n 5700 4800 m 3000 3900 l 6000 3000 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 200.00 200.00] PATmp PATsp ef gr PATusp gs col0 s gr % Polyline n 6000 3000 m 5700 4800 l 8700 3900 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 380.00 200.00] PATmp PATsp ef gr PATusp gs col0 s gr % Polyline n 5700 4800 m 3150 3000 l 3525 2250 l 6000 3000 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 210.00 150.00] PATmp PATsp ef gr PATusp gs col0 s gr % Polyline n 6000 3000 m 5700 4800 l 8550 3000 l 8025 2550 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 380.00 170.00] PATmp PATsp ef gr PATusp gs col0 s gr % Polyline n 6000 3000 m 8100 2100 l 5700 4800 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 380.00 140.00] PATmp PATsp ef gr PATusp gs col0 s gr % Polyline n 5700 4800 m 4425 4050 l 3900 1800 l 6000 3000 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 260.00 120.00] PATmp PATsp ef gr PATusp gs col0 s gr % Polyline n 6000 3000 m 4500 1500 l 5700 4800 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 300.00 100.00] PATmp PATsp ef gr PATusp gs col0 s gr % Polyline n 5700 4800 m 6825 3825 l 7200 1500 l 6000 3000 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 380.00 100.00] PATmp PATsp ef gr PATusp gs col0 s gr 7.500 slw % Ellipse n 4500 6300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3600 5700 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3000 3900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 4500 1500 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7200 1500 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 8100 2100 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 8550 3000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 8700 3900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 8550 4800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 8100 5700 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7200 6300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6000 3000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 5700 4800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3900 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3525 2250 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3225 3450 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3975 6075 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3375 4800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3900 5100 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 4425 4050 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3150 3000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 8025 2550 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 8175 5175 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7275 5625 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 4950 6150 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 5925 6225 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6900 6300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6825 3825 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr F2psBegin10setmiterlimitn0792m00l6120l612792lcpclip0.060000.06000sc1slj15.000slwF2psEnd rs end %%EndDocument @endspecial 2100 4391 a Fl(Figure)25 b(1:)36 b Fk(It)26 b(is)h(dif\002cult)e(to)h(mesh)g(the)f(inter)q(ior)f(of)i(this)g(bo)n (x)2100 4473 y(with)19 b(Delauna)n(y)f(tetr)o(ahedr)o(a)f(that)i(conf)n (or)r(m)g(to)h(all)f(the)g(f)n(acets)o(.)2100 4738 y Fp(edges,)d(and)g(f)o(aces)g(of)f(the)g(mesh)h(where)f(boundary)i (conditions)f(may)2100 4829 y(be)j(applied)h(ef)n(fecti)n(v)o(ely)-5 b(.)2100 4970 y(The)19 b(problem)i(is)e(most)g(dif)n(\002cult)g(for)h (domains)g(where)g(boundaries)2100 5062 y(are)j(separated)g(by)g(small) g(dihedral)g(angles,)h(as)e(in)h(Figure)g(1.)34 b(V)-8 b(er)o(-)2100 5153 y(tices)32 b(inserted)h(to)g(reco)o(v)o(er)g(one)g (boundary\227so)i(that)e(it)e(is)i(rep-)2100 5244 y(resented)39 b(as)f(a)g(union)h(of)f(triangular)g(f)o(aces)h(of)f(the)g(Delaunay) 2100 5336 y(tetrahedralization\227are)22 b(lik)o(ely)f(to)g(knock)h(f)o (aces)g(of)f(the)g(adjacent)p eop %%Page: 2 2 2 1 bop 0 83 a Fp(boundaries)21 b(out)e(of)g(the)g(Delaunay)h (tetrahedralization.)0 224 y(There)41 b(are)f(three)h(established)h (approaches)g(to)f(this)f(problem.)0 315 y(One)27 b(is)f(the)h Fo(conforming)g(Delaunay)h Fp(approach,)i(in)d(which)f(addi-)0 407 y(tional)21 b(v)o(ertices)h(are)f(inserted)h(into)g(the)f (mesh\227while)h(the)g(Delau-)0 498 y(nay)29 b(property)g(of)g(the)f (tetrahedralization)h(is)f(maintained\227until)0 589 y(it)c Fo(conforms)h Fp(to)g(the)f(boundaries,)k(meaning)d(that)g(each) g(boundary)0 681 y(is)k(represented)i(by)f(a)f(union)h(of)g(triangular) g(f)o(aces)g(of)f(the)h(mesh.)0 772 y(The)h(question)h(of)f Fo(wher)m(e)g Fp(to)g(insert)g(additional)h(v)o(ertices)f(to)f(ob-)0 863 y(tain)25 b(boundary)h(conformity)g(is)e(dif)n(\002cult.)40 b(Murphy)-5 b(,)27 b(Mount,)g(and)0 955 y(Gable)d([16])g(and)g (Cohen-Steiner)m(,)h(de)e(V)-8 b(erdi)t(\036)-29 b(ere,)25 b(and)f(Yvinec)g([4])0 1046 y(of)n(fer)e(algorithms)g(that)g(w)o(ork)h (e)n(v)o(en)g(with)e(dif)n(\002cult)h(e)o(xamples)h(lik)o(e)0 1137 y(the)f(box)h(in)f(Figure)f(1.)33 b(Ho)n(we)n(v)o(er)m(,)23 b(their)f(tetrahedralizations)g(may)0 1229 y(ha)o(v)o(e)27 b(v)o(ery)g(short)g(edges,)i(which)e(engender)h(v)o(ery)f(small)g (tetrahe-)0 1320 y(dra,)g(and)e(the)h(numbers)g(of)f(e)o(xtra)g(v)o (ertices)h(can)f(be)h(lar)o(ge.)42 b(These)0 1411 y(algorithms)21 b(might)f(not)g(e)n(v)o(en)h(produce)h(meshes)f(whose)g(comple)o(x-)0 1503 y(ity)g(is)f(polynomial)i(in)f(the)g(comple)o(xity)h(of)f(the)g (description)h(of)f(the)0 1594 y(input)27 b(domain.)48 b(\(The)27 b(approach)h(described)g(in)f(this)f(paper)i(does)0 1685 y(not)h(ha)o(v)o(e)g(polynomial)i(bounds)f(either)m(,)h(b)o(ut)e (it)f(does)i(reduce)g(the)0 1777 y(number)c(of)f(e)o(xtra)g(v)o (ertices.\))41 b(And)26 b(nobody)g(kno)n(ws)g(ho)n(w)g(to)f(rec-)0 1868 y(oncile)e(the)f(need)h(for)f(good-quality)i(elements)f(with)e (the)i(need)g(for)0 1959 y(boundary)e(conformity)f(in)e(a)h(purely)h (Delaunay)g(mesh.)0 2100 y(The)j(second)g(approach,)i(and)f(the)e(most) h(common)h(one)f(in)g(the)g(en-)0 2192 y(gineering)h(literature)e([11)q (,)g(12)q(,)g(29)q(],)h(might)g(be)g(called)g(the)g Fo(almost)0 2283 y(Delaunay)h Fp(approach.)34 b(Missing)23 b(domain)g(boundaries)h (are)e(reco)o(v-)0 2374 y(ered)16 b(by)f(inserting)h(additional)g(v)o (ertices)f(where)h(the)f(boundaries)i(in-)0 2466 y(tersect)h(the)g(f)o (aces)h(or)f(edges)h(of)g(the)f(tetrahedralization.)23 b(Ho)n(we)n(v)o(er)m(,)0 2557 y(the)28 b(Delaunay)i(property)f(is)f (not)h(maintained)g(during)h(these)e(v)o(er)o(-)0 2648 y(te)o(x)21 b(insertions)h(\(at)f(least)g(not)h(fully\),)f(so)g(v)o (erte)o(x)h(insertions)g(do)g(not)0 2740 y(knock)28 b(reco)o(v)o(ered)f (boundaries)h(out)e(of)h(the)f(mesh.)46 b(The)26 b(tetrahe-)0 2831 y(dra)19 b(are)h(subdi)n(vided)h(in)e(w)o(ays)g(that)g(introduce)i (ne)n(w)e(v)o(ertices)g(with-)0 2922 y(out)27 b(eliminating)g(e)o (xisting)g(f)o(aces)g(and)h(edges)f(that)g(represent)g(do-)0 3014 y(main)e(boundaries.)43 b(Once)26 b(all)f(the)g(boundaries)h(are)f (reco)o(v)o(ered,)j(a)0 3105 y(mesh)23 b(generator)h(might)e(attempt)h (to)f(re)o(gain)h(the)f(Delaunay)i(prop-)0 3196 y(erty)f(of)g(the)h (mesh)f(by)h(using)g(topological)g(\003ips,)f(b)o(ut)g(because)i(the)0 3288 y(\003ips)20 b(are)g(not)g(permitted)g(to)g(disturb)h(the)f (domain)h(boundaries,)h(the)0 3379 y(mesh)f(is)e(usually)i(not)f (entirely)g(Delaunay)-5 b(.)28 b(The)20 b(de)n(viations)h(occur)0 3470 y(at)d(the)g(boundaries\227where)i(obtaining)f(high-quality)g (elements)f(is)0 3562 y(most)25 b(dif)n(\002cult.)39 b(One)24 b(consequence)j(is)d(that)h(pro)o(v)n(ably)g(good)h(De-)0 3653 y(launay)c(re\002nement)f(procedures)i(cannot)f(be)f(guaranteed)h (to)f(w)o(ork)0 3744 y(correctly)-5 b(.)26 b(\223)-6 b(Almost)20 b(Delaunay\224)h(mesh)g(generation)f(programs)h(do)0 3836 y(w)o(ork)d(well)e(in)h(man)o(y)h(circumstances,)g(b)o(ut)e(the)o (y)i(are)f(unlik)o(ely)h(to)e(be)0 3927 y(able)23 b(to)g(control)h(the) f(quality)h(of)f(the)g(elements)h(in)f(circumstances)0 4018 y(lik)o(e)i(Figure)g(1.)42 b(Furthermore,)26 b(the)o(y)g(are)f (also)g(in)g(danger)h(of)f(cre-)0 4110 y(ating)20 b(v)o(ery)h(short)f (edges,)h(or)f(inserting)g(man)o(y)h(more)f(v)o(ertices)g(than)0 4201 y(necessary)-5 b(,)20 b(unless)f(the)o(y)h(are)f(carefully)g (designed.)0 4342 y(The)k(third)h(approach)h(uses)f Fo(constr)o(ained)g (Delaunay)h(tetr)o(ahedr)o(al-)0 4433 y(izations)40 b Fp(\(CDTs\).)85 b(CDTs)40 b(are)g(composed)h(entirely)f(of)g Fo(con-)0 4525 y(str)o(ained)25 b(Delaunay)g Fp(tetrahedra,)h(which)f (are)f(not)h(al)o(w)o(ays)g(Delau-)0 4616 y(nay)-5 b(,)28 b(b)o(ut)d(ne)n(v)o(ertheless)i(retain)f(tw)o(o)g(of)f(the)h(f)o(a)o(v) o(orable)g(properties)0 4707 y(of)17 b(Delaunay)i(tetrahedra:)k(the)o (y)18 b(help)f(to)h(control)g(interpolation)g(er)o(-)0 4799 y(ror)29 b([24)q(],)h(and)g(the)o(y)f(help)h(to)f(pro)o(v)o(e)g (that)g(Delaunay)h(re\002nement)0 4890 y(algorithms)23 b(reliably)g(generate)g(good)h(meshes)g([22].)35 b(CDTs)22 b(ha)o(v)o(e)0 4981 y(the)28 b(adv)n(antage)i(of)e(requiring)h(fe)n (wer)f(v)o(ertices)g(than)g(conforming)0 5073 y(Delaunay)23 b(tetrahedralizations,)f(and)g(as)g(this)f(paper)h(will)f(sho)n(w)-5 b(,)22 b(it)0 5164 y(is)j(straightforw)o(ard)g(to)g(form)g(CDTs)g (without)g(creating)g(unneces-)0 5255 y(sarily)19 b(short)g(edges.)2100 1350 y @beginspecial 0 @llx 0 @lly 516 @urx 387 @ury 2160 @rwi @setspecial %%BeginDocument: whysquish.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: whysquish.eps %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Tue May 7 22:37:52 2002 %%For: jrs@complex.eecs.berkeley.edu (Jonathan Shewchuk) %%BoundingBox: 0 0 516 387 %%Magnification: 1.0000 %%EndComments /MyAppDict 100 dict dup begin def /$F2psDict 200 dict def F2psDictbeginF2psDict begin F2psDictbeginF2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 387 moveto 0 0 lineto 516 0 lineto 516 387 lineto closepath clip newpath -136.0 437.0 translate 1 -1 scale % This junk string is used by the show operators /PATsstr 1 string def /PATawidthshow { % cx cy cchar rx ry string % Loop over each character in the string { % cx cy cchar rx ry char % Show the character dup % cx cy cchar rx ry char char PATsstr dup 0 4 -1 roll put % cx cy cchar rx ry char (char) false charpath % cx cy cchar rx ry char /clip load PATdraw % Move past the character (charpath modified the % current point) currentpoint % cx cy cchar rx ry char x y newpath moveto % cx cy cchar rx ry char % Reposition by cx,cy if the character in the string is cchar 3 index eq { % cx cy cchar rx ry 4 index 4 index rmoveto } if % Reposition all characters by rx ry 2 copy rmoveto % cx cy cchar rx ry } forall pop pop pop pop pop % - currentpoint newpath moveto } bind def /PATcg { 7 dict dup begin /lw currentlinewidth def /lc currentlinecap def /lj currentlinejoin def /ml currentmiterlimit def /ds [ currentdash ] def /cc [ currentrgbcolor ] def /cm matrix currentmatrix def end } bind def % PATdraw - calculates the boundaries of the object and % fills it with the current pattern /PATdraw { % proc save exch PATpcalc % proc nw nh px py 5 -1 roll exec % nw nh px py newpath PATfill % - restore } bind def % PATfill - performs the tiling for the shape /PATfill { % nw nh px py PATfill - PATDict /CurrentPattern get dup begin setfont % Set the coordinate system to Pattern Space PatternGState PATsg % Set the color for uncolored pattezns PaintType 2 eq { PATDict /PColor get PATsc } if % Create the string for showing 3 index string % nw nh px py str % Loop for each of the pattern sources 0 1 Multi 1 sub { % nw nh px py str source % Move to the starting location 3 index 3 index % nw nh px py str source px py moveto % nw nh px py str source % For multiple sources, set the appropriate color Multi 1 ne { dup PC exch get PATsc } if % Set the appropriate string for the source 0 1 7 index 1 sub { 2 index exch 2 index put } for pop % Loop over the number of vertical cells 3 index % nw nh px py str nh { % nw nh px py str currentpoint % nw nh px py str cx cy 2 index oldshow % nw nh px py str cx cy YStep add moveto % nw nh px py str } repeat % nw nh px py str } for 5 { pop } repeat end } bind def % PATkshow - kshow with the current pattezn /PATkshow { % proc string exch bind % string proc 1 index 0 get % string proc char % Loop over all but the last character in the string 0 1 4 index length 2 sub { % string proc char idx % Find the n+1th character in the string 3 index exch 1 add get % string proe char char+1 exch 2 copy % strinq proc char+1 char char+1 char % Now show the nth character PATsstr dup 0 4 -1 roll put % string proc chr+1 chr chr+1 (chr) false charpath % string proc char+1 char char+1 /clip load PATdraw % Move past the character (charpath modified the current point) currentpoint newpath moveto % Execute the user proc (should consume char and char+1) mark 3 1 roll % string proc char+1 mark char char+1 4 index exec % string proc char+1 mark... cleartomark % string proc char+1 } for % Now display the last character PATsstr dup 0 4 -1 roll put % string proc (char+1) false charpath % string proc /clip load PATdraw neewath pop pop % - } bind def % PATmp - the makepattern equivalent /PATmp { % patdict patmtx PATmp patinstance exch dup length 7 add % We will add 6 new entries plus 1 FID dict copy % Create a new dictionary begin % Matrix to install when painting the pattern TilingType PATtcalc /PatternGState PATcg def PatternGState /cm 3 -1 roll put % Check for multi pattern sources (Level 1 fast color patterns) currentdict /Multi known not { /Multi 1 def } if % Font dictionary definitions /FontType 3 def % Create a dummy encoding vector /Encoding 256 array def 3 string 0 1 255 { Encoding exch dup 3 index cvs cvn put } for pop /FontMatrix matrix def /FontBBox BBox def /BuildChar { mark 3 1 roll % mark dict char exch begin Multi 1 ne {PaintData exch get}{pop} ifelse % mark [paintdata] PaintType 2 eq Multi 1 ne or { XStep 0 FontBBox aload pop setcachedevice } { XStep 0 setcharwidth } ifelse currentdict % mark [paintdata] dict /PaintProc load % mark [paintdata] dict paintproc end gsave false PATredef exec true PATredef grestore cleartomark % - } bind def currentdict end % newdict /foo exch % /foo newlict definefont % newfont } bind def % PATpcalc - calculates the starting point and width/height % of the tile fill for the shape /PATpcalc { % - PATpcalc nw nh px py PATDict /CurrentPattern get begin gsave % Set up the coordinate system to Pattern Space % and lock down pattern PatternGState /cm get setmatrix BBox aload pop pop pop translate % Determine the bounding box of the shape pathbbox % llx lly urx ury grestore % Determine (nw, nh) the # of cells to paint width and height PatHeight div ceiling % llx lly urx qh 4 1 roll % qh llx lly urx PatWidth div ceiling % qh llx lly qw 4 1 roll % qw qh llx lly PatHeight div floor % qw qh llx ph 4 1 roll % ph qw qh llx PatWidth div floor % ph qw qh pw 4 1 roll % pw ph qw qh 2 index sub cvi abs % pw ph qs qh-ph exch 3 index sub cvi abs exch % pw ph nw=qw-pw nh=qh-ph % Determine the starting point of the pattern fill %(px, py) 4 2 roll % nw nh pw ph PatHeight mul % nw nh pw py exch % nw nh py pw PatWidth mul exch % nw nh px py end } bind def % Save the original routines so that we can use them later on /oldfill /fill load def /oldeofill /eofill load def /oldstroke /stroke load def /oldshow /show load def /oldashow /ashow load def /oldwidthshow /widthshow load def /oldawidthshow /awidthshow load def /oldkshow /kshow load def % These defs are necessary so that subsequent procs don't bind in % the originals /fill { oldfill } bind def /eofill { oldeofill } bind def /stroke { oldstroke } bind def /show { oldshow } bind def /ashow { oldashow } bind def /widthshow { oldwidthshow } bind def /awidthshow { oldawidthshow } bind def /kshow { oldkshow } bind def /PATredef { MyAppDict begin { /fill { /clip load PATdraw newpath } bind def /eofill { /eoclip load PATdraw newpath } bind def /stroke { PATstroke } bind def /show { 0 0 null 0 0 6 -1 roll PATawidthshow } bind def /ashow { 0 0 null 6 3 roll PATawidthshow } bind def /widthshow { 0 0 3 -1 roll PATawidthshow } bind def /awidthshow { PATawidthshow } bind def /kshow { PATkshow } bind def } { /fill { oldfill } bind def /eofill { oldeofill } bind def /stroke { oldstroke } bind def /show { oldshow } bind def /ashow { oldashow } bind def /widthshow { oldwidthshow } bind def /awidthshow { oldawidthshow } bind def /kshow { oldkshow } bind def } ifelse end } bind def false PATredef % Conditionally define setcmykcolor if not available /setcmykcolor where { pop } { /setcmykcolor { 1 sub 4 1 roll 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat setrgbcolor - pop } bind def } ifelse /PATsc { % colorarray aload length % c1 ... cn length dup 1 eq { pop setgray } { 3 eq { setrgbcolor } { setcmykcolor } ifelse } ifelse } bind def /PATsg { % dict begin lw setlinewidth lc setlinecap lj setlinejoin ml setmiterlimit ds aload pop setdash cc aload pop setrgbcolor cm setmatrix end } bind def /PATDict 3 dict def /PATsp { true PATredef PATDict begin /CurrentPattern exch def % If it's an uncolored pattern, save the color CurrentPattern /PaintType get 2 eq { /PColor exch def } if /CColor [ currentrgbcolor ] def end } bind def % PATstroke - stroke with the current pattern /PATstroke { countdictstack save mark { currentpoint strokepath moveto PATpcalc % proc nw nh px py clip newpath PATfill } stopped { (*** PATstroke Warning: Path is too complex, stroking with gray) = cleartomark restore countdictstack exch sub dup 0 gt { { end } repeat } { pop } ifelse gsave 0.5 setgray oldstroke grestore } { pop restore pop } ifelse newpath } bind def /PATtcalc { % modmtx tilingtype PATtcalc tilematrix % Note: tiling types 2 and 3 are not supported gsave exch concat % tilingtype matrix currentmatrix exch % cmtx tilingtype % Tiling type 1 and 3: constant spacing 2 ne { % Distort the pattern so that it occupies % an integral number of device pixels dup 4 get exch dup 5 get exch % tx ty cmtx XStep 0 dtransform round exch round exch % tx ty cmtx dx.x dx.y XStep div exch XStep div exch % tx ty cmtx a b 0 YStep dtransform round exch round exch % tx ty cmtx a b dy.x dy.y YStep div exch YStep div exch % tx ty cmtx a b c d 7 -3 roll astore % { a b c d tx ty } } if grestore } bind def /PATusp { false PATredef PATDict begin CColor PATsc end } bind def % crosshatch30 11 dict begin /PaintType 1 def /PatternType 1 def /TilingType 1 def /BBox [0 0 1 1] def /XStep 1 def /YStep 1 def /PatWidth 1 def /PatHeight 1 def /Multi 2 def /PaintData [ { clippath } bind { 32 16 true [ 32 0 0 -16 0 16 ] {<033003300c0c0c0c30033003c000c000300330030c0c0c0c 0330033000c000c0033003300c0c0c0c30033003c000c000 300330030c0c0c0c0330033000c000c0>} imagemask } bind ] def /PaintProc { pop exec fill } def currentdict end /P3 exch def /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def F2psBeginF2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline 7.500 slw [60] 0 sd n 2400 7200 m 2625 6975 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 2625 6975 m 2625 4575 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 2625 6975 m 4725 6975 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 5400 7200 m 5625 6975 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 5625 6975 m 5625 4575 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 5625 6975 m 7725 6975 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 8400 7200 m 8625 6975 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 8625 6975 m 8625 4575 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 8625 6975 m 10725 6975 l gs col0 s gr [] 0 sd % Polyline 0.000 slw n 9375 5325 m 8925 6225 l 10125 6375 l 10200 5400 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 595.00 355.00] PATmp PATsp ef gr PATusp % Polyline 7.500 slw [60] 0 sd n 2400 3900 m 2625 3675 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 2625 3675 m 2625 1275 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 2625 3675 m 4725 3675 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 5400 3900 m 5625 3675 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 5625 3675 m 5625 1275 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 5625 3675 m 7725 3675 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 8400 3900 m 8625 3675 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 8625 3675 m 8625 1275 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 8625 3675 m 10725 3675 l gs col0 s gr [] 0 sd % Polyline 0.000 slw n 9375 2025 m 8925 2925 l 10125 3075 l 10200 2100 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P3 [16 0 0 -8 595.00 135.00] PATmp PATsp ef gr PATusp % Polyline 15.000 slw [90] 0 sd n 3375 5325 m 2925 6225 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 4125 6375 m 4200 5400 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 2925 6225 m 4125 6375 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 4200 5400 m 3375 5325 l gs col0 s gr [] 0 sd % Polyline 30.000 slw n 6375 5325 m 5925 6225 l gs col0 s gr % Polyline n 5925 6225 m 7125 6375 l gs col0 s gr % Polyline n 7125 6375 m 7200 5400 l gs col0 s gr % Polyline n 7200 5400 m 6375 5325 l gs col0 s gr % Polyline n 9375 5325 m 8925 6225 l gs col0 s gr % Polyline n 8925 6225 m 10125 6375 l gs col0 s gr % Polyline n 9150 5775 m 9525 6300 l gs col0 s gr % Polyline n 10170 5895 m 9150 5775 l gs col0 s gr % Polyline n 9150 5775 m 9780 5370 l gs col0 s gr % Polyline n 10200 5400 m 9375 5325 l gs col0 s gr % Polyline n 9795 5385 m 10170 5880 l gs col0 s gr % Polyline n 10125 6375 m 10200 5400 l gs col0 s gr % Polyline n 9525 6300 m 10200 5850 l gs col0 s gr % Polyline 15.000 slw [90] 0 sd n 2925 2925 m 4125 3075 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 3375 2025 m 2925 2925 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 4200 2100 m 3375 2025 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 4125 3075 m 4200 2100 l gs col0 s gr [] 0 sd % Polyline 30.000 slw n 6375 2025 m 5925 2925 l gs col0 s gr % Polyline n 5925 2925 m 7125 3075 l gs col0 s gr % Polyline n 7125 3075 m 7200 2100 l gs col0 s gr % Polyline n 7200 2100 m 6375 2025 l gs col0 s gr % Polyline n 9375 2025 m 8925 2925 l gs col0 s gr % Polyline n 8925 2925 m 10125 3075 l gs col0 s gr % Polyline n 9150 2475 m 9525 3000 l gs col0 s gr % Polyline n 9150 2475 m 9825 2700 l gs col0 s gr % Polyline n 9525 2400 m 9150 2475 l gs col0 s gr % Polyline n 9525 2400 m 10200 2100 l gs col0 s gr % Polyline n 10200 2100 m 9375 2025 l gs col0 s gr % Polyline n 10125 3075 m 10200 2100 l gs col0 s gr % Polyline n 9525 2400 m 10125 2550 l gs col0 s gr % Polyline n 9825 2700 m 9525 2400 l gs col0 s gr % Polyline n 9825 2700 m 9525 3000 l gs col0 s gr % Polyline n 9825 2700 m 10125 3075 l gs col0 s gr % Polyline n 10155 2835 m 9825 2700 l gs col0 s gr % Polyline n 9825 2700 m 10170 2565 l gs col0 s gr % Polyline n 9525 2400 m 9375 2025 l gs col0 s gr % Polyline n 9525 2400 m 9262 2235 l gs col0 s gr % Polyline n 9525 2400 m 9780 2070 l gs col0 s gr 7.500 slw % Ellipse n 4125 6375 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 4200 5400 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3375 5325 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 2925 6225 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7200 5400 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6375 5325 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6150 5775 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7170 5880 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6780 5370 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7125 6375 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6525 6300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 5925 6225 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 10125 6375 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 10200 5400 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 9375 5325 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 8925 6225 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 9525 6300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 9150 5775 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 10170 5880 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 9780 5370 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Polyline 15.000 slw n 2400 7200 m 2400 4800 l gs col0 s gr % Polyline n 2400 4800 m 4500 4800 l gs col0 s gr % Polyline n 4500 7200 m 2400 7200 l gs col0 s gr % Polyline n 4725 4575 m 2625 4575 l gs col0 s gr % Polyline n 2625 4575 m 2400 4800 l gs col0 s gr % Polyline n 4500 4800 m 4500 7200 l gs col0 s gr % Polyline n 4500 7200 m 4725 6975 l gs col0 s gr % Polyline n 4725 6975 m 4725 4575 l gs col0 s gr % Polyline n 4500 4800 m 4725 4575 l gs col0 s gr % Polyline n 5400 7200 m 5400 4800 l gs col0 s gr % Polyline n 5400 4800 m 7500 4800 l gs col0 s gr % Polyline n 7500 4800 m 7500 7200 l gs col0 s gr % Polyline n 7500 7200 m 5400 7200 l gs col0 s gr % Polyline n 7500 7200 m 7725 6975 l gs col0 s gr % Polyline n 7725 6975 m 7725 4575 l gs col0 s gr % Polyline n 7725 4575 m 5625 4575 l gs col0 s gr % Polyline n 5625 4575 m 5400 4800 l gs col0 s gr % Polyline n 7500 4800 m 7725 4575 l gs col0 s gr % Polyline 7.500 slw n 7121 6450 m 7129 6450 l gs col4 s gr % Polyline n 7121 6450 m 7129 6450 l gs col4 s gr % Polyline 15.000 slw n 8400 7200 m 8400 4800 l gs col0 s gr % Polyline n 8400 4800 m 10500 4800 l gs col0 s gr % Polyline n 10500 4800 m 10500 7200 l gs col0 s gr % Polyline n 10500 7200 m 8400 7200 l gs col0 s gr % Polyline n 10500 7200 m 10725 6975 l gs col0 s gr % Polyline n 10725 6975 m 10725 4575 l gs col0 s gr % Polyline n 10725 4575 m 8625 4575 l gs col0 s gr % Polyline n 8625 4575 m 8400 4800 l gs col0 s gr % Polyline n 10500 4800 m 10725 4575 l gs col0 s gr % Polyline 7.500 slw n 8921 6300 m 8929 6300 l gs col4 s gr % Polyline n 8921 6300 m 8929 6300 l gs col4 s gr % Polyline n 8921 6300 m 8929 6300 l gs col4 s gr % Polyline n 8921 6300 m 8929 6300 l gs col4 s gr % Ellipse n 4125 3075 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 4200 2100 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3375 2025 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 2925 2925 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7200 2100 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6375 2025 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6150 2475 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7170 2580 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6780 2070 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7125 3075 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6525 3000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 5925 2925 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 10125 3075 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 10200 2100 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 9375 2025 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 8925 2925 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 9525 3000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 9150 2475 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 10170 2580 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 10147 2820 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 9825 2700 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 9262 2235 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 9525 2400 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 9780 2070 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Polyline 15.000 slw n 2400 3900 m 2400 1500 l gs col0 s gr % Polyline n 2400 1500 m 4500 1500 l gs col0 s gr % Polyline n 4500 3900 m 2400 3900 l gs col0 s gr % Polyline n 4725 1275 m 2625 1275 l gs col0 s gr % Polyline n 2625 1275 m 2400 1500 l gs col0 s gr % Polyline n 4500 1500 m 4500 3900 l gs col0 s gr % Polyline n 4500 3900 m 4725 3675 l gs col0 s gr % Polyline n 4725 3675 m 4725 1275 l gs col0 s gr % Polyline n 4500 1500 m 4725 1275 l gs col0 s gr % Polyline n 5400 3900 m 5400 1500 l gs col0 s gr % Polyline n 5400 1500 m 7500 1500 l gs col0 s gr % Polyline n 7500 1500 m 7500 3900 l gs col0 s gr % Polyline n 7500 3900 m 5400 3900 l gs col0 s gr % Polyline n 7500 3900 m 7725 3675 l gs col0 s gr % Polyline n 7725 3675 m 7725 1275 l gs col0 s gr % Polyline n 7725 1275 m 5625 1275 l gs col0 s gr % Polyline n 5625 1275 m 5400 1500 l gs col0 s gr % Polyline n 7500 1500 m 7725 1275 l gs col0 s gr % Polyline 7.500 slw n 7121 3150 m 7129 3150 l gs col4 s gr % Polyline n 7121 3150 m 7129 3150 l gs col4 s gr % Polyline 15.000 slw n 8400 3900 m 8400 1500 l gs col0 s gr % Polyline n 8400 1500 m 10500 1500 l gs col0 s gr % Polyline n 10500 1500 m 10500 3900 l gs col0 s gr % Polyline n 10500 3900 m 8400 3900 l gs col0 s gr % Polyline n 10500 3900 m 10725 3675 l gs col0 s gr % Polyline n 10725 3675 m 10725 1275 l gs col0 s gr % Polyline n 10725 1275 m 8625 1275 l gs col0 s gr % Polyline n 8625 1275 m 8400 1500 l gs col0 s gr % Polyline n 10500 1500 m 10725 1275 l gs col0 s gr % Polyline 7.500 slw n 8921 3000 m 8929 3000 l gs col4 s gr % Polyline n 8921 3000 m 8929 3000 l gs col4 s gr % Polyline n 8921 3000 m 8929 3000 l gs col4 s gr % Polyline n 8921 3000 m 8929 3000 l gs col4 s gr % Polyline 60.000 slw n 2325 4050 m 10800 4050 l gs col0 s gr /Helvetica ff 360.00 scf sf 2400 4425 m gs 1 -1 sc (Constrained Delaunay) col0 sh gr /Helvetica ff 360.00 scf sf 2400 1125 m gs 1 -1 sc (Conforming Delaunay / Almost Delaunay) col0 sh gr 7.500 slw % Ellipse n 2925 6750 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2400 7200 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2400 4800 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2625 4575 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2850 5100 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3300 4950 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3000 5550 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3450 6075 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3600 5550 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3900 6000 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4050 5100 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4350 6075 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4350 6825 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3675 6525 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4500 4800 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4725 4575 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4500 7200 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4725 6975 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5400 4800 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5625 4575 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7725 4575 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7500 4800 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7050 5100 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6300 4950 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5850 5100 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6000 5550 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6675 6525 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6450 6075 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6600 5550 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6900 6000 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7350 6075 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7350 6825 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7500 7200 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7725 6975 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5400 7200 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5925 6750 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8400 7200 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8925 6750 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 9675 6525 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10350 6825 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10500 7200 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10725 6975 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10350 6075 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 9600 5550 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 9000 5550 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8850 5100 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 9300 4950 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10050 5100 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10500 4800 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10725 4575 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8625 4575 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8400 4800 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4950 5775 m 4950 5925 l 5100 5925 l 5100 6000 l 5250 5850 l 5100 5700 l 5100 5775 l cp gs 0.00 setgray ef gr gs col0 s gr % Polyline n 7950 5775 m 7950 5925 l 8100 5925 l 8100 6000 l 8250 5850 l 8100 5700 l 8100 5775 l cp gs 0.00 setgray ef gr gs col0 s gr % Ellipse n 2400 3900 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2925 3450 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3675 3225 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4350 3525 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4350 2775 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3900 2700 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3450 2775 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3600 2250 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3000 2250 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2850 1800 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3300 1650 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4050 1800 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2625 1275 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2400 1500 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4500 3900 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4725 3675 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4500 1500 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4725 1275 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5400 1500 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5625 1275 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7725 1275 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7500 1500 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7050 1800 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6300 1650 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5850 1800 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6000 2250 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5925 3450 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5400 3900 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6675 3225 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6450 2775 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6600 2250 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6900 2700 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7350 2775 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7350 3525 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7500 3900 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 7725 3675 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8400 3900 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8925 3450 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 9675 3225 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10350 3525 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10500 3900 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10725 3675 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10350 2775 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 9000 2250 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8850 1800 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 9300 1650 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10050 1800 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10500 1500 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 10725 1275 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8625 1275 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 8400 1500 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 9600 2250 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 4950 2475 m 4950 2625 l 5100 2625 l 5100 2700 l 5250 2550 l 5100 2400 l 5100 2475 l cp gs 0.00 setgray ef gr gs col0 s gr % Polyline n 7950 2475 m 7950 2625 l 8100 2625 l 8100 2700 l 8250 2550 l 8100 2400 l 8100 2475 l cp gs 0.00 setgray ef gr gs col0 s gr F2psBeginF2psEnd rs end %%EndDocument @endspecial 165 x Fl(Figure)k(2:)33 b Fk(T)-9 b(w)o(o)24 b(diff)n(erent)d(methods)i(f)n(or)h(reco)o(v)n(er)q(ing)e(a)j(tw)o(o-) 2100 1597 y(dimensional)17 b(inter)q(ior)h(boundar)r(y)g(inside)h(a)h (cubical)f(domain.)2100 1680 y(The)d(initial)f(Delauna)n(y)g(tetr)o (ahedr)o(alization)d(does)17 b(not)f(respect)2100 1762 y(the)29 b(rectangular)e(boundar)r(y)-7 b(.)52 b(\(F)n(or)29 b(clar)q(ity)-7 b(,)31 b(the)e(tetr)o(ahedr)o(a)2100 1844 y(are)20 b(not)g(sho)o(wn.\))k(Both)c(approaches)e(inser)s(t)i (additional)c(v)n(er-)2100 1926 y(tices)27 b(to)f(reco)o(v)n(er)h(the)f (missing)g(domain)f(edges)o(.)43 b(Ne)n(xt,)28 b(the)2100 2008 y(standard)i(approaches)g(inser)s(t)i(more)g(v)n(er)s(tices)g(to)g (reco)o(v)n(er)2100 2091 y(missing)42 b(f)n(acets)f(\(top\),)47 b(b)o(ut)41 b(no)h(additional)c(v)n(er)s(tices)k(are)2100 2173 y(needed)32 b(if)h(constr)o(ained)f(Delauna)n(y)f(tetr)o(ahedr)o (a)h(are)h(used)2100 2255 y(\(bottom\).)2100 2520 y Fp(It)c(tak)o(es)g (some)h(care)g(to)f(construct)h(a)f(CDT)f(that)h(conforms)i(to)e(a)2100 2611 y(domain.)50 b(This)27 b(paper)h(details)g(the)g(follo)n(wing)g (approach.)50 b(First,)2100 2702 y(form)27 b(the)h(Delaunay)g (tetrahedralization)g(of)f(the)g(v)o(ertices)g(of)h(the)2100 2794 y(domain.)23 b(This)16 b(tetrahedralization)i(co)o(v)o(ers)f(the)f (entire)h(con)m(v)o(e)o(x)h(hull)2100 2885 y(of)32 b(the)g(domain,)k (and)c(probably)i(does)e(not)h(respect)f(all)f(the)h(do-)2100 2976 y(main)e(boundaries.)59 b(Second,)33 b(identify)e(the)f(domain)h (edges)g(and)2100 3068 y(determine)e(which)h(of)e(them)h(f)o(ail)g(to)f (appear)i(in)f(the)g(tetrahedral-)2100 3159 y(ization)21 b(\(see)g(Section)g(4\).)29 b(Third,)21 b(insert)f(additional)i(v)o (ertices)f(into)2100 3250 y(the)c(tetrahedralization)g(\(while)f (maintaining)i(the)e(Delaunay)i(prop-)2100 3342 y(erty\),)j(with)g(the) g(aim)g(of)g(reco)o(v)o(ering)h(the)f(missing)g(domain)h(edges.)2100 3433 y(An)c(algorithm)g(for)g(placing)g(these)g(v)o(ertices)g(is)f(gi)n (v)o(en)i(in)e(Section)h(5.)2100 3574 y(So)g(f)o(ar)m(,)h(the)g (approach)h(is)e(identical)h(to)g(the)g(construction)h(of)f(a)f(con-) 2100 3665 y(forming)g(Delaunay)i(tetrahedralization,)e(and)h(to)f(some) g(of)g(the)g(\223al-)2100 3757 y(most)29 b(Delaunay\224)g(approaches)i (as)d(well.)51 b(The)29 b(approaches)h(part)2100 3848 y(w)o(ays)c(completely)h(when)g(all)e(the)h(domain)h(edges)f(ha)o(v)o (e)g(been)h(re-)2100 3939 y(co)o(v)o(ered,)c(and)g(it)e(is)g(time)g(to) h(reco)o(v)o(er)g(the)g(missing)g(domain)h(f)o(aces.)2100 4031 y(Figure)f(2)f(illustrates)h(the)f(dif)n(ference.)33 b(The)21 b(standard)i(approaches)2100 4122 y(insert)k(more)g(v)o (ertices)g(to)g(reco)o(v)o(er)h(the)f(missing)g(f)o(aces.)49 b(The)27 b(ap-)2100 4213 y(proach)d(e)o(xpounded)h(here)e(simply)g (replaces)h(the)e(Delaunay)i(tetra-)2100 4305 y(hedra)g(with)f (constrained)h(Delaunay)h(tetrahedra,)f(thereby)g(reco)o(v-)2100 4396 y(ering)19 b(the)g(missing)g(f)o(aces)g(without)g(inserting)g (another)h(v)o(erte)o(x.)j(Al-)2100 4487 y(gorithms)f(for)g (constructing)h(CDTs)e(are)h(discussed)h(in)f(Sections)g(6)2100 4579 y(and)e(7.)2100 4720 y(This)14 b(technique)j(may)e(yield)g(a)g (lar)o(ge,)g(e)n(v)o(en)h(asymptotic,)g(sa)o(vings)f(in)2100 4811 y(the)h(number)g(of)g(v)o(ertices)g(required)g(to)f(obtain)i (domain)f(conformity)-5 b(.)2100 4902 y(Three-dimensional)18 b(CDTs)e(also)h(mak)o(e)h(it)e(possible)h(for)g(Delaunay)2100 4994 y(re\002nement)26 b(algorithms)g(to)g(mesh)g(an)o(y)g(PLC,)f(e)n (v)o(en)h(for)g(domains)2100 5085 y(with)21 b(small)h(angles)g([22)q (],)g(and)g(to)g(establish)g(pro)o(v)n(able)h(bounds)g(on)2100 5176 y(the)29 b(lengths)g(of)f(the)h(edges)g(and)g(shapes)h(of)e(the)h (tetrahedra)f(the)o(y)2100 5268 y(produce.)p eop %%Page: 3 3 3 2 bop 51 840 a @beginspecial 72 @llx 162 @lly 540 @urx 630 @ury 1008 @rwi @setspecial %%BeginDocument: spokes.eps %!PS-Adobe-2.0 EPSF-2.0 %%BoundingBox: 72 162 540 630 %%Creator: Show Me %%EndComments 1 setlinecap 1 setlinejoin 2 setlinewidth 72 162 moveto 540 162 lineto 540 630 lineto 72 630 lineto closepath clip newpath 77.000000 167.000000 4 0 360 arc fill 77.000000 625.000000 4 0 360 arc fill 535.000000 625.000000 4 0 360 arc fill 535.000000 167.000000 4 0 360 arc fill 285.303073 382.647431 4 0 360 arc fill 270.615294 197.043865 4 0 360 arc fill 212.530612 248.452029 4 0 360 arc fill 261.268355 289.845414 4 0 360 arc fill 420.166314 247.116818 4 0 360 arc fill 370.093361 273.821957 4 0 360 arc fill 410.819376 384.650012 4 0 360 arc fill 139.758151 341.253578 4 0 360 arc fill 193.168896 450.078584 4 0 360 arc fill 268.612245 572.256627 4 0 360 arc fill 356.072953 484.795918 4 0 360 arc fill 429.513253 349.933145 4 0 360 arc fill 257.262257 433.387755 4 0 360 arc fill 324.026039 235.766831 4 0 360 arc fill 466.901008 436.058176 4 0 360 arc fill 318.685198 462.096410 4 0 360 arc fill 173.807647 441.399484 4 0 360 arc fill 123.734694 436.726014 4 0 360 arc fill 423.504573 499.484165 4 0 360 arc fill 77.000000 167.000000 moveto 77.000000 625.000000 lineto stroke 77.000000 625.000000 moveto 535.000000 625.000000 lineto stroke 535.000000 625.000000 moveto 535.000000 167.000000 lineto stroke 535.000000 167.000000 moveto 77.000000 167.000000 lineto stroke 285.303073 382.647431 moveto 270.615294 197.043865 lineto stroke 285.303073 382.647431 moveto 212.530612 248.452029 lineto stroke 285.303073 382.647431 moveto 261.268355 289.845414 lineto stroke 285.303073 382.647431 moveto 420.166314 247.116818 lineto stroke 285.303073 382.647431 moveto 370.093361 273.821957 lineto stroke 285.303073 382.647431 moveto 410.819376 384.650012 lineto stroke 285.303073 382.647431 moveto 139.758151 341.253578 lineto stroke 285.303073 382.647431 moveto 193.168896 450.078584 lineto stroke 285.303073 382.647431 moveto 268.612245 572.256627 lineto stroke 285.303073 382.647431 moveto 356.072953 484.795918 lineto stroke 285.303073 382.647431 moveto 429.513253 349.933145 lineto stroke 285.303073 382.647431 moveto 257.262257 433.387755 lineto stroke 285.303073 382.647431 moveto 324.026039 235.766831 lineto stroke 285.303073 382.647431 moveto 466.901008 436.058176 lineto stroke 285.303073 382.647431 moveto 318.685198 462.096410 lineto stroke 285.303073 382.647431 moveto 173.807647 441.399484 lineto stroke 285.303073 382.647431 moveto 123.734694 436.726014 lineto stroke 285.303073 382.647431 moveto 423.504573 499.484165 lineto stroke %%EndDocument @endspecial 858 w @beginspecial 72 @llx 162 @lly 540 @urx 630 @ury 1008 @rwi @setspecial %%BeginDocument: spokes.dt.eps %!PS-Adobe-2.0 EPSF-2.0 %%BoundingBox: 72 162 540 630 %%Creator: Show Me %%EndComments 1 setlinecap 1 setlinejoin 2 setlinewidth 72 162 moveto 540 162 lineto 540 630 lineto 72 630 lineto closepath clip newpath 123.734694 436.726014 moveto 77.000000 167.000000 lineto 139.758151 341.253578 lineto 123.734694 436.726014 lineto stroke 212.530612 248.452029 moveto 139.758151 341.253578 lineto 77.000000 167.000000 lineto 212.530612 248.452029 lineto stroke 261.268355 289.845414 moveto 212.530612 248.452029 lineto 270.615294 197.043865 lineto 261.268355 289.845414 lineto stroke 77.000000 167.000000 moveto 270.615294 197.043865 lineto 212.530612 248.452029 lineto 77.000000 167.000000 lineto stroke 139.758151 341.253578 moveto 261.268355 289.845414 lineto 285.303073 382.647431 lineto 139.758151 341.253578 lineto stroke 139.758151 341.253578 moveto 212.530612 248.452029 lineto 261.268355 289.845414 lineto 139.758151 341.253578 lineto stroke 270.615294 197.043865 moveto 77.000000 167.000000 lineto 535.000000 167.000000 lineto 270.615294 197.043865 lineto stroke 139.758151 341.253578 moveto 285.303073 382.647431 lineto 173.807647 441.399484 lineto 139.758151 341.253578 lineto stroke 173.807647 441.399484 moveto 77.000000 625.000000 lineto 123.734694 436.726014 lineto 173.807647 441.399484 lineto stroke 77.000000 167.000000 moveto 123.734694 436.726014 lineto 77.000000 625.000000 lineto 77.000000 167.000000 lineto stroke 173.807647 441.399484 moveto 123.734694 436.726014 lineto 139.758151 341.253578 lineto 173.807647 441.399484 lineto stroke 193.168896 450.078584 moveto 77.000000 625.000000 lineto 173.807647 441.399484 lineto 193.168896 450.078584 lineto stroke 268.612245 572.256627 moveto 193.168896 450.078584 lineto 257.262257 433.387755 lineto 268.612245 572.256627 lineto stroke 173.807647 441.399484 moveto 257.262257 433.387755 lineto 193.168896 450.078584 lineto 173.807647 441.399484 lineto stroke 257.262257 433.387755 moveto 318.685198 462.096410 lineto 268.612245 572.256627 lineto 257.262257 433.387755 lineto stroke 77.000000 625.000000 moveto 193.168896 450.078584 lineto 268.612245 572.256627 lineto 77.000000 625.000000 lineto stroke 257.262257 433.387755 moveto 173.807647 441.399484 lineto 285.303073 382.647431 lineto 257.262257 433.387755 lineto stroke 535.000000 625.000000 moveto 77.000000 625.000000 lineto 268.612245 572.256627 lineto 535.000000 625.000000 lineto stroke 324.026039 235.766831 moveto 261.268355 289.845414 lineto 270.615294 197.043865 lineto 324.026039 235.766831 lineto stroke 285.303073 382.647431 moveto 261.268355 289.845414 lineto 370.093361 273.821957 lineto 285.303073 382.647431 lineto stroke 324.026039 235.766831 moveto 370.093361 273.821957 lineto 261.268355 289.845414 lineto 324.026039 235.766831 lineto stroke 420.166314 247.116818 moveto 370.093361 273.821957 lineto 324.026039 235.766831 lineto 420.166314 247.116818 lineto stroke 370.093361 273.821957 moveto 410.819376 384.650012 lineto 285.303073 382.647431 lineto 370.093361 273.821957 lineto stroke 429.513253 349.933145 moveto 420.166314 247.116818 lineto 535.000000 167.000000 lineto 429.513253 349.933145 lineto stroke 270.615294 197.043865 moveto 420.166314 247.116818 lineto 324.026039 235.766831 lineto 270.615294 197.043865 lineto stroke 466.901008 436.058176 moveto 429.513253 349.933145 lineto 535.000000 167.000000 lineto 466.901008 436.058176 lineto stroke 370.093361 273.821957 moveto 420.166314 247.116818 lineto 429.513253 349.933145 lineto 370.093361 273.821957 lineto stroke 420.166314 247.116818 moveto 270.615294 197.043865 lineto 535.000000 167.000000 lineto 420.166314 247.116818 lineto stroke 429.513253 349.933145 moveto 410.819376 384.650012 lineto 370.093361 273.821957 lineto 429.513253 349.933145 lineto stroke 356.072953 484.795918 moveto 318.685198 462.096410 lineto 410.819376 384.650012 lineto 356.072953 484.795918 lineto stroke 285.303073 382.647431 moveto 410.819376 384.650012 lineto 318.685198 462.096410 lineto 285.303073 382.647431 lineto stroke 423.504573 499.484165 moveto 356.072953 484.795918 lineto 410.819376 384.650012 lineto 423.504573 499.484165 lineto stroke 356.072953 484.795918 moveto 423.504573 499.484165 lineto 268.612245 572.256627 lineto 356.072953 484.795918 lineto stroke 535.000000 625.000000 moveto 423.504573 499.484165 lineto 466.901008 436.058176 lineto 535.000000 625.000000 lineto stroke 410.819376 384.650012 moveto 466.901008 436.058176 lineto 423.504573 499.484165 lineto 410.819376 384.650012 lineto stroke 535.000000 167.000000 moveto 535.000000 625.000000 lineto 466.901008 436.058176 lineto 535.000000 167.000000 lineto stroke 423.504573 499.484165 moveto 535.000000 625.000000 lineto 268.612245 572.256627 lineto 423.504573 499.484165 lineto stroke 466.901008 436.058176 moveto 410.819376 384.650012 lineto 429.513253 349.933145 lineto 466.901008 436.058176 lineto stroke 318.685198 462.096410 moveto 356.072953 484.795918 lineto 268.612245 572.256627 lineto 318.685198 462.096410 lineto stroke 257.262257 433.387755 moveto 285.303073 382.647431 lineto 318.685198 462.096410 lineto 257.262257 433.387755 lineto stroke %%EndDocument @endspecial 51 1688 a @beginspecial 72 @llx 162 @lly 540 @urx 630 @ury 1008 @rwi @setspecial %%BeginDocument: spokes.condt.eps %!PS-Adobe-2.0 EPSF-2.0 %%BoundingBox: 72 162 540 630 %%Creator: Show Me %%EndComments 1 setlinecap 1 setlinejoin 2 setlinewidth 72 162 moveto 540 162 lineto 540 630 lineto 72 630 lineto closepath clip newpath 77.000000 396.000000 moveto 139.758151 341.253578 lineto 123.734694 436.726014 lineto 77.000000 396.000000 lineto stroke 139.758151 341.253578 moveto 77.000000 281.500000 lineto 212.530612 248.452029 lineto 139.758151 341.253578 lineto stroke 212.530612 248.452029 moveto 270.615294 197.043865 lineto 276.085988 266.174825 lineto 212.530612 248.452029 lineto stroke 212.530612 248.452029 moveto 77.000000 281.500000 lineto 191.500000 167.000000 lineto 212.530612 248.452029 lineto stroke 212.530612 248.452029 moveto 234.992682 289.873006 lineto 139.758151 341.253578 lineto 212.530612 248.452029 lineto stroke 276.085988 266.174825 moveto 234.992682 289.873006 lineto 212.530612 248.452029 lineto 276.085988 266.174825 lineto stroke 420.500000 167.000000 moveto 535.000000 167.000000 lineto 420.166314 247.116818 lineto 420.500000 167.000000 lineto stroke 285.303073 382.647431 moveto 233.621023 409.881073 lineto 229.905469 401.189574 lineto 285.303073 382.647431 lineto stroke 77.000000 510.500000 moveto 173.807647 441.399484 lineto 193.168896 450.078584 lineto 77.000000 510.500000 lineto stroke 77.000000 167.000000 moveto 191.500000 167.000000 lineto 77.000000 281.500000 lineto 77.000000 167.000000 lineto stroke 139.758151 341.253578 moveto 229.113037 366.666646 lineto 202.206667 410.460645 lineto 139.758151 341.253578 lineto stroke 193.168896 450.078584 moveto 268.612245 572.256627 lineto 191.500000 625.000000 lineto 193.168896 450.078584 lineto stroke 215.665226 433.613971 moveto 275.057842 499.034104 lineto 193.168896 450.078584 lineto 215.665226 433.613971 lineto stroke 285.303073 382.647431 moveto 238.161557 417.149359 lineto 233.621023 409.881073 lineto 285.303073 382.647431 lineto stroke 268.612245 572.256627 moveto 193.168896 450.078584 lineto 275.057842 499.034104 lineto 268.612245 572.256627 lineto stroke 191.500000 625.000000 moveto 77.000000 510.500000 lineto 193.168896 450.078584 lineto 191.500000 625.000000 lineto stroke 238.161557 417.149359 moveto 285.303073 382.647431 lineto 257.262257 433.387755 lineto 238.161557 417.149359 lineto stroke 77.000000 625.000000 moveto 77.000000 510.500000 lineto 191.500000 625.000000 lineto 77.000000 625.000000 lineto stroke 276.085988 266.174825 moveto 270.615294 197.043865 lineto 324.026039 235.766831 lineto 276.085988 266.174825 lineto stroke 77.000000 396.000000 moveto 123.734694 436.726014 lineto 77.000000 453.250000 lineto 77.000000 396.000000 lineto stroke 261.268355 289.845414 moveto 234.992682 289.873006 lineto 276.085988 266.174825 lineto 261.268355 289.845414 lineto stroke 312.110717 280.962997 moveto 324.026039 235.766831 lineto 357.871917 289.507768 lineto 312.110717 280.962997 lineto stroke 420.166314 247.116818 moveto 370.093361 273.821957 lineto 324.026039 235.766831 lineto 420.166314 247.116818 lineto stroke 357.871917 289.507768 moveto 380.827800 286.650000 lineto 367.714961 299.827727 lineto 357.871917 289.507768 lineto stroke 420.166314 247.116818 moveto 535.000000 167.000000 lineto 535.000000 396.000000 lineto 420.166314 247.116818 lineto stroke 306.000000 167.000000 moveto 324.026039 235.766831 lineto 270.615294 197.043865 lineto 306.000000 167.000000 lineto stroke 420.166314 247.116818 moveto 535.000000 396.000000 lineto 429.513253 349.933145 lineto 420.166314 247.116818 lineto stroke 380.827800 286.650000 moveto 429.513253 349.933145 lineto 367.714961 299.827727 lineto 380.827800 286.650000 lineto stroke 420.500000 167.000000 moveto 324.026039 235.766831 lineto 306.000000 167.000000 lineto 420.500000 167.000000 lineto stroke 410.819376 384.650012 moveto 385.893589 359.828328 lineto 429.513253 349.933145 lineto 410.819376 384.650012 lineto stroke 318.685198 462.096410 moveto 337.322385 457.731549 lineto 356.072953 484.795918 lineto 318.685198 462.096410 lineto stroke 377.266691 384.114687 moveto 369.369975 407.372799 lineto 343.714007 383.579363 lineto 377.266691 384.114687 lineto stroke 397.392275 415.614588 moveto 423.504573 499.484165 lineto 374.527415 458.078455 lineto 397.392275 415.614588 lineto stroke 423.504573 499.484165 moveto 306.000000 625.000000 lineto 356.072953 484.795918 lineto 423.504573 499.484165 lineto stroke 423.504573 499.484165 moveto 466.901008 436.058176 lineto 535.000000 510.500000 lineto 423.504573 499.484165 lineto stroke 337.322385 457.731549 moveto 374.527415 458.078455 lineto 356.072953 484.795918 lineto 337.322385 457.731549 lineto stroke 535.000000 625.000000 moveto 423.504573 499.484165 lineto 535.000000 510.500000 lineto 535.000000 625.000000 lineto stroke 535.000000 625.000000 moveto 306.000000 625.000000 lineto 423.504573 499.484165 lineto 535.000000 625.000000 lineto stroke 466.901008 436.058176 moveto 410.819376 384.650012 lineto 429.513253 349.933145 lineto 466.901008 436.058176 lineto stroke 356.072953 484.795918 moveto 268.612245 572.256627 lineto 275.057842 499.034104 lineto 356.072953 484.795918 lineto stroke 466.901008 436.058176 moveto 429.513253 349.933145 lineto 535.000000 396.000000 lineto 466.901008 436.058176 lineto stroke 318.685198 462.096410 moveto 356.072953 484.795918 lineto 275.057842 499.034104 lineto 318.685198 462.096410 lineto stroke 306.000000 167.000000 moveto 270.615294 197.043865 lineto 248.750000 167.000000 lineto 306.000000 167.000000 lineto stroke 356.072953 484.795918 moveto 306.000000 625.000000 lineto 268.612245 572.256627 lineto 356.072953 484.795918 lineto stroke 280.694531 324.411128 moveto 285.303073 382.647431 lineto 270.656586 326.094924 lineto 280.694531 324.411128 lineto stroke 300.195396 326.159163 moveto 280.694531 324.411128 lineto 279.542395 309.852052 lineto 300.195396 326.159163 lineto stroke 229.113037 366.666646 moveto 139.758151 341.253578 lineto 234.992682 289.873006 lineto 229.113037 366.666646 lineto stroke 257.454751 331.293983 moveto 270.656586 326.094924 lineto 285.303073 382.647431 lineto 257.454751 331.293983 lineto stroke 357.871917 289.507768 moveto 370.093361 273.821957 lineto 380.827800 286.650000 lineto 357.871917 289.507768 lineto stroke 367.714961 299.827727 moveto 429.513253 349.933145 lineto 385.893589 359.828328 lineto 367.714961 299.827727 lineto stroke 226.913392 425.381665 moveto 215.665226 433.613971 lineto 218.667679 417.760676 lineto 226.913392 425.381665 lineto stroke 257.262257 433.387755 moveto 275.057842 499.034104 lineto 215.665226 433.613971 lineto 257.262257 433.387755 lineto stroke 280.180458 440.840767 moveto 285.303073 382.647431 lineto 307.932373 436.504839 lineto 280.180458 440.840767 lineto stroke 280.180458 440.840767 moveto 257.262257 433.387755 lineto 285.303073 382.647431 lineto 280.180458 440.840767 lineto stroke 374.527415 458.078455 moveto 423.504573 499.484165 lineto 356.072953 484.795918 lineto 374.527415 458.078455 lineto stroke 318.571817 430.667180 moveto 307.932373 436.504839 lineto 285.303073 382.647431 lineto 318.571817 430.667180 lineto stroke 385.893589 359.828328 moveto 342.273925 369.723511 lineto 336.810503 330.885116 lineto 385.893589 359.828328 lineto stroke 342.273925 369.723511 moveto 343.714007 383.579363 lineto 285.303073 382.647431 lineto 342.273925 369.723511 lineto stroke 300.195396 326.159163 moveto 285.303073 382.647431 lineto 280.694531 324.411128 lineto 300.195396 326.159163 lineto stroke 333.429028 320.879391 moveto 312.110717 280.962997 lineto 345.650473 305.193580 lineto 333.429028 320.879391 lineto stroke 397.392275 415.614588 moveto 466.901008 436.058176 lineto 423.504573 499.484165 lineto 397.392275 415.614588 lineto stroke 397.392275 415.614588 moveto 410.819376 384.650012 lineto 466.901008 436.058176 lineto 397.392275 415.614588 lineto stroke 173.807647 441.399484 moveto 123.734694 436.726014 lineto 174.507865 419.731716 lineto 173.807647 441.399484 lineto stroke 193.168896 450.078584 moveto 203.714335 425.640278 lineto 215.665226 433.613971 lineto 193.168896 450.078584 lineto stroke 174.507865 419.731716 moveto 123.734694 436.726014 lineto 139.758151 341.253578 lineto 174.507865 419.731716 lineto stroke 233.621023 409.881073 moveto 218.667679 417.760676 lineto 216.056068 405.825109 lineto 233.621023 409.881073 lineto stroke 374.527415 458.078455 moveto 352.221330 439.220699 lineto 397.392275 415.614588 lineto 374.527415 458.078455 lineto stroke 337.322385 457.731549 moveto 352.221330 439.220699 lineto 374.527415 458.078455 lineto 337.322385 457.731549 lineto stroke 77.000000 281.500000 moveto 139.758151 341.253578 lineto 77.000000 396.000000 lineto 77.000000 281.500000 lineto stroke 123.734694 436.726014 moveto 173.807647 441.399484 lineto 77.000000 510.500000 lineto 123.734694 436.726014 lineto stroke 212.530612 248.452029 moveto 191.500000 167.000000 lineto 248.750000 167.000000 lineto 212.530612 248.452029 lineto stroke 300.195396 326.159163 moveto 279.542395 309.852052 lineto 312.110717 280.962997 lineto 300.195396 326.159163 lineto stroke 279.542395 309.852052 moveto 270.656586 326.094924 lineto 265.962471 307.970169 lineto 279.542395 309.852052 lineto stroke 229.113037 366.666646 moveto 285.303073 382.647431 lineto 229.905469 401.189574 lineto 229.113037 366.666646 lineto stroke 229.113037 366.666646 moveto 257.454751 331.293983 lineto 285.303073 382.647431 lineto 229.113037 366.666646 lineto stroke 246.223717 310.583494 moveto 229.113037 366.666646 lineto 234.992682 289.873006 lineto 246.223717 310.583494 lineto stroke 265.962471 307.970169 moveto 246.223717 310.583494 lineto 261.268355 289.845414 lineto 265.962471 307.970169 lineto stroke 321.207584 336.565202 moveto 285.303073 382.647431 lineto 300.195396 326.159163 lineto 321.207584 336.565202 lineto stroke 347.111989 320.532653 moveto 333.429028 320.879391 lineto 345.650473 305.193580 lineto 347.111989 320.532653 lineto stroke 393.940638 273.472273 moveto 420.166314 247.116818 lineto 429.513253 349.933145 lineto 393.940638 273.472273 lineto stroke 393.940638 273.472273 moveto 370.093361 273.821957 lineto 420.166314 247.116818 lineto 393.940638 273.472273 lineto stroke 329.915244 420.362943 moveto 352.221330 439.220699 lineto 318.571817 430.667180 lineto 329.915244 420.362943 lineto stroke 337.322385 457.731549 moveto 318.685198 462.096410 lineto 318.571817 430.667180 lineto 337.322385 457.731549 lineto stroke 326.509017 341.237579 moveto 285.303073 382.647431 lineto 321.207584 336.565202 lineto 326.509017 341.237579 lineto stroke 326.509017 341.237579 moveto 342.273925 369.723511 lineto 285.303073 382.647431 lineto 326.509017 341.237579 lineto stroke 326.509017 341.237579 moveto 336.810503 330.885116 lineto 342.273925 369.723511 lineto 326.509017 341.237579 lineto stroke 343.714007 383.579363 moveto 342.273925 369.723511 lineto 377.266691 384.114687 lineto 343.714007 383.579363 lineto stroke 324.026039 235.766831 moveto 370.093361 273.821957 lineto 357.871917 289.507768 lineto 324.026039 235.766831 lineto stroke 312.110717 280.962997 moveto 276.085988 266.174825 lineto 324.026039 235.766831 lineto 312.110717 280.962997 lineto stroke 203.714335 425.640278 moveto 173.807647 441.399484 lineto 174.507865 419.731716 lineto 203.714335 425.640278 lineto stroke 203.714335 425.640278 moveto 193.168896 450.078584 lineto 173.807647 441.399484 lineto 203.714335 425.640278 lineto stroke 229.905469 401.189574 moveto 216.056068 405.825109 lineto 229.113037 366.666646 lineto 229.905469 401.189574 lineto stroke 229.905469 401.189574 moveto 233.621023 409.881073 lineto 216.056068 405.825109 lineto 229.905469 401.189574 lineto stroke 341.347674 399.131009 moveto 369.369975 407.372799 lineto 352.221330 439.220699 lineto 341.347674 399.131009 lineto stroke 329.915244 420.362943 moveto 318.571817 430.667180 lineto 285.303073 382.647431 lineto 329.915244 420.362943 lineto stroke 191.500000 625.000000 moveto 268.612245 572.256627 lineto 248.750000 625.000000 lineto 191.500000 625.000000 lineto stroke 535.000000 510.500000 moveto 466.901008 436.058176 lineto 535.000000 396.000000 lineto 535.000000 510.500000 lineto stroke 420.166314 247.116818 moveto 324.026039 235.766831 lineto 420.500000 167.000000 lineto 420.166314 247.116818 lineto stroke 261.268355 289.845414 moveto 278.390259 295.292976 lineto 265.962471 307.970169 lineto 261.268355 289.845414 lineto stroke 234.992682 289.873006 moveto 261.268355 289.845414 lineto 246.223717 310.583494 lineto 234.992682 289.873006 lineto stroke 280.180458 440.840767 moveto 275.057842 499.034104 lineto 257.262257 433.387755 lineto 280.180458 440.840767 lineto stroke 280.180458 440.840767 moveto 318.685198 462.096410 lineto 275.057842 499.034104 lineto 280.180458 440.840767 lineto stroke 307.932373 436.504839 moveto 318.685198 462.096410 lineto 280.180458 440.840767 lineto 307.932373 436.504839 lineto stroke 307.932373 436.504839 moveto 318.571817 430.667180 lineto 318.685198 462.096410 lineto 307.932373 436.504839 lineto stroke 369.369975 407.372799 moveto 341.347674 399.131009 lineto 343.714007 383.579363 lineto 369.369975 407.372799 lineto stroke 385.893589 359.828328 moveto 377.266691 384.114687 lineto 342.273925 369.723511 lineto 385.893589 359.828328 lineto stroke 278.390259 295.292976 moveto 276.085988 266.174825 lineto 312.110717 280.962997 lineto 278.390259 295.292976 lineto stroke 278.390259 295.292976 moveto 261.268355 289.845414 lineto 276.085988 266.174825 lineto 278.390259 295.292976 lineto stroke 77.000000 453.250000 moveto 123.734694 436.726014 lineto 77.000000 510.500000 lineto 77.000000 453.250000 lineto stroke 270.615294 197.043865 moveto 212.530612 248.452029 lineto 248.750000 167.000000 lineto 270.615294 197.043865 lineto stroke 300.195396 326.159163 moveto 312.110717 280.962997 lineto 333.429028 320.879391 lineto 300.195396 326.159163 lineto stroke 333.429028 320.879391 moveto 336.810503 330.885116 lineto 327.318306 328.722297 lineto 333.429028 320.879391 lineto stroke 380.827800 286.650000 moveto 393.940638 273.472273 lineto 429.513253 349.933145 lineto 380.827800 286.650000 lineto stroke 380.827800 286.650000 moveto 370.093361 273.821957 lineto 393.940638 273.472273 lineto 380.827800 286.650000 lineto stroke 215.665226 433.613971 moveto 226.913392 425.381665 lineto 257.262257 433.387755 lineto 215.665226 433.613971 lineto stroke 238.161557 417.149359 moveto 226.913392 425.381665 lineto 233.621023 409.881073 lineto 238.161557 417.149359 lineto stroke 329.915244 420.362943 moveto 341.347674 399.131009 lineto 352.221330 439.220699 lineto 329.915244 420.362943 lineto stroke 337.322385 457.731549 moveto 318.571817 430.667180 lineto 352.221330 439.220699 lineto 337.322385 457.731549 lineto stroke 174.507865 419.731716 moveto 139.758151 341.253578 lineto 202.206667 410.460645 lineto 174.507865 419.731716 lineto stroke 202.206667 410.460645 moveto 203.714335 425.640278 lineto 174.507865 419.731716 lineto 202.206667 410.460645 lineto stroke 341.347674 399.131009 moveto 285.303073 382.647431 lineto 343.714007 383.579363 lineto 341.347674 399.131009 lineto stroke 341.347674 399.131009 moveto 329.915244 420.362943 lineto 285.303073 382.647431 lineto 341.347674 399.131009 lineto stroke 248.750000 625.000000 moveto 268.612245 572.256627 lineto 306.000000 625.000000 lineto 248.750000 625.000000 lineto stroke 377.266691 384.114687 moveto 410.819376 384.650012 lineto 397.392275 415.614588 lineto 377.266691 384.114687 lineto stroke 377.266691 384.114687 moveto 385.893589 359.828328 lineto 410.819376 384.650012 lineto 377.266691 384.114687 lineto stroke 265.962471 307.970169 moveto 270.656586 326.094924 lineto 257.454751 331.293983 lineto 265.962471 307.970169 lineto stroke 280.694531 324.411128 moveto 270.656586 326.094924 lineto 279.542395 309.852052 lineto 280.694531 324.411128 lineto stroke 357.871917 289.507768 moveto 345.650473 305.193580 lineto 312.110717 280.962997 lineto 357.871917 289.507768 lineto stroke 367.714961 299.827727 moveto 357.413475 310.180190 lineto 357.871917 289.507768 lineto 367.714961 299.827727 lineto stroke 347.111989 320.532653 moveto 357.413475 310.180190 lineto 385.893589 359.828328 lineto 347.111989 320.532653 lineto stroke 347.111989 320.532653 moveto 345.650473 305.193580 lineto 357.413475 310.180190 lineto 347.111989 320.532653 lineto stroke 218.667679 417.760676 moveto 203.714335 425.640278 lineto 202.206667 410.460645 lineto 218.667679 417.760676 lineto stroke 218.667679 417.760676 moveto 215.665226 433.613971 lineto 203.714335 425.640278 lineto 218.667679 417.760676 lineto stroke 216.056068 405.825109 moveto 202.206667 410.460645 lineto 229.113037 366.666646 lineto 216.056068 405.825109 lineto stroke 216.056068 405.825109 moveto 218.667679 417.760676 lineto 202.206667 410.460645 lineto 216.056068 405.825109 lineto stroke 369.369975 407.372799 moveto 397.392275 415.614588 lineto 352.221330 439.220699 lineto 369.369975 407.372799 lineto stroke 369.369975 407.372799 moveto 377.266691 384.114687 lineto 397.392275 415.614588 lineto 369.369975 407.372799 lineto stroke 246.223717 310.583494 moveto 257.454751 331.293983 lineto 229.113037 366.666646 lineto 246.223717 310.583494 lineto stroke 246.223717 310.583494 moveto 265.962471 307.970169 lineto 257.454751 331.293983 lineto 246.223717 310.583494 lineto stroke 278.390259 295.292976 moveto 312.110717 280.962997 lineto 279.542395 309.852052 lineto 278.390259 295.292976 lineto stroke 279.542395 309.852052 moveto 265.962471 307.970169 lineto 278.390259 295.292976 lineto 279.542395 309.852052 lineto stroke 357.413475 310.180190 moveto 367.714961 299.827727 lineto 385.893589 359.828328 lineto 357.413475 310.180190 lineto stroke 345.650473 305.193580 moveto 357.871917 289.507768 lineto 357.413475 310.180190 lineto 345.650473 305.193580 lineto stroke 333.429028 320.879391 moveto 327.318306 328.722297 lineto 300.195396 326.159163 lineto 333.429028 320.879391 lineto stroke 321.207584 336.565202 moveto 327.318306 328.722297 lineto 326.509017 341.237579 lineto 321.207584 336.565202 lineto stroke 226.913392 425.381665 moveto 238.161557 417.149359 lineto 257.262257 433.387755 lineto 226.913392 425.381665 lineto stroke 218.667679 417.760676 moveto 233.621023 409.881073 lineto 226.913392 425.381665 lineto 218.667679 417.760676 lineto stroke 347.111989 320.532653 moveto 385.893589 359.828328 lineto 336.810503 330.885116 lineto 347.111989 320.532653 lineto stroke 336.810503 330.885116 moveto 333.429028 320.879391 lineto 347.111989 320.532653 lineto 336.810503 330.885116 lineto stroke 327.318306 328.722297 moveto 321.207584 336.565202 lineto 300.195396 326.159163 lineto 327.318306 328.722297 lineto stroke 336.810503 330.885116 moveto 326.509017 341.237579 lineto 327.318306 328.722297 lineto 336.810503 330.885116 lineto stroke %%EndDocument @endspecial 858 w @beginspecial 72 @llx 162 @lly 540 @urx 630 @ury 1008 @rwi @setspecial %%BeginDocument: spokes.cdt.eps %!PS-Adobe-2.0 EPSF-2.0 %%BoundingBox: 72 162 540 630 %%Creator: Show Me %%EndComments 1 setlinecap 1 setlinejoin 2 setlinewidth 72 162 moveto 540 162 lineto 540 630 lineto 72 630 lineto closepath clip newpath 123.734694 436.726014 moveto 77.000000 167.000000 lineto 139.758151 341.253578 lineto 123.734694 436.726014 lineto stroke 212.530612 248.452029 moveto 139.758151 341.253578 lineto 77.000000 167.000000 lineto 212.530612 248.452029 lineto stroke 261.268355 289.845414 moveto 212.530612 248.452029 lineto 270.615294 197.043865 lineto 261.268355 289.845414 lineto stroke 77.000000 167.000000 moveto 270.615294 197.043865 lineto 212.530612 248.452029 lineto 77.000000 167.000000 lineto stroke 212.530612 248.452029 moveto 285.303073 382.647431 lineto 139.758151 341.253578 lineto 212.530612 248.452029 lineto stroke 212.530612 248.452029 moveto 261.268355 289.845414 lineto 285.303073 382.647431 lineto 212.530612 248.452029 lineto stroke 270.615294 197.043865 moveto 77.000000 167.000000 lineto 535.000000 167.000000 lineto 270.615294 197.043865 lineto stroke 285.303073 382.647431 moveto 173.807647 441.399484 lineto 123.734694 436.726014 lineto 285.303073 382.647431 lineto stroke 173.807647 441.399484 moveto 77.000000 625.000000 lineto 123.734694 436.726014 lineto 173.807647 441.399484 lineto stroke 77.000000 167.000000 moveto 123.734694 436.726014 lineto 77.000000 625.000000 lineto 77.000000 167.000000 lineto stroke 123.734694 436.726014 moveto 139.758151 341.253578 lineto 285.303073 382.647431 lineto 123.734694 436.726014 lineto stroke 193.168896 450.078584 moveto 77.000000 625.000000 lineto 173.807647 441.399484 lineto 193.168896 450.078584 lineto stroke 268.612245 572.256627 moveto 193.168896 450.078584 lineto 257.262257 433.387755 lineto 268.612245 572.256627 lineto stroke 285.303073 382.647431 moveto 193.168896 450.078584 lineto 173.807647 441.399484 lineto 285.303073 382.647431 lineto stroke 285.303073 382.647431 moveto 268.612245 572.256627 lineto 257.262257 433.387755 lineto 285.303073 382.647431 lineto stroke 77.000000 625.000000 moveto 193.168896 450.078584 lineto 268.612245 572.256627 lineto 77.000000 625.000000 lineto stroke 193.168896 450.078584 moveto 285.303073 382.647431 lineto 257.262257 433.387755 lineto 193.168896 450.078584 lineto stroke 535.000000 625.000000 moveto 77.000000 625.000000 lineto 268.612245 572.256627 lineto 535.000000 625.000000 lineto stroke 285.303073 382.647431 moveto 270.615294 197.043865 lineto 324.026039 235.766831 lineto 285.303073 382.647431 lineto stroke 270.615294 197.043865 moveto 285.303073 382.647431 lineto 261.268355 289.845414 lineto 270.615294 197.043865 lineto stroke 370.093361 273.821957 moveto 285.303073 382.647431 lineto 324.026039 235.766831 lineto 370.093361 273.821957 lineto stroke 420.166314 247.116818 moveto 370.093361 273.821957 lineto 324.026039 235.766831 lineto 420.166314 247.116818 lineto stroke 285.303073 382.647431 moveto 370.093361 273.821957 lineto 420.166314 247.116818 lineto 285.303073 382.647431 lineto stroke 429.513253 349.933145 moveto 420.166314 247.116818 lineto 535.000000 167.000000 lineto 429.513253 349.933145 lineto stroke 270.615294 197.043865 moveto 420.166314 247.116818 lineto 324.026039 235.766831 lineto 270.615294 197.043865 lineto stroke 466.901008 436.058176 moveto 429.513253 349.933145 lineto 535.000000 167.000000 lineto 466.901008 436.058176 lineto stroke 420.166314 247.116818 moveto 429.513253 349.933145 lineto 285.303073 382.647431 lineto 420.166314 247.116818 lineto stroke 420.166314 247.116818 moveto 270.615294 197.043865 lineto 535.000000 167.000000 lineto 420.166314 247.116818 lineto stroke 410.819376 384.650012 moveto 285.303073 382.647431 lineto 429.513253 349.933145 lineto 410.819376 384.650012 lineto stroke 318.685198 462.096410 moveto 285.303073 382.647431 lineto 356.072953 484.795918 lineto 318.685198 462.096410 lineto stroke 285.303073 382.647431 moveto 410.819376 384.650012 lineto 466.901008 436.058176 lineto 285.303073 382.647431 lineto stroke 466.901008 436.058176 moveto 423.504573 499.484165 lineto 285.303073 382.647431 lineto 466.901008 436.058176 lineto stroke 356.072953 484.795918 moveto 423.504573 499.484165 lineto 268.612245 572.256627 lineto 356.072953 484.795918 lineto stroke 535.000000 625.000000 moveto 423.504573 499.484165 lineto 466.901008 436.058176 lineto 535.000000 625.000000 lineto stroke 356.072953 484.795918 moveto 285.303073 382.647431 lineto 423.504573 499.484165 lineto 356.072953 484.795918 lineto stroke 535.000000 167.000000 moveto 535.000000 625.000000 lineto 466.901008 436.058176 lineto 535.000000 167.000000 lineto stroke 423.504573 499.484165 moveto 535.000000 625.000000 lineto 268.612245 572.256627 lineto 423.504573 499.484165 lineto stroke 466.901008 436.058176 moveto 410.819376 384.650012 lineto 429.513253 349.933145 lineto 466.901008 436.058176 lineto stroke 318.685198 462.096410 moveto 356.072953 484.795918 lineto 268.612245 572.256627 lineto 318.685198 462.096410 lineto stroke 285.303073 382.647431 moveto 318.685198 462.096410 lineto 268.612245 572.256627 lineto 285.303073 382.647431 lineto stroke %%EndDocument @endspecial 0 1834 a Fl(Figure)26 b(3:)39 b Fk(The)26 b(Delauna)n(y)f(tr)q(iangulation)e(\(upper)j(r)q(ight\))g(of)0 1916 y(the)i(v)n(er)s(tices)h(of)f(a)h(PSLG)f(\(upper)f(left\))h(might) g(not)g(respect)0 1999 y(the)i(segments)g(of)h(the)f(PSLG.)h(These)f (segments)g(can)h(be)0 2081 y(incor)r(por)o(ated)d(b)o(y)j(adding)e(v)n (er)s(tices)i(to)g(obtain)e(a)j(conf)n(or)r(m-)0 2163 y(ing)e(Delauna)n(y)e(tr)q(iangulation)f(\(lo)o(w)o(er)i(left\),)j(or)f (b)o(y)f(f)n(orgoing)0 2245 y(Delauna)n(y)17 b(tr)q(iangles)f(in)j(f)n (a)o(v)n(or)f(of)g(constr)o(ained)f(Delauna)n(y)g(tr)q(i-)0 2327 y(angles)i(\(lo)o(w)o(er)g(r)q(ight\).)281 2593 y Fq(2)84 b(De\002nitions:)27 b(PLCs)c(and)g(CDTs)0 2759 y Fp(The)16 b(phrase)h(\223constrained)g(Delaunay)g(triangulation\224)g (appears)g(of-)0 2850 y(ten)28 b(in)g(the)g(meshing)h(literature,)h(b)o (ut)e(there)g(appears)h(to)f(be)g(little)0 2942 y(agreement)d(on)f(e)o (xactly)g(what)g(it)f(means,)j(especially)e(in)g(three)g(di-)0 3033 y(mensions.)58 b(In)31 b(contrast,)i(\223constrained)f (Delaunay\224)f(and)g(\223con-)0 3124 y(forming)d(Delaunay\224)g(are)g (rigorously)g(de\002ned)g(in)f(the)h(computa-)0 3216 y(tional)20 b(geometry)g(literature;)g(this)f(section)h(e)o(xplains)h (those)f(de\002ni-)0 3307 y(tions.)k(My)19 b(apologies)h(in)f(adv)n (ance)i(to)e(an)o(yone)h(who)g(wishes)f(\223con-)0 3398 y(strained)g(Delaunay)h(triangulation\224)g(to)f(mean)g(something)h (else.)0 3539 y(I)k(illustrate)g(with)g(tw)o(o-dimensional)i(e)o (xamples)f(\002rst.)39 b(Both)24 b(con-)0 3631 y(forming)17 b(and)g(constrained)h(Delaunay)g(triangulations)f(are)g(de\002ned)0 3722 y(on)32 b(the)f(assumption)i(that)e(the)g(input)h(is)f(a)g Fo(planar)h(str)o(aight)g(line)0 3813 y(gr)o(aph)d Fp(\(PSLG\))e Fj(X)6 b Fp(,)30 b(which)e(is)g(a)g(set)g(of)g(v)o(ertices)g(and)h Fo(se)m(gments)0 3905 y Fp(\(constraining)e(edges\))h(illustrated)e(in) g(Figure)g(3)h(\(upper)g(left\).)45 b(A)0 3996 y(triangulation)28 b(is)f(sought)i(that)e(contains)i(the)e(v)o(ertices)h(of)g Fj(X)33 b Fp(and)0 4087 y(respects)19 b(the)g(se)o(gments)h(of)f Fj(X)6 b Fp(.)0 4229 y(In)33 b(a)f Fo(conforming)i(Delaunay)g (triangulation)g Fp(\(Figure)f(3,)j(lo)n(wer)0 4320 y(left\),)25 b(e)n(v)o(ery)f(simple)o(x)h(\(triangle,)g(edge,)h(or)f(v)o(erte)o(x\)) f(is)g Fo(Delaunay)p Fp(.)0 4411 y(A)h(simple)o(x)h(is)f(Delaunay)h(if) f(there)h(e)o(xists)f(a)g Fo(cir)m(cumcir)m(cle)h Fp(of)g(the)0 4503 y(simple)o(x\227a)i(circle)f(that)h(passes)g(through)h(all)e(its)g (v)o(ertices\227that)0 4594 y(encloses)d(no)f(v)o(erte)o(x)g (\(although)h(an)o(y)g(number)g(of)f(v)o(ertices)g(is)f(per)o(-)0 4685 y(mitted)i(on)i(the)e(circle\).)40 b(The)25 b(v)o(ertices)g(of)g Fj(X)30 b Fp(are)25 b(augmented)h(by)0 4777 y(additional)31 b(v)o(ertices)f(\(sometimes)g(called)g Fo(Steiner)g(points)p Fp(\))h(care-)0 4868 y(fully)25 b(chosen)i(so)f(that)f(the)h(Delaunay)g (triangulation)g(of)g(the)f(aug-)0 4959 y(mented)19 b(v)o(erte)o(x)f (set)f Fo(r)m(espects)i Fp(all)e(the)h(se)o(gments\227in)g(other)g(w)o (ords,)0 5050 y(so)34 b(that)f(each)h(se)o(gment)g(is)f(the)h(union)g (of)f(a)h(contiguous)h(linear)0 5142 y(sequence)c(of)f(edges)h(of)f (the)g(triangulation.)56 b(Edelsbrunner)31 b(and)0 5233 y(T)-6 b(an)25 b([10)q(])g(sho)n(w)h(that)g(an)o(y)g(PSLG)e(can)i(be)f (triangulated)i(with)e(the)0 5324 y(addition)k(of)f Fi(O)r Fh(\()p Fj(m)524 5293 y Fg(2)559 5324 y Fj(n)p Fh(\))g Fp(augmenting)i(v)o(ertices,)g(where)f Fj(m)f Fp(is)g(the)2130 697 y @beginspecial 0 @llx 0 @lly 532 @urx 213 @ury 2088 @rwi @setspecial %%BeginDocument: condel.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: condel.fig %%Creator: fig2dev Version 3.1 Patchlevel 2 %%CreationDate: Thu Mar 19 19:03:00 1998 %%For: jrs@triangle (Jonathan R Shewchuk) %Magnification: 1.00 %%Orientation: Portrait %%BoundingBox: 0 0 532 213 %%Pages: 0 %%BeginSetup %%IncludeFeature: *PageSize Letter %%EndSetup %%EndComments /$F2psDict 200 dict def F2psDictbeginF2psDict begin F2psDictbeginF2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -31.0 289.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog F2psBegin10setmiterlimitn0792m00l6120l612792lcpclip0.060000.06000sc7.500slwF2psBegin 10 setmiterlimit n 0 792 m 0 0 l 612 0 l 612 792 l cp clip 0.06000 0.06000 sc 7.500 slw % Ellipse n 3000 3300 1500 1500 0 360 DrawEllipse gs col0 s gr 0.000 slw % Ellipse n 1800 2400 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3900 4500 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4200 2700 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2100 4200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr 7.500 slw % Ellipse n 7500 3300 1500 1500 0 360 DrawEllipse gs col0 s gr 0.000 slw % Ellipse n 6825 4425 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7125 1950 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6000 3300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 8400 4500 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 8700 2400 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 600 2700 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1575 1350 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3000 1425 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4575 4200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 5925 2700 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 8325 1875 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 9300 3675 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr 60.000 slw % Polyline n 3000 1425 m 4575 4200 l gs col0 s gr 7.500 slw % Polyline n 600 2700 m 2100 4200 l gs col0 s gr % Polyline n 2100 4200 m 3900 4500 l gs col0 s gr % Polyline n 3900 4500 m 4575 4200 l gs col0 s gr % Polyline n 3000 1425 m 1800 2400 l gs col0 s gr % Polyline n 1800 2400 m 600 2700 l gs col0 s gr % Polyline n 600 2700 m 1575 1350 l gs col0 s gr % Polyline n 1575 1350 m 1800 2400 l gs col0 s gr % Polyline n 1575 1350 m 3000 1425 l gs col0 s gr % Polyline n 3000 1425 m 4200 2700 l gs col0 s gr % Polyline n 4200 2700 m 4575 4200 l gs col0 s gr 60.000 slw % Polyline n 1950 3450 m 1950 3450 l gs col0 s gr 75.000 slw % Polyline n 3900 4500 m 600 2700 l gs col0 s gr % Polyline n 6000 3300 m 8400 4500 l gs col0 s gr % Polyline n 8325 1875 m 5925 2700 l gs col0 s gr 15.000 slw % Polyline n 1800 2400 m 3900 4500 l gs col0 s gr % Polyline n 8700 2400 m 6000 3300 l gs col0 s gr % Polyline n 8400 4500 m 8700 2400 l gs col0 s gr 7.500 slw % Polyline n 5925 2700 m 6000 3300 l gs col0 s gr % Polyline n 8325 1875 m 8700 2400 l gs col0 s gr % Polyline n 8325 1875 m 6000 3300 l gs col0 s gr % Polyline n 3000 1425 m 3900 4500 l gs col0 s gr % Polyline n 5925 2700 m 7125 1950 l gs col0 s gr % Polyline n 7125 1950 m 8325 1875 l gs col0 s gr % Polyline n 6000 3300 m 6825 4425 l gs col0 s gr % Polyline n 6825 4425 m 8400 4500 l gs col0 s gr % Polyline n 8700 2400 m 9300 3675 l gs col0 s gr % Polyline n 9300 3675 m 8400 4500 l gs col0 s gr /Times-Italic ff 450.00 scf sf 2550 3000 m gs 1 -1 sc (e) col0 sh gr /Times-Italic ff 450.00 scf sf 7725 3600 m gs 1 -1 sc (t) col0 sh gr F2psBegin10setmiterlimitn0792m00l6120l612792lcpclip0.060000.06000sc7.500slwF2psEnd rs %%EndDocument @endspecial 2100 862 a Fl(Figure)21 b(4:)29 b Fk(The)22 b(edge)f Fj(e)h Fk(and)f(the)h(tr)q(iangle)e Fj(t)i Fk(are)g(each)g (con-)2100 944 y(str)o(ained)d(Delauna)n(y)-7 b(.)22 b(Bold)d(lines)h(represent)e(segments)o(.)2100 1210 y Fp(number)36 b(of)e(se)o(gments)i(in)e Fj(X)6 b Fp(,)39 b(and)c Fj(n)g Fp(is)f(the)h(number)h(of)e(v)o(er)o(-)2100 1301 y(tices.)51 b(Fe)n(w)27 b(PSLGs)g(require)i(this)e(man)o(y)i (augmenting)h(v)o(ertices,)2100 1392 y(b)o(ut)e(PSLGs)g(are)g(kno)n(wn) i(for)f(which)g Fh(\002\()p Fj(mn)p Fh(\))f Fp(augmenting)i(v)o(er)o(-) 2100 1484 y(tices)20 b(are)h(needed.)29 b(Closing)21 b(the)g(gap)f(between)i(the)e Fi(O)r Fh(\()p Fj(m)3661 1452 y Fg(2)3696 1484 y Fj(n)p Fh(\))g Fp(and)2100 1575 y Fh(\012\()p Fj(mn)p Fh(\))f Fp(bounds)h(remains)g(an)f(open)h (problem.)2100 1716 y(A)25 b Fo(constr)o(ained)h(Delaunay)g (triangulation)h Fp(\(CDT\))d([13,)h(2])g(of)g Fj(X)2100 1808 y Fp(has)19 b(no)g(v)o(ertices)g(not)g(in)g Fj(X)6 b Fp(,)18 b(and)i(e)n(v)o(ery)f(se)o(gment)h(of)f Fj(X)24 b Fp(is)19 b(a)f(single)2100 1899 y(edge)24 b(of)g(the)f(CDT)f (\(Figure)i(3,)g(lo)n(wer)f(right\).)36 b(Ho)n(we)n(v)o(er)m(,)25 b(a)e(CDT)-6 b(,)2100 1990 y(despite)29 b(its)g(name,)j(is)c(not)i(a)f (Delaunay)h(triangulation,)i(because)2100 2081 y(the)18 b(simplices)g(are)g(not)g(required)h(to)e(be)i(Delaunay)-5 b(.)24 b(Instead,)18 b(e)n(v)o(ery)2100 2173 y(simple)o(x)k(must)g (either)g(be)g(a)g(se)o(gment)h(speci\002ed)f(in)g Fj(X)28 b Fp(or)22 b(be)g Fo(con-)2100 2264 y(str)o(ained)h(Delaunay)p Fp(.)35 b(A)22 b(simple)o(x)h(is)f(constrained)i(Delaunay)g(if)d(it) 2100 2355 y(has)i(a)g(circumcircle)g(that)f(encloses)i(no)f(v)o(erte)o (x)g(of)g Fj(X)28 b Fp(that)23 b(is)f Fo(visi-)2100 2447 y(ble)c Fp(from)g(an)o(y)g(point)h(in)e(the)h(relati)n(v)o(e)g (interior)g(of)g(the)g(simple)o(x;)g(and)2100 2538 y(furthermore,)k (the)f(relati)n(v)o(e)g(interior)g(of)g(the)g(simple)o(x)g(does)h(not)f (in-)2100 2629 y(tersect)d(an)o(y)h(se)o(gment.)24 b(V)l(isibility)17 b(is)g(occluded)j(only)f(by)g(se)o(gments)2100 2721 y(of)g Fj(X)6 b Fp(.)2100 2862 y(Figure)24 b(4)g(demonstrates)h(e)o(xamples)g (of)f(a)g(constrained)h(Delaunay)2100 2953 y(edge)g Fj(e)e Fp(and)i(a)f(constrained)h(Delaunay)h(triangle)e Fj(t)p Fp(.)38 b(Se)o(gments)24 b(in)2100 3045 y Fj(X)31 b Fp(appear)c(as)e (bold)h(lines.)42 b(Although)26 b(there)g(is)e(no)i(empty)g(circle)2100 3136 y(that)g(encloses)h Fj(e)p Fp(,)h(the)e(depicted)h(circumcircle)g (of)f Fj(e)g Fp(encloses)h(no)2100 3227 y(v)o(erte)o(x)g(that)g(is)f (visible)h(from)g(the)g(relati)n(v)o(e)f(interior)h(of)g Fj(e)p Fp(.)46 b(There)2100 3319 y(are)19 b(tw)o(o)g(v)o(ertices)g (inside)g(the)g(circle,)f(b)o(ut)h(both)h(are)f(hidden)h(behind)2100 3410 y(se)o(gments.)35 b(Hence,)23 b Fj(e)f Fp(is)h(constrained)g (Delaunay)-5 b(.)35 b(Similarly)-5 b(,)23 b(the)2100 3501 y(circumcircle)g(of)f Fj(t)g Fp(encloses)h(tw)o(o)g(v)o(ertices,)g (b)o(ut)f(both)h(are)g(hidden)2100 3592 y(from)18 b(the)f(interior)h (of)f Fj(t)g Fp(by)h(se)o(gments,)h(so)f Fj(t)f Fp(is)g(constrained)i (Delau-)2100 3684 y(nay)-5 b(.)2100 3825 y(The)20 b(adv)n(antage)i(of)e (a)f(CDT)h(o)o(v)o(er)g(a)g(conforming)h(Delaunay)g(trian-)2100 3916 y(gulation)g(is)e(that)h(it)f(has)i(no)f(v)o(ertices)g(other)h (than)f(those)h(in)e Fj(X)6 b Fp(.)27 b(The)2100 4008 y(disadv)n(antage)20 b(is)e(that)h(its)f(triangles)g(are)g(not)h (Delaunay)-5 b(.)24 b(Ho)n(we)n(v)o(er)m(,)2100 4099 y(a)c(CDT)g(retains)h(man)o(y)g(of)f(the)h(desirable)g(properties)g(of) g(Delaunay)2100 4190 y(triangulations.)42 b(F)o(or)24 b(instance,)j(a)e(tw)o(o-dimensional)h(CDT)e(max-)2100 4282 y(imizes)31 b(the)f(minimum)i(angle)f(in)g(the)f(triangulation,)k (compared)2100 4373 y(with)19 b(all)f(other)h(constrained)h (triangulations)g(of)f Fj(X)25 b Fp([13].)2100 4514 y(CDTs)38 b(generalize)i(to)e(three)h(or)g(more)g(dimensions)h([20)q(],)j(b)o(ut) 2100 4605 y(whereas)25 b(e)n(v)o(ery)g(PSLG)d(has)j(a)f(CDT)-6 b(,)24 b(not)g(e)n(v)o(ery)h(polyhedron)h(has)2100 4697 y(one.)76 b(One)36 b(of)h(the)f(reasons)h(why)g(three-dimensional)g (bound-)2100 4788 y(ary)i(reco)o(v)o(ery)h(is)e(dif)n(\002cult)h(is)f (that)h(there)g(are)g(polyhedra)h(that)2100 4879 y(cannot)27 b(be)f(tetrahedralized)h(at)f(all)f(without)h(additional)h(v)o (ertices.)2100 4971 y(Sch)6 b(\250)-31 b(onhardt)25 b([18])f(furnishes) g(a)g(three-dimensional)h(e)o(xample)g(de-)2100 5062 y(picted)g(in)g(Figure)f(5)h(\(right\).)41 b(The)25 b(easiest)f(w)o(ay) i(to)e(en)m(vision)i(this)2100 5153 y(polyhedron)35 b(is)e(to)g(be)o (gin)h(with)f(a)g(triangular)g(prism.)66 b(Imagine)2100 5245 y(grasping)32 b(the)f(prism)g(so)g(that)g(one)h(of)f(its)f(tw)o(o) h(triangular)g(f)o(aces)2100 5336 y(cannot)f(mo)o(v)o(e,)j(while)c(the) g(opposite)i(triangular)f(f)o(ace)f(is)h(rotated)p eop %%Page: 4 4 4 3 bop 300 741 a @beginspecial 0 @llx 0 @lly 311 @urx 192 @ury 1440 @rwi @setspecial %%BeginDocument: schoenhardt.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: schoenhardt.fig %%Creator: fig2dev Version 3.1 Patchlevel 2 %%CreationDate: Sat May 10 15:12:28 1997 %%For: jrs@t3d (Jonathan R Shewchuk) %Magnification: 1.00 %%Orientation: Portrait %%BoundingBox: 0 0 311 192 %%Pages: 0 %%BeginSetup %%IncludeFeature: *PageSize Letter %%EndSetup %%EndComments /$F2psDict 200 dict def F2psDictbeginF2psDict begin F2psDictbeginF2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save -195.0 290.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def %%EndProlog F2psBegin10setmiterlimitn0792m00l6120l612792lcpclip0.060000.06000sc60.000slwF2psBegin 10 setmiterlimit n 0 792 m 0 0 l 612 0 l 612 792 l cp clip 0.06000 0.06000 sc 60.000 slw % Ellipse n 4200 2025 900 300 0 360 DrawEllipse gs col0 s gr 1 slj 15.000 slw % Polyline n 6600 3900 m 7350 4800 l gs col0 s gr % Polyline n 7350 4800 m 8400 4200 l gs col0 s gr % Polyline n 8250 2550 m 6525 2550 l gs col0 s gr % Polyline n 6525 2550 m 7500 3300 l gs col0 s gr % Polyline n 7500 3300 m 8250 2550 l gs col0 s gr % Polyline n 6525 2550 m 6600 3900 l gs col0 s gr % Polyline n 7500 3300 m 7350 4800 l gs col0 s gr % Polyline n 8250 2550 m 8400 4200 l gs col0 s gr 7.500 slw % Polyline n 7500 3300 m 6600 3900 l gs col0 s gr % Polyline n 8250 2550 m 7350 4800 l gs col0 s gr % Polyline [66.7] 0 sd n 6525 2550 m 8400 4200 l gs col0 s gr [] 0 sd 15.000 slw % Polyline n 3300 3900 m 4050 4800 l gs col0 s gr % Polyline n 4050 4800 m 5100 4200 l gs col0 s gr % Polyline n 5100 2700 m 3300 2400 l gs col0 s gr % Polyline n 3300 2400 m 4050 3300 l gs col0 s gr % Polyline n 4050 3300 m 5100 2700 l gs col0 s gr % Polyline n 3300 2400 m 3300 3900 l gs col0 s gr % Polyline n 4050 3300 m 4050 4800 l gs col0 s gr % Polyline n 5100 2700 m 5100 4200 l gs col0 s gr 0.000 slw % Polyline n 3750 1650 m 3825 1875 l 4575 1875 l 4650 1650 l cp gs col7 1.00 shd ef gr % Polyline n 4800 1725 m 4725 1875 l 4425 1725 l cp gs col7 0.00 shd ef gr 15.000 slw % Polyline [100.0] 0 sd n 5100 4200 m 3300 3900 l gs col0 s gr [] 0 sd % Polyline [100.0] 0 sd n 8400 4200 m 6600 3900 l gs col0 s gr [] 0 sd 0.000 slw % Polyline n 5700 3675 m 5700 3825 l 5850 3825 l 5850 3900 l 6000 3750 l 5850 3600 l 5850 3675 l cp gs col7 0.00 shd ef gr F2psBegin10setmiterlimitn0792m00l6120l612792lcpclip0.060000.06000sc60.000slwF2psEnd rs %%EndDocument @endspecial 0 906 a Fl(Figure)41 b(5:)68 b Fk(Sch)543 905 y(\250)535 906 y(onhardt')l(s)39 b(untetr)o(ahedr)o(alizab)o(le)d (polyhe-)0 988 y(dron)30 b(\(r)q(ight\))g(is)i(f)n(or)r(med)e(b)o(y)h (rotating)e(one)h(end)g(of)h(a)h(tr)q(ian-)0 1070 y(gular)17 b(pr)q(ism)i(\(left\),)e(thereb)o(y)g(creating)g(three)g(diagonal)f (re\003e)n(x)0 1153 y(edges)o(.)21 1733 y @beginspecial 0 @llx 0 @lly 424 @urx 226 @ury 1044 @rwi @setspecial %%BeginDocument: plc2.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: plc2.eps %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Sat May 4 13:02:37 2002 %%For: jrs@complex.eecs.berkeley.edu (Jonathan Shewchuk) %%BoundingBox: 0 0 424 226 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def F2psDictbeginF2psDict begin F2psDictbeginF2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 226 moveto 0 0 lineto 424 0 lineto 424 226 lineto closepath clip newpath -13.0 419.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def F2psBeginF2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % 7.500 slw % Ellipse n 525 4500 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 525 4800 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 975 4650 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 975 4350 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3900 4500 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6300 4500 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6300 5100 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6150 5550 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6000 6000 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5025 5550 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5175 5250 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5475 5250 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 5850 6300 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6300 6000 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6600 6000 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 6900 6000 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2100 5700 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2700 6000 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3600 5700 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 750 5400 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 750 5850 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 750 5625 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3150 6225 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 3450 6375 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2925 6300 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 4800 5400 75 75 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr 0.000 slw % Ellipse n 300 3900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 300 6300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1500 6900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1725 5400 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1725 5100 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2175 4950 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2175 5250 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2400 4200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2100 3300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1500 4500 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3000 4500 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2700 3600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3600 3300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4800 4800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3900 5100 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3900 5700 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4800 6300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3000 6900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2400 6600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6000 5100 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 5700 4200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6000 3600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7200 3600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6900 4200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6750 4800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6450 5400 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7200 6000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7050 5550 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6750 6150 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6900 6600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 5700 6600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 5850 6150 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 5025 4950 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 5175 4650 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 5475 4650 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6000 6600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6300 6600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6600 6600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7050 6300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6450 3900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1950 6450 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1950 6000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1950 6225 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3150 3825 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3450 3975 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4800 4200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4125 4125 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4350 3675 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1725 4050 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1425 3900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2925 3900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6000 5700 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Polyline 2 slj 30.000 slw n 300 3900 m 2100 3300 l gs col0 s gr % Polyline n 2100 3300 m 2700 3600 l gs col0 s gr % Polyline n 4350 3675 m 3600 3300 l gs col0 s gr % Polyline n 3600 3300 m 2700 3600 l gs col0 s gr % Polyline n 300 3900 m 300 6300 l gs col0 s gr % Polyline n 1500 6900 m 1500 4500 l gs col0 s gr % Polyline n 2400 4200 m 2400 6600 l gs col0 s gr % Polyline n 3000 4500 m 3000 6900 l gs col0 s gr % Polyline n 3900 5700 m 3900 5100 l gs col0 s gr % Polyline n 3900 5100 m 4800 4800 l gs col0 s gr % Polyline n 4800 4800 m 4800 4200 l gs col0 s gr % Polyline n 3900 5100 m 6000 5100 l gs col0 s gr % Polyline n 3900 5700 m 6000 5700 l gs col0 s gr % Polyline n 6000 5700 m 5700 6600 l gs col0 s gr % Polyline n 5700 6600 m 6900 6600 l gs col0 s gr % Polyline n 6900 6600 m 6450 5400 l gs col0 s gr % Polyline n 6450 5400 m 6900 4200 l gs col0 s gr % Polyline n 6900 4200 m 5700 4200 l gs col0 s gr % Polyline n 5700 4200 m 6000 5100 l gs col0 s gr % Polyline n 5700 4200 m 6000 3600 l gs col0 s gr % Polyline n 6000 3600 m 7200 3600 l gs col0 s gr % Polyline n 7200 3600 m 6900 4200 l gs col0 s gr % Polyline n 6450 5400 m 6750 4800 l gs col0 s gr % Polyline n 6750 4800 m 7200 3600 l gs col0 s gr % Polyline n 6750 4800 m 7200 6000 l gs col0 s gr % Polyline n 7200 6000 m 6900 6600 l gs col0 s gr % Polyline n 4800 5700 m 4800 6300 l gs col0 s gr % Polyline 15.000 slw [90] 0 sd n 1725 5100 m 525 4500 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 2175 4950 m 975 4350 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 1725 5400 m 525 4800 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 525 4500 m 525 4800 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 525 4500 m 975 4350 l gs col0 s gr [] 0 sd % Polyline 30.000 slw n 2175 5250 m 1803 5064 l gs col0 s gr % Polyline n 4800 4500 m 5807 4500 l gs col0 s gr % Polyline n 5025 4950 m 5175 4650 l gs col0 s gr % Polyline n 5175 4650 m 5475 4650 l gs col0 s gr % Polyline n 5475 4650 m 5025 4950 l gs col0 s gr % Polyline n 5175 4650 m 5175 4875 l gs col0 s gr % Polyline 15.000 slw [90] 0 sd n 5025 4950 m 5025 5550 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 5025 5550 m 5475 5250 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 5475 5250 m 5475 4650 l gs col0 s gr [] 0 sd % Polyline 30.000 slw n 5850 6150 m 6750 6150 l gs col0 s gr % Polyline n 6750 6150 m 7050 5550 l gs col0 s gr % Polyline 15.000 slw [90] 0 sd n 6150 5550 m 7050 5550 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 6150 5550 m 5850 6150 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 6000 5700 m 6300 5100 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 6000 5100 m 6300 4500 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 6300 4500 m 5802 4500 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 6300 5100 m 6000 5100 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 6000 3600 m 6300 4500 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 6150 5550 m 6300 5100 l gs col0 s gr [] 0 sd % Polyline 7.500 slw [60] 0 sd n 975 4650 m 525 4800 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 975 4650 m 975 4350 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 975 4650 m 2175 5250 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 6000 6000 m 6150 5550 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 6000 6000 m 6825 6000 l gs col0 s gr [] 0 sd % Polyline 15.000 slw [90] 0 sd n 7200 6000 m 6825 6000 l gs col0 s gr [] 0 sd % Polyline 7.500 slw [60] 0 sd n 6000 6000 m 5925 6150 l gs col0 s gr [] 0 sd % Polyline 15.000 slw [90] 0 sd n 5700 6600 m 5925 6150 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 3900 4500 m 4800 4500 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 3900 4500 m 4800 4800 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 3900 5700 m 4800 5400 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 4800 5400 m 4800 5700 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 4800 5400 m 3900 5100 l gs col0 s gr [] 0 sd % Polyline 7.500 slw [60] 0 sd n 5175 5250 m 5025 5550 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 5175 5250 m 5175 4875 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 5175 5250 m 5475 5250 l gs col0 s gr [] 0 sd % Polyline 15.000 slw [90] 0 sd n 4800 6300 m 3600 5700 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 2700 6000 m 2100 5700 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 3600 3300 m 3600 5700 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 2700 3600 m 2700 6000 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 2100 3300 m 2100 4909 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 2100 5700 m 2100 5289 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 1950 6450 m 750 5850 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 1950 6000 m 750 5400 l gs col0 s gr [] 0 sd % Polyline 30.000 slw n 1500 6900 m 300 6300 l gs col0 s gr % Polyline n 1500 6900 m 2400 6600 l gs col0 s gr % Polyline n 2400 6600 m 3000 6900 l gs col0 s gr % Polyline n 3000 6900 m 4800 6300 l gs col0 s gr % Polyline n 1500 4500 m 300 3900 l gs col0 s gr % Polyline n 1500 4500 m 2400 4200 l gs col0 s gr % Polyline n 2400 4200 m 3000 4500 l gs col0 s gr % Polyline n 3000 4500 m 4125 4125 l gs col0 s gr % Polyline 15.000 slw [90] 0 sd n 3450 3975 m 3450 6375 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 3150 3825 m 3150 6225 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 3150 6225 m 3450 6375 l gs col0 s gr [] 0 sd % Polyline 30.000 slw n 3150 3825 m 3450 3975 l gs col0 s gr % Polyline n 1725 5100 m 2175 4950 l gs col0 s gr % Polyline n 1725 5100 m 1725 5400 l gs col0 s gr % Polyline n 1725 5400 m 2175 5250 l gs col0 s gr % Polyline n 2175 5250 m 2175 4950 l gs col0 s gr % Polyline n 4350 3675 m 4125 4125 l gs col0 s gr % Polyline n 4125 4125 m 4800 4200 l gs col0 s gr % Polyline n 4800 4200 m 4350 3675 l gs col0 s gr % Polyline 15.000 slw [90] 0 sd n 3900 4500 m 3900 5100 l gs col0 s gr [] 0 sd % Polyline 30.000 slw n 1425 3900 m 1725 4050 l gs col0 s gr % Polyline 15.000 slw [90] 0 sd n 2925 3900 m 2925 6300 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 3150 6225 m 2925 6300 l gs col0 s gr [] 0 sd % Polyline 30.000 slw n 3150 3825 m 2925 3900 l gs col0 s gr % Polyline 15.000 slw [90] 0 sd n 2925 5925 m 2700 6000 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 3450 5749 m 3600 5700 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 1020 6061 m 300 6300 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 1729 5825 m 2100 5700 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 1575 5878 m 1200 6000 l gs col0 s gr [] 0 sd F2psBeginF2psEnd rs %%EndDocument @endspecial 888 w @beginspecial 0 @llx 0 @lly 424 @urx 226 @ury 1044 @rwi @setspecial %%BeginDocument: plc2cdt.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: plc2cdt.eps %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Sat May 4 13:03:06 2002 %%For: jrs@complex.eecs.berkeley.edu (Jonathan Shewchuk) %%BoundingBox: 0 0 424 226 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def F2psDictbeginF2psDict begin F2psDictbeginF2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 226 moveto 0 0 lineto 424 0 lineto 424 226 lineto closepath clip newpath -94.0 545.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def F2psBeginF2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Ellipse n 1650 6000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1650 8400 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2850 9000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3075 7500 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3525 7350 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3750 6300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3450 5400 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2850 6600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4350 6600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4050 5700 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4950 5400 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6150 6900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 5250 7200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 5250 7800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6150 8400 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4350 9000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3750 8700 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7350 7200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7050 6300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7350 5700 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 8550 5700 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 8250 6300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 8100 6900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7800 7500 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 8550 8100 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 8400 7650 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 8100 8250 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 8250 8700 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7050 8700 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7200 8250 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6375 7050 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6825 6750 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7350 8700 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7650 8700 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7950 8700 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 8400 8400 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3300 8550 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3300 8100 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4800 6075 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6150 6300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 5475 6225 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 5700 5775 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3075 6150 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4275 6000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2775 6000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7350 7800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4500 5925 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3075 7200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3525 7050 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3300 8325 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6525 6750 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7800 6000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Polyline 2 slj 30.000 slw n 1650 6000 m 3450 5400 l gs col0 s gr % Polyline n 3450 5400 m 4050 5700 l gs col0 s gr % Polyline n 5700 5775 m 4950 5400 l gs col0 s gr % Polyline n 4950 5400 m 4050 5700 l gs col0 s gr % Polyline n 1650 6000 m 1650 8400 l gs col0 s gr % Polyline n 2850 9000 m 2850 6600 l gs col0 s gr % Polyline n 3750 6300 m 3750 8700 l gs col0 s gr % Polyline n 4350 6600 m 4350 9000 l gs col0 s gr % Polyline n 5250 7800 m 5250 7200 l gs col0 s gr % Polyline n 5250 7200 m 6150 6900 l gs col0 s gr % Polyline n 6150 6900 m 6150 6300 l gs col0 s gr % Polyline n 5250 7200 m 7350 7200 l gs col0 s gr % Polyline n 5250 7800 m 7350 7800 l gs col0 s gr % Polyline n 7350 7800 m 7050 8700 l gs col0 s gr % Polyline n 7050 8700 m 8250 8700 l gs col0 s gr % Polyline n 8250 8700 m 7800 7500 l gs col0 s gr % Polyline n 7800 7500 m 8250 6300 l gs col0 s gr % Polyline n 8250 6300 m 7050 6300 l gs col0 s gr % Polyline n 7050 6300 m 7350 7200 l gs col0 s gr % Polyline n 7050 6300 m 7350 5700 l gs col0 s gr % Polyline n 7350 5700 m 8550 5700 l gs col0 s gr % Polyline n 8550 5700 m 8250 6300 l gs col0 s gr % Polyline n 7800 7500 m 8100 6900 l gs col0 s gr % Polyline n 8100 6900 m 8550 5700 l gs col0 s gr % Polyline n 8100 6900 m 8550 8100 l gs col0 s gr % Polyline n 8550 8100 m 8250 8700 l gs col0 s gr % Polyline n 6150 7800 m 6150 8400 l gs col0 s gr % Polyline n 3525 7350 m 3153 7164 l gs col0 s gr % Polyline n 6150 6600 m 7157 6600 l gs col0 s gr % Polyline n 6375 7050 m 6525 6750 l gs col0 s gr % Polyline n 6525 6750 m 6825 6750 l gs col0 s gr % Polyline n 6825 6750 m 6375 7050 l gs col0 s gr % Polyline n 6525 6750 m 6525 6975 l gs col0 s gr % Polyline n 7200 8250 m 8100 8250 l gs col0 s gr % Polyline n 8100 8250 m 8400 7650 l gs col0 s gr % Polyline n 2850 9000 m 1650 8400 l gs col0 s gr % Polyline n 2850 9000 m 3750 8700 l gs col0 s gr % Polyline n 3750 8700 m 4350 9000 l gs col0 s gr % Polyline n 4350 9000 m 6150 8400 l gs col0 s gr % Polyline n 2850 6600 m 1650 6000 l gs col0 s gr % Polyline n 2850 6600 m 3750 6300 l gs col0 s gr % Polyline n 3750 6300 m 4350 6600 l gs col0 s gr % Polyline n 4350 6600 m 5475 6225 l gs col0 s gr % Polyline n 4500 5925 m 4800 6075 l gs col0 s gr % Polyline n 3075 7200 m 3525 7050 l gs col0 s gr % Polyline n 3075 7200 m 3075 7500 l gs col0 s gr % Polyline n 3075 7500 m 3525 7350 l gs col0 s gr % Polyline n 3525 7350 m 3525 7050 l gs col0 s gr % Polyline n 5700 5775 m 5475 6225 l gs col0 s gr % Polyline n 5475 6225 m 6150 6300 l gs col0 s gr % Polyline n 6150 6300 m 5700 5775 l gs col0 s gr % Polyline n 4500 5925 m 4275 6000 l gs col0 s gr % Polyline n 2775 6000 m 3075 6150 l gs col0 s gr % Polyline 7.500 slw n 3525 7350 m 3238 7144 l gs col0 s gr % Polyline n 8250 6300 m 8100 6900 l gs col0 s gr % Polyline n 8100 6900 m 8250 6300 l gs col0 s gr % Polyline n 3525 7350 m 3103 7214 l gs col0 s gr % Polyline n 7800 6000 m 7050 6300 l gs col0 s gr % Polyline n 7350 5700 m 7800 6000 l gs col0 s gr % Polyline n 7800 6000 m 8550 5700 l gs col0 s gr % Polyline n 7800 6000 m 8250 6300 l gs col0 s gr % Polyline n 7350 7200 m 8250 6300 l gs col0 s gr % Polyline n 7350 7200 m 7800 7500 l gs col0 s gr % Polyline n 7800 7500 m 7350 7800 l gs col0 s gr % Polyline n 7350 7800 m 8100 8250 l gs col0 s gr % Polyline n 8100 8250 m 7950 8700 l gs col0 s gr % Polyline n 8100 8250 m 7650 8700 l gs col0 s gr % Polyline n 7650 8700 m 7200 8250 l gs col0 s gr % Polyline n 7200 8250 m 7350 8700 l gs col0 s gr % Polyline n 8100 8250 m 8400 8400 l gs col0 s gr % Polyline n 8400 8400 m 8400 7650 l gs col0 s gr % Polyline n 8400 7650 m 7800 7500 l gs col0 s gr % Polyline n 7350 7200 m 7350 7800 l gs col0 s gr % Polyline n 7350 7200 m 5250 7800 l gs col0 s gr % Polyline n 5250 7800 m 6150 8400 l gs col0 s gr % Polyline n 5250 7800 m 4350 9000 l gs col0 s gr % Polyline n 3750 6300 m 3525 7350 l gs col0 s gr % Polyline n 3525 7050 m 2850 6600 l gs col0 s gr % Polyline n 2850 6600 m 3075 7200 l gs col0 s gr % Polyline n 3525 7050 m 3750 6300 l gs col0 s gr % Polyline n 4350 6600 m 5250 7200 l gs col0 s gr % Polyline n 5250 7800 m 4350 6600 l gs col0 s gr % Polyline n 3750 6300 m 4350 9000 l gs col0 s gr % Polyline n 3300 8550 m 2850 9000 l gs col0 s gr % Polyline n 3300 8550 m 3750 8700 l gs col0 s gr % Polyline n 3300 8550 m 3300 8325 l gs col0 s gr % Polyline n 3300 8325 m 3300 8100 l gs col0 s gr % Polyline n 3300 8100 m 3525 7350 l gs col0 s gr % Polyline n 3075 7500 m 3300 8100 l gs col0 s gr % Polyline n 3075 7500 m 2850 6600 l gs col0 s gr % Polyline n 3075 7500 m 2850 9000 l gs col0 s gr % Polyline n 2850 9000 m 3300 8100 l gs col0 s gr % Polyline n 3300 8325 m 2850 9000 l gs col0 s gr % Polyline n 3300 8325 m 3750 8700 l gs col0 s gr % Polyline n 3300 8100 m 3750 8700 l gs col0 s gr % Polyline n 3750 8700 m 3525 7350 l gs col0 s gr % Polyline n 2850 6600 m 1650 8400 l gs col0 s gr % Polyline n 3075 6150 m 2850 6600 l gs col0 s gr % Polyline n 2775 6000 m 1650 6000 l gs col0 s gr % Polyline n 2775 6000 m 2850 6600 l gs col0 s gr % Polyline n 2775 6000 m 3450 5400 l gs col0 s gr % Polyline n 3450 5400 m 3075 6150 l gs col0 s gr % Polyline n 3075 6150 m 3750 6300 l gs col0 s gr % Polyline n 3750 6300 m 4050 5700 l gs col0 s gr % Polyline n 4050 5700 m 3075 6150 l gs col0 s gr % Polyline n 4275 6000 m 3750 6300 l gs col0 s gr % Polyline n 4275 6000 m 4050 5700 l gs col0 s gr % Polyline n 4050 5700 m 4500 5925 l gs col0 s gr % Polyline n 4275 6000 m 4350 6600 l gs col0 s gr % Polyline n 4350 6600 m 4500 5925 l gs col0 s gr % Polyline n 4800 6075 m 4350 6600 l gs col0 s gr % Polyline n 4500 5925 m 4950 5400 l gs col0 s gr % Polyline n 4950 5400 m 4800 6075 l gs col0 s gr % Polyline n 4800 6075 m 5475 6225 l gs col0 s gr % Polyline n 4800 6075 m 5700 5775 l gs col0 s gr % Polyline n 5250 7200 m 5475 6225 l gs col0 s gr % Polyline n 5475 6225 m 6150 6900 l gs col0 s gr % Polyline n 5250 7200 m 6375 7050 l gs col0 s gr % Polyline n 6375 7050 m 6150 6900 l gs col0 s gr % Polyline n 6375 7050 m 7350 7200 l gs col0 s gr % Polyline n 7350 7200 m 6825 6750 l gs col0 s gr % Polyline n 6525 6750 m 6150 6900 l gs col0 s gr % Polyline n 6525 6750 m 6150 6686 l gs col0 s gr % Polyline n 6825 6750 m 7200 6675 l gs col0 s gr % Polyline n 6525 6750 m 7167 6656 l gs col0 s gr F2psBeginF2psEnd rs %%EndDocument @endspecial 0 1898 a Fl(Figure)25 b(6:)38 b Fk(Each)26 b(f)n(acet)g(of)g(a)h(PLC)f(\(left\))f(ma)n(y)i(ha)o(v)n(e)f(holes)o(,) 0 1980 y(slits)o(,)32 b(and)c(inter)q(ior)g(v)n(er)s(tices)o(,)j(which) e(ma)n(y)h(be)f(used)g(to)g(en-)0 2062 y(f)n(orce)g(the)f(presence)h (of)g(speci\002c)h(f)n(aces)f(\(perhaps)f(so)h(that)0 2144 y(boundar)r(y)23 b(conditions)f(ma)n(y)i(be)g(applied\))e(or)i(to) g(suppor)s(t)f(in-)0 2227 y(tersections)16 b(with)h(other)f(f)n(acets)o (.)24 b(The)16 b(r)q(ight)h(illustr)o(ation)d(is)k(the)0 2309 y(constr)o(ained)g(Delauna)n(y)g(tetr)o(ahedr)o(alization)e(of)k (the)f(PLC)n(.)0 2574 y Fp(slightly)h(about)i(its)d(center)i(without)g (mo)o(ving)g(out)g(of)f(its)g(plane.)28 b(As)0 2665 y(a)16 b(result,)f(each)i(of)e(the)h(three)g(square)g(f)o(aces)g(is)f(brok)o (en)i(along)g(a)e(diag-)0 2756 y(onal)22 b Fo(r)m(e\003e)o(x)g(edg)o(e) g Fp(\(an)g(edge)g(at)f(which)h(the)f(polyhedron)j(is)d(locally)0 2848 y(noncon)m(v)o(e)o(x\))i(into)d(tw)o(o)h(triangular)f(f)o(aces.)28 b(After)20 b(this)g(transforma-)0 2939 y(tion,)c(the)g(upper)g(left)f (corner)i(and)f(lo)n(wer)g(right)f(corner)i(of)e(each)i(\(for)o(-)0 3030 y(merly\))j(square)h(f)o(ace)f(are)g(separated)h(by)f(a)g(re\003e) o(x)g(edge)h(and)f(are)g(no)0 3122 y(longer)f(visible)f(to)h(each)g (other)f(within)g(the)h(polyhedron.)25 b(An)o(y)19 b(four)0 3213 y(v)o(ertices)i(of)f(the)h(polyhedron)i(include)f(tw)o(o)e (separated)i(by)f(a)g(re\003e)o(x)0 3304 y(edge;)35 b(thus,)d(an)o(y)e (tetrahedron)h(whose)f(v)o(ertices)f(are)g(v)o(ertices)h(of)0 3396 y(the)d(polyhedron)i(will)d(not)h(lie)f(entirely)h(within)f(the)h (polyhedron.)0 3487 y(Therefore,)k(Sch)6 b(\250)-31 b(onhardt')l(s)29 b(polyhedron)h(cannot)f(be)g(tetrahedral-)0 3578 y(ized)d(without)f(an) h(additional)g(v)o(erte)o(x.)42 b(\(One)26 b(e)o(xtra)f(v)o(erte)o(x)g (in)h(the)0 3670 y(center)19 b(will)f(do.\))0 3811 y(Realistic)h (three-dimensional)h(domains)h(are)e(often)h(more)g(compli-)0 3902 y(cated)c(than)g(polyhedra,)h(so)f(consider)g(a)g(more)g(general)g (input)g(called)0 3994 y(a)i Fo(piece)o(wise)g(linear)h(comple)o(x)f Fp(\(PLC\),)e(follo)n(wing)j(Miller)m(,)e(T)-6 b(almor)m(,)0 4085 y(T)h(eng,)17 b(W)-6 b(alkington,)18 b(and)g(W)-6 b(ang)17 b([15)q(].)1025 4053 y Ff(1)1076 4085 y Fp(A)g(PLC)e Fj(X)24 b Fp(is)16 b(a)h(set)g(of)g(v)o(er)o(-)0 4176 y(tices,)24 b(se)o(gments,)h(and)g Fo(facets)p Fp(,)f(as)g(illustrated) f(in)h(Figure)f(6.)38 b(Each)0 4267 y(f)o(acet)26 b(is)f(a)g(polygon)i (\(roughly)f(speaking\),)i(possibly)f(with)e(holes,)0 4359 y(slits,)c(and)h(isolated)f(v)o(ertices)g(in)g(it.)30 b(As)21 b(the)g(\002gure)g(sho)n(ws,)h(a)g(f)o(acet)0 4450 y(may)g(ha)o(v)o(e)g(an)o(y)f(number)i(of)e(sides)h(and)g(may)g (be)g(noncon)m(v)o(e)o(x.)33 b(Just)0 4541 y(as)21 b(a)g(se)o(gment)h (imposes)f(a)g(one-dimensional)i(constraint)e(on)h(a)f(tri-)0 4633 y(angulation,)36 b(a)c(f)o(acet)g(imposes)h(a)e(tw)o (o-dimensional)j(constraint:)0 4724 y(for)25 b(a)f(tetrahedralization)i Fj(T)35 b Fp(to)25 b(be)g(a)f(CDT)g(of)h Fj(X)6 b Fp(,)26 b(each)g(f)o(acet)f(of)0 4815 y Fj(X)g Fp(must)19 b(be)g(a)g(union)h (of)f(triangular)g(f)o(aces)g(of)g Fj(T)11 b Fp(.)0 4957 y(PLCs)22 b(ha)o(v)o(e)h(restrictions)g(lik)o(e)g(those)g(of)g(an)o(y)h (other)f(type)g(of)g(com-)0 5048 y(ple)o(x.)48 b(If)26 b Fj(X)33 b Fp(contains)28 b(a)f(f)o(acet)h Fj(f)8 b Fp(,)29 b(then)e Fj(X)33 b Fp(must)27 b(contain)h(e)n(v)o(ery)p 0 5101 720 4 v 90 5157 a Ff(1)120 5180 y Fm(Miller)18 b(et)f(al.)g(call)h(it)f(a)f Fe(piece)o(wise)k(linear)d(system)p Fm(,)g(b)o(ut)g(their)h(construc-)0 5251 y(tion)h(is)f(so)g(ob)o (viously)h(a)g(comple)o(x)g(that)g(a)g(change)g(in)g(name)f(seems)g (obliga-)0 5323 y(tory)l(.)2610 727 y @beginspecial 0 @llx 0 @lly 221 @urx 206 @ury 936 @rwi @setspecial %%BeginDocument: visible.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: visible.eps %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Fri Sep 7 08:33:09 2001 %%For: jrs@complex.localdomain (Jonathan Shewchuk) %%BoundingBox: 0 0 221 206 %%Magnification: 1.0000 %%EndComments /MyAppDict 100 dict dup begin def /$F2psDict 200 dict def F2psDictbeginF2psDict begin F2psDictbeginF2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 206 moveto 0 0 lineto 221 0 lineto 221 206 lineto closepath clip newpath -89.0 392.0 translate 1 -1 scale % This junk string is used by the show operators /PATsstr 1 string def /PATawidthshow { % cx cy cchar rx ry string % Loop over each character in the string { % cx cy cchar rx ry char % Show the character dup % cx cy cchar rx ry char char PATsstr dup 0 4 -1 roll put % cx cy cchar rx ry char (char) false charpath % cx cy cchar rx ry char /clip load PATdraw % Move past the character (charpath modified the % current point) currentpoint % cx cy cchar rx ry char x y newpath moveto % cx cy cchar rx ry char % Reposition by cx,cy if the character in the string is cchar 3 index eq { % cx cy cchar rx ry 4 index 4 index rmoveto } if % Reposition all characters by rx ry 2 copy rmoveto % cx cy cchar rx ry } forall pop pop pop pop pop % - currentpoint newpath moveto } bind def /PATcg { 7 dict dup begin /lw currentlinewidth def /lc currentlinecap def /lj currentlinejoin def /ml currentmiterlimit def /ds [ currentdash ] def /cc [ currentrgbcolor ] def /cm matrix currentmatrix def end } bind def % PATdraw - calculates the boundaries of the object and % fills it with the current pattern /PATdraw { % proc save exch PATpcalc % proc nw nh px py 5 -1 roll exec % nw nh px py newpath PATfill % - restore } bind def % PATfill - performs the tiling for the shape /PATfill { % nw nh px py PATfill - PATDict /CurrentPattern get dup begin setfont % Set the coordinate system to Pattern Space PatternGState PATsg % Set the color for uncolored pattezns PaintType 2 eq { PATDict /PColor get PATsc } if % Create the string for showing 3 index string % nw nh px py str % Loop for each of the pattern sources 0 1 Multi 1 sub { % nw nh px py str source % Move to the starting location 3 index 3 index % nw nh px py str source px py moveto % nw nh px py str source % For multiple sources, set the appropriate color Multi 1 ne { dup PC exch get PATsc } if % Set the appropriate string for the source 0 1 7 index 1 sub { 2 index exch 2 index put } for pop % Loop over the number of vertical cells 3 index % nw nh px py str nh { % nw nh px py str currentpoint % nw nh px py str cx cy 2 index oldshow % nw nh px py str cx cy YStep add moveto % nw nh px py str } repeat % nw nh px py str } for 5 { pop } repeat end } bind def % PATkshow - kshow with the current pattezn /PATkshow { % proc string exch bind % string proc 1 index 0 get % string proc char % Loop over all but the last character in the string 0 1 4 index length 2 sub { % string proc char idx % Find the n+1th character in the string 3 index exch 1 add get % string proe char char+1 exch 2 copy % strinq proc char+1 char char+1 char % Now show the nth character PATsstr dup 0 4 -1 roll put % string proc chr+1 chr chr+1 (chr) false charpath % string proc char+1 char char+1 /clip load PATdraw % Move past the character (charpath modified the current point) currentpoint newpath moveto % Execute the user proc (should consume char and char+1) mark 3 1 roll % string proc char+1 mark char char+1 4 index exec % string proc char+1 mark... cleartomark % string proc char+1 } for % Now display the last character PATsstr dup 0 4 -1 roll put % string proc (char+1) false charpath % string proc /clip load PATdraw neewath pop pop % - } bind def % PATmp - the makepattern equivalent /PATmp { % patdict patmtx PATmp patinstance exch dup length 7 add % We will add 6 new entries plus 1 FID dict copy % Create a new dictionary begin % Matrix to install when painting the pattern TilingType PATtcalc /PatternGState PATcg def PatternGState /cm 3 -1 roll put % Check for multi pattern sources (Level 1 fast color patterns) currentdict /Multi known not { /Multi 1 def } if % Font dictionary definitions /FontType 3 def % Create a dummy encoding vector /Encoding 256 array def 3 string 0 1 255 { Encoding exch dup 3 index cvs cvn put } for pop /FontMatrix matrix def /FontBBox BBox def /BuildChar { mark 3 1 roll % mark dict char exch begin Multi 1 ne {PaintData exch get}{pop} ifelse % mark [paintdata] PaintType 2 eq Multi 1 ne or { XStep 0 FontBBox aload pop setcachedevice } { XStep 0 setcharwidth } ifelse currentdict % mark [paintdata] dict /PaintProc load % mark [paintdata] dict paintproc end gsave false PATredef exec true PATredef grestore cleartomark % - } bind def currentdict end % newdict /foo exch % /foo newlict definefont % newfont } bind def % PATpcalc - calculates the starting point and width/height % of the tile fill for the shape /PATpcalc { % - PATpcalc nw nh px py PATDict /CurrentPattern get begin gsave % Set up the coordinate system to Pattern Space % and lock down pattern PatternGState /cm get setmatrix BBox aload pop pop pop translate % Determine the bounding box of the shape pathbbox % llx lly urx ury grestore % Determine (nw, nh) the # of cells to paint width and height PatHeight div ceiling % llx lly urx qh 4 1 roll % qh llx lly urx PatWidth div ceiling % qh llx lly qw 4 1 roll % qw qh llx lly PatHeight div floor % qw qh llx ph 4 1 roll % ph qw qh llx PatWidth div floor % ph qw qh pw 4 1 roll % pw ph qw qh 2 index sub cvi abs % pw ph qs qh-ph exch 3 index sub cvi abs exch % pw ph nw=qw-pw nh=qh-ph % Determine the starting point of the pattern fill %(px, py) 4 2 roll % nw nh pw ph PatHeight mul % nw nh pw py exch % nw nh py pw PatWidth mul exch % nw nh px py end } bind def % Save the original routines so that we can use them later on /oldfill /fill load def /oldeofill /eofill load def /oldstroke /stroke load def /oldshow /show load def /oldashow /ashow load def /oldwidthshow /widthshow load def /oldawidthshow /awidthshow load def /oldkshow /kshow load def % These defs are necessary so that subsequent procs don't bind in % the originals /fill { oldfill } bind def /eofill { oldeofill } bind def /stroke { oldstroke } bind def /show { oldshow } bind def /ashow { oldashow } bind def /widthshow { oldwidthshow } bind def /awidthshow { oldawidthshow } bind def /kshow { oldkshow } bind def /PATredef { MyAppDict begin { /fill { /clip load PATdraw newpath } bind def /eofill { /eoclip load PATdraw newpath } bind def /stroke { PATstroke } bind def /show { 0 0 null 0 0 6 -1 roll PATawidthshow } bind def /ashow { 0 0 null 6 3 roll PATawidthshow } bind def /widthshow { 0 0 3 -1 roll PATawidthshow } bind def /awidthshow { PATawidthshow } bind def /kshow { PATkshow } bind def } { /fill { oldfill } bind def /eofill { oldeofill } bind def /stroke { oldstroke } bind def /show { oldshow } bind def /ashow { oldashow } bind def /widthshow { oldwidthshow } bind def /awidthshow { oldawidthshow } bind def /kshow { oldkshow } bind def } ifelse end } bind def false PATredef % Conditionally define setcmykcolor if not available /setcmykcolor where { pop } { /setcmykcolor { 1 sub 4 1 roll 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat setrgbcolor - pop } bind def } ifelse /PATsc { % colorarray aload length % c1 ... cn length dup 1 eq { pop setgray } { 3 eq { setrgbcolor } { setcmykcolor } ifelse } ifelse } bind def /PATsg { % dict begin lw setlinewidth lc setlinecap lj setlinejoin ml setmiterlimit ds aload pop setdash cc aload pop setrgbcolor cm setmatrix end } bind def /PATDict 3 dict def /PATsp { true PATredef PATDict begin /CurrentPattern exch def % If it's an uncolored pattern, save the color CurrentPattern /PaintType get 2 eq { /PColor exch def } if /CColor [ currentrgbcolor ] def end } bind def % PATstroke - stroke with the current pattern /PATstroke { countdictstack save mark { currentpoint strokepath moveto PATpcalc % proc nw nh px py clip newpath PATfill } stopped { (*** PATstroke Warning: Path is too complex, stroking with gray) = cleartomark restore countdictstack exch sub dup 0 gt { { end } repeat } { pop } ifelse gsave 0.5 setgray oldstroke grestore } { pop restore pop } ifelse newpath } bind def /PATtcalc { % modmtx tilingtype PATtcalc tilematrix % Note: tiling types 2 and 3 are not supported gsave exch concat % tilingtype matrix currentmatrix exch % cmtx tilingtype % Tiling type 1 and 3: constant spacing 2 ne { % Distort the pattern so that it occupies % an integral number of device pixels dup 4 get exch dup 5 get exch % tx ty cmtx XStep 0 dtransform round exch round exch % tx ty cmtx dx.x dx.y XStep div exch XStep div exch % tx ty cmtx a b 0 YStep dtransform round exch round exch % tx ty cmtx a b dy.x dy.y YStep div exch YStep div exch % tx ty cmtx a b c d 7 -3 roll astore % { a b c d tx ty } } if grestore } bind def /PATusp { false PATredef PATDict begin CColor PATsc end } bind def % right45 11 dict begin /PaintType 1 def /PatternType 1 def /TilingType 1 def /BBox [0 0 1 1] def /XStep 1 def /YStep 1 def /PatWidth 1 def /PatHeight 1 def /Multi 2 def /PaintData [ { clippath } bind { 32 32 true [ 32 0 0 -32 0 32 ] {<010101010202020204040404080808081010101020202020 404040408080808001010101020202020404040408080808 101010102020202040404040808080800101010102020202 040404040808080810101010202020204040404080808080 010101010202020204040404080808081010101020202020 4040404080808080>} imagemask } bind ] def /PaintProc { pop exec fill } def currentdict end /P5 exch def /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def F2psBeginF2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline 1 slj 15.000 slw n 2700 3900 m 2700 6150 l 3900 5850 l 3900 3600 l 3600 3675 l 3600 4125 l 3000 4275 l 3000 3825 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P5 [16 0 0 -16 180.00 240.00] PATmp PATsp ef gr PATusp gs col0 s gr % Arc 7.500 slw n 3450.0 4950.0 75.0 -90.0 90.0 arcn gs col0 s gr % Ellipse n 2700 6150 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 1800 4950 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 4800 4950 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3900 5850 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3900 3600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3600 3675 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3600 4125 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3000 4275 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3000 3825 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 2700 3900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3300 3300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3300 6450 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Polyline [60] 0 sd n 3300 3300 m 3300 6450 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 3450 4950 m 4800 4950 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 1800 4950 m 2700 4950 l gs col0 s gr [] 0 sd /Times-Italic ff 450.00 scf sf 1500 5025 m gs 1 -1 sc (p) col0 sh gr /Times-Italic ff 450.00 scf sf 4950 5025 m gs 1 -1 sc (q) col0 sh gr /Times-Italic ff 450.00 scf sf 3450 6525 m gs 1 -1 sc (n) col0 sh gr /Times-Italic ff 450.00 scf sf 2850 3300 m gs 1 -1 sc (m) col0 sh gr /Times-Italic ff 450.00 scf sf 4050 4350 m gs 1 -1 sc (f) col0 sh gr F2psBeginF2psEnd rs end %%EndDocument @endspecial 2100 892 a Fl(Figure)32 b(7:)49 b Fk(In)33 b(this)f(e)n(xample)o(,)j(the)d(f)n(acet)g Fj(f)41 b Fk(occludes)32 b(the)2100 974 y(visibility)23 b(betw)o(een)e Fj(p)j Fk(and)f Fj(q)s Fk(.)36 b(Ho)o(w)o(e)n(v)n(er)l(,)24 b Fj(m)g Fk(and)e Fj(n)j Fk(can)f(see)2100 1057 y(each)d(other)l(.)28 b(Their)20 b(vie)o(w)h(is)h(not)f(b)o(loc)o(k)o(ed)e(b)o(y)i Fj(f)8 b Fk(,)23 b(because)d Fj(m)2100 1139 y Fk(and)25 b Fj(n)j Fk(lie)d(in)h(the)g(same)g(plane)f(as)i Fj(f)8 b Fk(;)30 b(nor)c(is)h(it)f(b)o(loc)o(k)o(ed)e(b)o(y)2100 1221 y(an)o(y)19 b(boundar)r(y)f(segment)g(of)h Fj(f)8 b Fk(,)20 b(because)f(segments)f(do)h(not)2100 1303 y(aff)n(ect)g (visibility)-7 b(.)2100 1568 y Fp(se)o(gment)23 b(and)g(v)o(erte)o(x)g (of)g Fj(f)8 b Fp(.)34 b(A)22 b(se)o(gment)h(and)g(a)g(f)o(acet)g(may)g (inter)o(-)2100 1660 y(sect)j(only)h(at)f(a)g(shared)h(v)o(erte)o(x,)g (unless)g(the)f(se)o(gment)h(lies)f(in)g(the)2100 1751 y(boundary)f(of)f(the)f(f)o(acet.)37 b(An)o(y)23 b(tw)o(o)h(f)o(acets)f (of)h(a)f(PLC)f(may)i(inter)o(-)2100 1842 y(sect)c(only)g(at)f(a)h (shared)g(se)o(gment)g(or)g(v)o(erte)o(x,)g(or)f(a)h(union)g(of)g (shared)2100 1934 y(se)o(gments)k(and)g(v)o(ertices.)35 b(\(Because)24 b(f)o(acets)f(are)g(noncon)m(v)o(e)o(x,)k(tw)o(o)2100 2025 y(f)o(acets)19 b(may)h(intersect)e(in)h(se)n(v)o(eral)g(places.\)) 2100 2166 y(The)c Fo(triangulation)h(domain)f Fp(is)g(the)f(re)o(gion)i (of)e(space)i(a)f(user)g(wishes)2100 2257 y(to)26 b(tetrahedralize.)47 b(W)-6 b(e)26 b(could)h(choose)h(the)f(con)m(v)o(e)o(x)h(hull)f(by)g (de-)2100 2349 y(f)o(ault,)34 b(b)o(ut)d(sometimes)h(it)f(pays)h(to)g (be)f(more)h(speci\002c,)j(because)2100 2440 y(there)18 b(are)h(PLCs)e(for)h(which)h(a)f(CDT)g(of)g(the)h(triangulation)g (domain)2100 2531 y(e)o(xists)30 b(b)o(ut)g(a)g(CDT)f(of)h(its)g(con)m (v)o(e)o(x)h(hull)f(does)h(not.)57 b(F)o(or)29 b(e)o(xam-)2100 2623 y(ple,)f(it)e(is)g(easy)h(to)f(tetrahedralize)h(the)f(domain)i (sandwiched)g(be-)2100 2714 y(tween)18 b(Sch)6 b(\250)-31 b(onhardt')l(s)20 b(polyhedron)g(and)f(the)f(boundary)i(of)f(its)e (con-)2100 2805 y(v)o(e)o(x)27 b(hull,)h(e)n(v)o(en)f(though)h(the)e (interior)g(of)h(the)f(polyhedron)j(is)d(not)2100 2897 y(tetrahedralizable.)2100 3038 y(The)j(triangulation)h(domain)h(is)e (required)h(to)f(be)h Fo(facet-bounded)p Fp(,)2100 3129 y(meaning)f(that)f(f)o(acets)g(of)f Fj(X)34 b Fp(entirely)28 b(co)o(v)o(er)g(the)g(boundary)i(that)2100 3220 y(separates)20 b(the)f(triangulation)h(domain)g(from)g(its)e(complement,)j(the)2100 3312 y Fo(e)o(xterior)k(domain)p Fp(.)42 b(The)24 b(e)o(xterior)h (domain)h(includes)g(an)o(y)f(hollo)n(w)2100 3403 y(ca)o(vities)33 b(enclosed)h(by)g(the)f(triangulation)h(domain,)k(as)33 b(well)g(as)2100 3494 y(outer)16 b(space.)23 b(Some)15 b(f)o(acets,)i(kno)n(wn)g(as)e Fo(interior)h(facets)p Fp(,)g(may)h(ha)o(v)o(e)2100 3586 y(the)28 b(triangulation)g(domain)g (on)g(both)g(sides.)49 b(Such)28 b(f)o(acets)g(allo)n(w)2100 3677 y(PLCs)35 b(to)i(represent)g(non-manifold)h(and)f (multiple-component)2100 3768 y(domains\227for)17 b(instance,)h(by)f (serving)g(as)f(interf)o(aces)h(between)h(tw)o(o)2100 3860 y(dif)n(ferent)h(materials.)2100 4001 y(T)-6 b(o)25 b(de\002ne)g(what)g(a)f(CDT)g(is)h(in)g(three)g(dimensions,)i(more)e (de\002ni-)2100 4092 y(tions)d(are)h(needed.)34 b(Say)22 b(that)g(the)g(visibility)g(between)h(tw)o(o)f(points)2100 4183 y Fj(p)j Fp(and)h Fj(q)i Fp(is)d Fo(occluded)i Fp(if)e(there)h(is) f(a)g(constraining)i(f)o(acet)f Fj(f)33 b Fp(of)26 b Fj(X)2100 4275 y Fp(such)e(that)g Fj(p)f Fp(and)h Fj(q)j Fp(lie)c(on)h(opposite)h(sides)f(of)f(the)h(plane)g(that)g(in-)2100 4366 y(cludes)d Fj(f)8 b Fp(,)20 b(and)g(the)g(line)g(se)o(gment)h Fj(pq)h Fp(intersects)e Fj(f)8 b Fp(.)26 b(If)20 b(either)g Fj(p)f Fp(or)2100 4457 y Fj(q)27 b Fp(lies)c(in)h(the)f(plane)i(that)e (includes)i Fj(f)8 b Fp(,)25 b(then)f Fj(f)32 b Fp(does)25 b(not)f(occlude)2100 4549 y(the)h(visibility)f(between)h(them.)40 b(See)24 b(Figure)h(7.)40 b(Se)o(gments)24 b(in)h Fj(X)2100 4640 y Fp(do)19 b(not)f(occlude)i(visibility)-5 b(.)22 b(The)d(points)g Fj(p)e Fp(and)i Fj(q)i Fp(are)e Fo(visible)f Fp(from)2100 4731 y(each)28 b(other)f(\(equi)n(v)n(alently)-5 b(,)31 b(can)c Fo(see)h Fp(each)f(other\))h(if)e(there)i(is)e(no)2100 4823 y(occluding)20 b(f)o(acet)f(of)g Fj(X)6 b Fp(.)2100 4964 y(Let)20 b Fj(s)h Fp(be)h(an)o(y)f(simple)o(x)h(\(tetrahedron,)g (triangle,)f(edge,)i(or)e(v)o(erte)o(x\))2100 5055 y(whose)16 b(v)o(ertices)g(are)f(in)h Fj(X)21 b Fp(\(b)o(ut)15 b Fj(s)g Fp(is)h(not)f(necessarily)i(in)e Fj(X)6 b Fp(\).)22 b(Let)15 b Fj(S)2100 5147 y Fp(be)20 b(a)f(sphere;)i Fj(S)j Fp(is)19 b(a)g Fo(cir)m(cumspher)m(e)j Fp(of)d Fj(s)h Fp(if)f Fj(S)k Fp(passes)d(through)h(all)2100 5238 y(the)16 b(v)o(ertices)h(of)f Fj(s)p Fp(.)21 b(If)16 b Fj(s)g Fp(is)g(a)g(tetrahedron,)h(then)g Fj(s)f Fp(has)g(a)g(unique)i (cir)o(-)2100 5329 y(cumsphere;)23 b(otherwise,)f Fj(s)e Fp(has)h(in\002nitely)g(man)o(y)h(circumspheres.)p eop %%Page: 5 5 5 4 bop 570 809 a @beginspecial 0 @llx 0 @lly 186 @urx 228 @ury 792 @rwi @setspecial %%BeginDocument: cdelaunay3d.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: cdelaunay3d.eps %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Thu Aug 1 04:02:44 2002 %%For: jrs@localhost.localdomain (Jonathan Shewchuk) %%BoundingBox: 0 0 186 228 %%Magnification: 1.0000 %%EndComments /MyAppDict 100 dict dup begin def /$F2psDict 200 dict def F2psDictbeginF2psDict begin F2psDictbeginF2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 228 moveto 0 0 lineto 186 0 lineto 186 228 lineto closepath clip newpath -85.0 379.0 translate 1 -1 scale % This junk string is used by the show operators /PATsstr 1 string def /PATawidthshow { % cx cy cchar rx ry string % Loop over each character in the string { % cx cy cchar rx ry char % Show the character dup % cx cy cchar rx ry char char PATsstr dup 0 4 -1 roll put % cx cy cchar rx ry char (char) false charpath % cx cy cchar rx ry char /clip load PATdraw % Move past the character (charpath modified the % current point) currentpoint % cx cy cchar rx ry char x y newpath moveto % cx cy cchar rx ry char % Reposition by cx,cy if the character in the string is cchar 3 index eq { % cx cy cchar rx ry 4 index 4 index rmoveto } if % Reposition all characters by rx ry 2 copy rmoveto % cx cy cchar rx ry } forall pop pop pop pop pop % - currentpoint newpath moveto } bind def /PATcg { 7 dict dup begin /lw currentlinewidth def /lc currentlinecap def /lj currentlinejoin def /ml currentmiterlimit def /ds [ currentdash ] def /cc [ currentrgbcolor ] def /cm matrix currentmatrix def end } bind def % PATdraw - calculates the boundaries of the object and % fills it with the current pattern /PATdraw { % proc save exch PATpcalc % proc nw nh px py 5 -1 roll exec % nw nh px py newpath PATfill % - restore } bind def % PATfill - performs the tiling for the shape /PATfill { % nw nh px py PATfill - PATDict /CurrentPattern get dup begin setfont % Set the coordinate system to Pattern Space PatternGState PATsg % Set the color for uncolored pattezns PaintType 2 eq { PATDict /PColor get PATsc } if % Create the string for showing 3 index string % nw nh px py str % Loop for each of the pattern sources 0 1 Multi 1 sub { % nw nh px py str source % Move to the starting location 3 index 3 index % nw nh px py str source px py moveto % nw nh px py str source % For multiple sources, set the appropriate color Multi 1 ne { dup PC exch get PATsc } if % Set the appropriate string for the source 0 1 7 index 1 sub { 2 index exch 2 index put } for pop % Loop over the number of vertical cells 3 index % nw nh px py str nh { % nw nh px py str currentpoint % nw nh px py str cx cy 2 index oldshow % nw nh px py str cx cy YStep add moveto % nw nh px py str } repeat % nw nh px py str } for 5 { pop } repeat end } bind def % PATkshow - kshow with the current pattezn /PATkshow { % proc string exch bind % string proc 1 index 0 get % string proc char % Loop over all but the last character in the string 0 1 4 index length 2 sub { % string proc char idx % Find the n+1th character in the string 3 index exch 1 add get % string proe char char+1 exch 2 copy % strinq proc char+1 char char+1 char % Now show the nth character PATsstr dup 0 4 -1 roll put % string proc chr+1 chr chr+1 (chr) false charpath % string proc char+1 char char+1 /clip load PATdraw % Move past the character (charpath modified the current point) currentpoint newpath moveto % Execute the user proc (should consume char and char+1) mark 3 1 roll % string proc char+1 mark char char+1 4 index exec % string proc char+1 mark... cleartomark % string proc char+1 } for % Now display the last character PATsstr dup 0 4 -1 roll put % string proc (char+1) false charpath % string proc /clip load PATdraw neewath pop pop % - } bind def % PATmp - the makepattern equivalent /PATmp { % patdict patmtx PATmp patinstance exch dup length 7 add % We will add 6 new entries plus 1 FID dict copy % Create a new dictionary begin % Matrix to install when painting the pattern TilingType PATtcalc /PatternGState PATcg def PatternGState /cm 3 -1 roll put % Check for multi pattern sources (Level 1 fast color patterns) currentdict /Multi known not { /Multi 1 def } if % Font dictionary definitions /FontType 3 def % Create a dummy encoding vector /Encoding 256 array def 3 string 0 1 255 { Encoding exch dup 3 index cvs cvn put } for pop /FontMatrix matrix def /FontBBox BBox def /BuildChar { mark 3 1 roll % mark dict char exch begin Multi 1 ne {PaintData exch get}{pop} ifelse % mark [paintdata] PaintType 2 eq Multi 1 ne or { XStep 0 FontBBox aload pop setcachedevice } { XStep 0 setcharwidth } ifelse currentdict % mark [paintdata] dict /PaintProc load % mark [paintdata] dict paintproc end gsave false PATredef exec true PATredef grestore cleartomark % - } bind def currentdict end % newdict /foo exch % /foo newlict definefont % newfont } bind def % PATpcalc - calculates the starting point and width/height % of the tile fill for the shape /PATpcalc { % - PATpcalc nw nh px py PATDict /CurrentPattern get begin gsave % Set up the coordinate system to Pattern Space % and lock down pattern PatternGState /cm get setmatrix BBox aload pop pop pop translate % Determine the bounding box of the shape pathbbox % llx lly urx ury grestore % Determine (nw, nh) the # of cells to paint width and height PatHeight div ceiling % llx lly urx qh 4 1 roll % qh llx lly urx PatWidth div ceiling % qh llx lly qw 4 1 roll % qw qh llx lly PatHeight div floor % qw qh llx ph 4 1 roll % ph qw qh llx PatWidth div floor % ph qw qh pw 4 1 roll % pw ph qw qh 2 index sub cvi abs % pw ph qs qh-ph exch 3 index sub cvi abs exch % pw ph nw=qw-pw nh=qh-ph % Determine the starting point of the pattern fill %(px, py) 4 2 roll % nw nh pw ph PatHeight mul % nw nh pw py exch % nw nh py pw PatWidth mul exch % nw nh px py end } bind def % Save the original routines so that we can use them later on /oldfill /fill load def /oldeofill /eofill load def /oldstroke /stroke load def /oldshow /show load def /oldashow /ashow load def /oldwidthshow /widthshow load def /oldawidthshow /awidthshow load def /oldkshow /kshow load def % These defs are necessary so that subsequent procs don't bind in % the originals /fill { oldfill } bind def /eofill { oldeofill } bind def /stroke { oldstroke } bind def /show { oldshow } bind def /ashow { oldashow } bind def /widthshow { oldwidthshow } bind def /awidthshow { oldawidthshow } bind def /kshow { oldkshow } bind def /PATredef { MyAppDict begin { /fill { /clip load PATdraw newpath } bind def /eofill { /eoclip load PATdraw newpath } bind def /stroke { PATstroke } bind def /show { 0 0 null 0 0 6 -1 roll PATawidthshow } bind def /ashow { 0 0 null 6 3 roll PATawidthshow } bind def /widthshow { 0 0 3 -1 roll PATawidthshow } bind def /awidthshow { PATawidthshow } bind def /kshow { PATkshow } bind def } { /fill { oldfill } bind def /eofill { oldeofill } bind def /stroke { oldstroke } bind def /show { oldshow } bind def /ashow { oldashow } bind def /widthshow { oldwidthshow } bind def /awidthshow { oldawidthshow } bind def /kshow { oldkshow } bind def } ifelse end } bind def false PATredef % Conditionally define setcmykcolor if not available /setcmykcolor where { pop } { /setcmykcolor { 1 sub 4 1 roll 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat setrgbcolor - pop } bind def } ifelse /PATsc { % colorarray aload length % c1 ... cn length dup 1 eq { pop setgray } { 3 eq { setrgbcolor } { setcmykcolor } ifelse } ifelse } bind def /PATsg { % dict begin lw setlinewidth lc setlinecap lj setlinejoin ml setmiterlimit ds aload pop setdash cc aload pop setrgbcolor cm setmatrix end } bind def /PATDict 3 dict def /PATsp { true PATredef PATDict begin /CurrentPattern exch def % If it's an uncolored pattern, save the color CurrentPattern /PaintType get 2 eq { /PColor exch def } if /CColor [ currentrgbcolor ] def end } bind def % PATstroke - stroke with the current pattern /PATstroke { countdictstack save mark { currentpoint strokepath moveto PATpcalc % proc nw nh px py clip newpath PATfill } stopped { (*** PATstroke Warning: Path is too complex, stroking with gray) = cleartomark restore countdictstack exch sub dup 0 gt { { end } repeat } { pop } ifelse gsave 0.5 setgray oldstroke grestore } { pop restore pop } ifelse newpath } bind def /PATtcalc { % modmtx tilingtype PATtcalc tilematrix % Note: tiling types 2 and 3 are not supported gsave exch concat % tilingtype matrix currentmatrix exch % cmtx tilingtype % Tiling type 1 and 3: constant spacing 2 ne { % Distort the pattern so that it occupies % an integral number of device pixels dup 4 get exch dup 5 get exch % tx ty cmtx XStep 0 dtransform round exch round exch % tx ty cmtx dx.x dx.y XStep div exch XStep div exch % tx ty cmtx a b 0 YStep dtransform round exch round exch % tx ty cmtx a b dy.x dy.y YStep div exch YStep div exch % tx ty cmtx a b c d 7 -3 roll astore % { a b c d tx ty } } if grestore } bind def /PATusp { false PATredef PATDict begin CColor PATsc end } bind def % vertical lines 11 dict begin /PaintType 1 def /PatternType 1 def /TilingType 1 def /BBox [0 0 1 1] def /XStep 1 def /YStep 1 def /PatWidth 1 def /PatHeight 1 def /Multi 2 def /PaintData [ { clippath } bind { 8 16 true [ 8 0 0 -16 0 16 ] {<11111111111111111111111111111111>} imagemask } bind ] def /PaintProc { pop exec fill } def currentdict end /P10 exch def /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def F2psBeginF2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline 1 slj 15.000 slw n 3000 2775 m 3900 3150 l 3900 5850 l 3000 6225 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P10 [8 0 0 -16 200.00 185.00] PATmp PATsp ef gr PATusp gs col0 s gr 7.500 slw % Ellipse n 3750 5625 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3750 3375 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr 15.000 slw % Ellipse n 3000 4500 1500 1500 0 360 DrawEllipse gs col0 s gr % Polyline 30.000 slw n 1500 4500 m 3000 5250 l gs col0 s gr % Polyline n 1500 4500 m 3000 4500 l gs col0 s gr % Polyline n 1500 4500 m 3000 3750 l gs col0 s gr % Polyline 7.500 slw n 3900 5550 m 3000 5850 l gs col0 s gr % Polyline n 3900 5250 m 3000 5475 l gs col0 s gr % Polyline n 3900 4950 m 3000 5100 l gs col0 s gr % Polyline n 3900 4650 m 3000 4725 l gs col0 s gr % Polyline n 3900 4350 m 3000 4275 l gs col0 s gr % Polyline n 3900 4050 m 3000 3900 l gs col0 s gr % Polyline n 3900 3750 m 3000 3525 l gs col0 s gr % Polyline n 3000 3150 m 3900 3450 l gs col0 s gr % Polyline 15.000 slw n 3000 2775 m 3000 6225 l gs col0 s gr % Polyline [90] 0 sd n 3000 5250 m 3750 5625 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 3750 3375 m 3000 3750 l gs col0 s gr [] 0 sd % Polyline [90] 0 sd n 3000 4500 m 3225 4500 l gs col0 s gr [] 0 sd % Polyline n 3750 3375 m 3225 4500 l 3750 5625 l cp gs col7 1.00 shd ef gr gs col0 s gr /Times-Italic ff 450.00 scf sf 3675 2925 m gs 1 -1 sc (f) col0 sh gr /Times-Italic ff 450.00 scf sf 2625 4350 m gs 1 -1 sc (t) col0 sh gr /Times-Italic ff 450.00 scf sf 4125 4350 m gs 1 -1 sc (v) col0 sh gr 7.500 slw % Ellipse n 3900 3150 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 4200 4500 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3225 4500 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3900 5850 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 1500 4500 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3000 6225 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3000 2775 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr F2psBeginF2psEnd rs end %%EndDocument @endspecial 86 983 a Fl(Figure)19 b(8:)25 b Fk(A)c(constr)o(ained)d (Delauna)n(y)g(tetr)o(ahedron)f Fj(t)p Fk(.)0 1249 y Fp(The)j(simple)o(x)h Fj(s)f Fp(is)g Fo(Delaunay)i Fp(if)e(there)g(is)g (a)h(circumsphere)g Fj(S)k Fp(of)20 b Fj(s)0 1340 y Fp(that)k(encloses) i(no)f(v)o(erte)o(x)g(of)f Fj(X)31 b Fp(\(although)25 b(an)o(y)g(number)h(of)e(v)o(er)o(-)0 1431 y(tices)31 b(is)f(permitted)h(on)h(the)f(sphere)g(itself\).)59 b(The)30 b(simple)o(x)i Fj(s)e Fp(is)0 1523 y Fo(str)m(ongly)18 b(Delaunay)g Fp(if)f(there)h(is)f(a)g(circumsphere)i Fj(S)i Fp(of)d Fj(s)f Fp(such)h(that)0 1614 y(no)k(v)o(erte)o(x)h(of)f Fj(X)28 b Fp(lies)21 b(inside)h Fo(or)g(on)h Fj(S)t Fp(,)f(e)o(xcept)h (the)f(v)o(ertices)g(of)g Fj(s)p Fp(.)0 1705 y(Ev)o(ery)d(v)o(erte)o(x) g(is)g(strongly)g(Delaunay)-5 b(.)0 1846 y(One)50 b(reason)g(for)f(the) g(distinction)h(between)g(Delaunay)g(and)0 1938 y(strongly)15 b(Delaunay)h(simplices)f(is)f(because)i(if)f(a)f(v)o(erte)o(x)h(set)g (has)g(\002)n(v)o(e)0 2029 y(or)i(more)h(v)o(ertices)f(that)g(lie)g(on) h(a)f(common)h(empty)g(sphere,)g(the)f(v)o(er)o(-)0 2120 y(te)o(x)i(set)h(has)f(more)h(than)g(one)g(\(unconstrained\))h (Delaunay)g(tetrahe-)0 2212 y(dralization.)30 b(Ev)o(ery)22 b(Delaunay)g(simple)o(x)g(appears)g(in)f(at)g(least)g(one)0 2303 y(of)c(those)g(tetrahedralizations,)g(b)o(ut)g(a)f(strongly)i (Delaunay)f(simple)o(x)0 2394 y(appears)j(in)f Fo(e)o(very)g Fp(Delaunay)h(tetrahedralization.)0 2536 y(Loosely)f(speaking,)h(the)e (simple)o(x)h Fj(s)f Fo(r)m(espects)h Fj(X)25 b Fp(if)18 b(no)h(se)o(gment)g(is)0 2627 y(cut)i(in)g(tw)o(o)g(by)h Fj(s)p Fp(,)e(and)i Fj(s)e Fp(does)i(not)f(penetrate)h(from)f(one)h (side)f(of)g(a)0 2718 y(f)o(acet)g(to)g(the)g(other)l(.)30 b(F)o(ormally)-5 b(,)21 b Fj(s)g Fp(respects)g Fj(X)27 b Fp(if)21 b Fj(s)f Fp(lies)h(in)g(the)g(tri-)0 2809 y(angulation)d(domain)f Fo(and)h Fp(the)f(intersection)g(of)f Fj(s)h Fp(and)g(an)o(y)g(se)o(gment)0 2901 y(or)i(f)o(acet)g(of)g Fj(X)25 b Fp(is)18 b(a)h(union)h(of)e(f)o(aces)i(of)e Fj(s)p Fp(.)23 b(This)c(union)g(may)h(be)f(the)0 2992 y(empty)i(set,)f Fj(s)f Fp(itself,)h(or)g(the)g(melding)h(of)f(se)n(v)o (eral)h(f)o(aces)f(of)h Fj(s)p Fp(,)e(pos-)0 3083 y(sibly)24 b(of)g(mix)o(ed)g(dimension.)38 b(F)o(or)23 b(e)o(xample,)j(a)d(noncon) m(v)o(e)o(x)k(f)o(acet)0 3175 y(might)19 b(intersect)g(tw)o(o)h(or)f(e) n(v)o(en)h(three)f(edges)h(of)f(a)g(triangle)h(without)0 3266 y(including)g(the)f(triangle')l(s)g(interior)l(.)0 3407 y(The)g(simple)o(x)g Fj(s)g Fp(is)f Fo(constr)o(ained)i(Delaunay)h Fp(if)86 3565 y Fi(\017)42 b Fj(s)18 b Fp(respects)i Fj(X)6 b Fp(,)568 3533 y Ff(2)616 3565 y Fp(and)86 3656 y Fi(\017)42 b Fp(there)18 b(is)f(a)h(circumsphere)h Fj(S)j Fp(of)17 b Fj(s)h Fp(such)g(that)g(no)g(v)o(erte)o(x)g(of)g Fj(X)166 3748 y Fp(inside)e Fj(S)21 b Fp(is)15 b(visible)h(from)h(an)o (y)f(point)h(in)f(the)g(relati)n(v)o(e)g(interior)166 3839 y(of)j Fj(s)p Fp(.)0 3997 y(Figure)j(8)h(depicts)g(a)f (constrained)i(Delaunay)f(tetrahedron)h Fj(t)p Fp(.)33 b(The)0 4088 y(intersection)22 b(of)f Fj(t)g Fp(with)g(the)h(f)o(acet)f Fj(f)30 b Fp(is)21 b(a)g(f)o(ace)h(of)g Fj(t)p Fp(,)f(so)g Fj(t)g Fp(respects)0 4179 y Fj(X)6 b Fp(.)23 b(The)18 b(circumsphere)h(of)f Fj(t)g Fp(encloses)h(one)g(v)o(erte)o(x)f Fj(v)s Fp(,)g(b)o(ut)g Fj(v)j Fp(is)d(not)0 4271 y(visible)23 b(from)g(an)o(y)h(point)g(in)f(the)g(interior)g(of)g Fj(t)g Fp(\(e)n(v)o(en)h(though)g Fj(v)i Fp(is)0 4362 y(visible)19 b(from)g(some)g(points)h(on)f(the)g(boundary)i(of)e Fj(t)p Fp(\).)0 4503 y(A)g(tetrahedralization)h Fj(T)29 b Fp(is)19 b(a)h Fo(constr)o(ained)g(tetr)o(ahedr)o(alization)h Fp(of)0 4594 y Fj(X)k Fp(if)19 b Fj(T)29 b Fp(and)19 b Fj(X)26 b Fp(ha)o(v)o(e)19 b(the)g(same)g(v)o(ertices)g(\(no)h(more,) f(no)g(less\),)g(the)0 4686 y(tetrahedra)25 b(in)g Fj(T)35 b Fp(respect)26 b Fj(X)6 b Fp(,)26 b(and)f(the)g(tetrahedra)h(in)f Fj(T)35 b Fp(entirely)0 4777 y(co)o(v)o(er)23 b(the)g(triangulation)g (domain.)35 b(This)23 b(de\002nition)f(implies)h(that)0 4868 y(each)d(f)o(acet)f(in)f Fj(X)25 b Fp(is)19 b(a)g(union)h(of)f (triangular)g(f)o(aces)g(of)g Fj(T)11 b Fp(.)0 5010 y(A)27 b Fo(constr)o(ained)i(Delaunay)g(tetr)o(ahedr)o(alization)g Fp(of)f Fj(X)33 b Fp(is)28 b(a)f(con-)p 0 5063 720 4 v 90 5118 a Ff(2)120 5142 y Fm(This)19 b(de\002nition)i(of)e (\223constrained)k(Delaunay\224)f(dif)n(fers)f(slightly)g(from)0 5213 y(the)27 b(de\002nition)h(I)e(ha)o(v)o(e)h(used)g(in)f(pre)n (vious)i(publications)i([20,)25 b(23)q(].)48 b(The)0 5284 y(present)18 b(de\002nition)i(is)d(more)g(sound.)2340 696 y @beginspecial 0 @llx 0 @lly 275 @urx 145 @ury 1584 @rwi @setspecial %%BeginDocument: nocdt.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: nocdt.eps %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Thu Aug 23 23:58:13 2001 %%For: jrs@complex.localdomain (Jonathan Shewchuk) %%BoundingBox: 0 0 275 145 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def F2psDictbeginF2psDict begin F2psDictbeginF2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 145 moveto 0 0 lineto 275 0 lineto 275 145 lineto closepath clip newpath -58.0 207.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def F2psBeginF2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Ellipse n 3225 1200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2775 1950 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3600 2025 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3225 3300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Polyline 1 slj 15.000 slw n 3225 3300 m 2775 1950 l gs col0 s gr % Polyline n 3225 1200 m 3225 3300 l gs col0 s gr % Polyline n 3600 2025 m 3225 3300 l gs col0 s gr % Polyline n 3225 1200 m 3600 2025 l gs col0 s gr % Polyline n 2775 1950 m 3225 1200 l gs col0 s gr % Polyline 7.500 slw [60] 0 sd n 2775 1950 m 3600 2025 l gs col0 s gr [] 0 sd % Polyline n 3525 1200 m 3375 2250 l 3525 3300 l 3900 2025 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline n 3000 1200 m 2550 1950 l 3000 3300 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline [60] 0 sd n 3525 1200 m 3525 3300 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 3000 1200 m 3000 3300 l gs col0 s gr 0.000 slw % Ellipse n 5475 2100 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4650 2025 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4950 2325 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 5100 3375 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Polyline 15.000 slw n 5100 3375 m 4650 2025 l gs col0 s gr % Polyline n 4950 2325 m 5100 3375 l gs col0 s gr % Polyline n 5475 2100 m 5100 3375 l gs col0 s gr % Polyline n 4950 2325 m 5475 2100 l gs col0 s gr % Polyline n 4650 2025 m 5475 2100 l gs col0 s gr % Polyline 30.000 slw n 1500 2259 m 1500 3300 l gs col0 s gr % Polyline n 1500 1200 m 1500 2121 l gs col0 s gr % Polyline 7.500 slw n 5100 1125 m 4650 1875 l 4950 2175 l 5475 1950 l cp gs col7 1.00 shd ef gr gs col0 s gr % Polyline 15.000 slw n 3525 1200 m 3375 2250 l gs col0 s gr % Polyline n 3525 1200 m 3900 2025 l gs col0 s gr % Polyline n 3375 2250 m 3900 2025 l gs col0 s gr % Polyline n 3900 2025 m 3525 3300 l gs col0 s gr % Polyline n 3375 2250 m 3525 3300 l gs col0 s gr % Polyline n 3000 1200 m 2850 2250 l gs col0 s gr % Polyline n 2850 2250 m 3000 3300 l gs col0 s gr % Polyline n 3000 3300 m 2550 1950 l gs col0 s gr % Polyline n 2550 1950 m 2850 2250 l gs col0 s gr % Polyline n 2550 1950 m 3000 1200 l gs col0 s gr % Polyline n 5100 1125 m 4950 2175 l gs col0 s gr % Polyline n 5100 1125 m 5475 1950 l gs col0 s gr % Polyline n 4950 2175 m 5475 1950 l gs col0 s gr % Polyline n 4650 1875 m 4950 2175 l gs col0 s gr % Polyline n 4650 1875 m 5100 1125 l gs col0 s gr % Polyline 7.500 slw [60] 0 sd n 4650 1875 m 5475 1950 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 4650 2025 m 4950 2325 l gs col0 s gr % Polyline n 1500 1200 m 1350 2250 l gs col0 s gr % Polyline n 1500 1200 m 1875 2025 l gs col0 s gr % Polyline n 1350 2250 m 1875 2025 l gs col0 s gr % Polyline n 1875 2025 m 1500 3300 l gs col0 s gr % Polyline n 1350 2250 m 1500 3300 l gs col0 s gr % Polyline n 1500 3300 m 1050 1950 l gs col0 s gr % Polyline n 1050 1950 m 1350 2250 l gs col0 s gr % Polyline n 1050 1950 m 1500 1200 l gs col0 s gr % Polyline n 1050 1950 m 1323 1974 l gs col0 s gr % Polyline n 1875 2025 m 1572 1998 l gs col0 s gr % Polyline n 1434 1986 m 1449 1986 l gs col0 s gr 0.000 slw % Ellipse n 3525 1200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3525 3300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3375 2250 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3900 2025 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3000 1200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3000 3300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2550 1950 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2850 2250 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 5100 1125 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4650 1875 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4950 2175 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 5475 1950 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1500 1200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1500 3300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1050 1950 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1350 2250 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1875 2025 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr F2psBeginF2psEnd rs %%EndDocument @endspecial 2100 861 a Fl(Figure)36 b(9:)60 b Fk(Left:)e(A)38 b(PLC)f(with)g(no)g(CDT)-9 b(.)37 b(Center)r(:)58 b(The)2100 943 y(sole)15 b(constr)o(ained)f(tetr)o(ahedr)o(alization)d(of)16 b(this)f(PLC)n(.)g(Its)i(three)2100 1026 y(tetr)o(ahedr)o(a)27 b(are)h(not)g(constr)o(ained)f(Delauna)n(y)-7 b(.)49 b(Right:)41 b(The)2100 1108 y(tw)o(o)15 b(Delauna)n(y)f(tetr)o(ahedr)o (a)f(do)i(not)g(respect)f(the)h(centr)o(al)g(seg-)2100 1190 y(ment.)2100 1440 y Fp(strained)j(tetrahedralization)h(of)f Fj(X)24 b Fp(in)17 b(which)i(each)f(tetrahedron)h(is)2100 1531 y(constrained)h(Delaunay)-5 b(.)2100 1672 y(The)19 b(dif)n(\002culty)f(of)h(incorporating)h(se)o(gments)f(is)f(the)h(main) g(impedi-)2100 1763 y(ment)d(to)f(the)h(e)o(xistence)g(of)g(CDTs.)21 b(Figure)15 b(9)h(of)n(fers)g(an)f(e)o(xample)i(of)2100 1855 y(a)i(PLC)f(with)g(no)i(CDT)-6 b(.)18 b(There)h(is)g(one)h(se)o (gment)f(that)g(runs)h(through)2100 1946 y(the)f(interior)f(of)g(the)h (PLC')l(s)e(con)m(v)o(e)o(x)j(hull.)j(There)18 b(is)g(only)h(one)g (con-)2100 2037 y(strained)25 b(tetrahedralization)f(of)h(this)f (PLC\227composed)g(of)h(three)2100 2129 y(tetrahedra)20 b(bordering)h(the)f(central)f(se)o(gment\227and)i(its)e(tetrahedra)2100 2220 y(are)28 b(not)g(constrained)h(Delaunay)-5 b(,)31 b(because)e(each)g(of)f(them)g(has)g(a)2100 2311 y(v)o(erte)o(x)23 b(inside)h(its)f(circumsphere.)37 b(If)23 b(the)g(central)g(se)o(gment) h(is)f(re-)2100 2403 y(mo)o(v)o(ed,)d(the)e(PLC)g(has)h(a)g(CDT)f(made) i(up)f(of)g(tw)o(o)g(tetrahedra.)2100 2544 y(By)j(con)m(v)o(ention,)i (to)e(say)h(that)f Fj(T)32 b Fo(is)22 b(the)g(CDT)f(of)h Fj(X)29 b Fp(is)21 b(to)h(say)h(that)2100 2635 y Fj(T)35 b Fp(has)25 b(no)h(v)o(ertices)f(other)g(than)g(those)h(in)f Fj(X)6 b Fp(.)41 b(Ho)n(we)n(v)o(er)m(,)27 b(Delau-)2100 2727 y(nay)17 b(mesh)g(generators)h(insert)e(additional)h(v)o(ertices)g (to)g(impro)o(v)o(e)g(the)2100 2818 y(quality)j(of)g(the)g(elements.)26 b(Moreo)o(v)o(er)m(,)21 b(although)g(a)f(gi)n(v)o(en)g(PLC)f Fj(X)2100 2909 y Fp(might)29 b(not)g(ha)o(v)o(e)f(a)h(CDT)-6 b(,)28 b(additional)h(v)o(ertices)g(can)g(be)f(inserted)2100 3001 y(into)18 b Fj(X)24 b Fp(to)17 b(yield)h(a)g(ne)n(w)g(PLC)f Fj(Y)34 b Fp(that)17 b(does)i(ha)o(v)o(e)f(a)f(CDT)g Fj(T)11 b Fp(.)22 b(\(Sec-)2100 3092 y(tion)j(5)g(e)o(xplains)h(ho)n(w) g(to)f(choose)h(the)g(e)o(xtra)f(v)o(ertices.\))41 b Fj(T)36 b Fp(is)25 b(not)2100 3183 y(a)e(CDT)g(of)h Fj(X)6 b Fp(,)24 b(because)h(it)e(has)h(v)o(ertices)f(that)h Fj(X)29 b Fp(lacks,)c(b)o(ut)e Fj(T)34 b Fp(is)2100 3274 y(what)21 b(I)f(call)g(a)h Fo(conforming)h(constr)o(ained)g(Delaunay)g (tetr)o(ahedr)o(al-)2100 3366 y(ization)c Fp(\(CCDT\))e(of)i Fj(X)6 b Fp(:)23 b(\223conforming\224)c(because)g(additional)f(v)o(er)o (-)2100 3457 y(tices)i(are)h(permitted,)f(and)i(\223constrained\224)g (because)f(its)f(tetrahedra)2100 3548 y(\(and)f(f)o(aces)h(and)f (edges\))h(are)f(all)f(constrained)j(Delaunay)-5 b(.)2100 3690 y(One)36 b(adv)n(antage)h(of)e(a)h(CCDT)e(o)o(v)o(er)i(a)f (conforming)i(Delaunay)2100 3781 y(tetrahedralization)21 b(of)g Fj(X)27 b Fp(is)21 b(that)f(the)h(number)h(of)f(additional)g(v)o (er)o(-)2100 3872 y(tices)e(inserted)h(is)f(generally)i(smaller)l(.)j (The)c(remainder)g(of)f(this)h(pa-)2100 3964 y(per)f(describes)h(ho)n (w)f(to)g(construct)h(a)f(CCDT)f(of)g Fj(X)6 b Fp(.)2618 4179 y Fq(3)83 b(Edg)q(e)23 b(Pr)n(otection)2100 4345 y Fp(The)40 b(theorem)g(that)f(mak)o(es)i(three-dimensional)g(CDTs)d (useful)2100 4437 y(states)19 b(that)g(there)h(is)f(a)g(simple)g (condition)i(that)e(guarantees)h(the)g(e)o(x-)2100 4528 y(istence)j(of)g(a)g(CDT)-6 b(.)22 b(A)g(PLC)g Fj(X)29 b Fp(is)22 b Fo(edg)o(e-pr)m(otected)j Fp(if)d(e)n(v)o(ery)i(se)o(g-) 2100 4619 y(ment)19 b(in)g Fj(X)25 b Fp(is)18 b(strongly)i(Delaunay)-5 b(.)2100 4843 y Fn(Theor)o(em)19 b(1)g(\([20]\))42 b Fo(If)35 b Fj(X)42 b Fo(is)35 b(edg)o(e-pr)m(otected,)42 b(then)36 b Fj(X)42 b Fo(has)37 b(a)2100 4934 y(CDT)-6 b(.)1581 b Fd(\004)2100 5157 y Fp(It)32 b(is)g(not)h(suf)n(\002cient)g (for)f(e)n(v)o(ery)i(se)o(gment)f(to)g(be)g(Delaunay)-5 b(.)65 b(If)2100 5249 y(Sch)6 b(\250)-31 b(onhardt')l(s)32 b(polyhedron)i(is)d(speci\002ed)h(so)f(that)h(all)f(six)g(of)g(its)2100 5340 y(v)o(ertices)25 b(lie)f(on)h(a)g(common)h(sphere,)h(then)e(all)g (of)f(its)h(edges)g(\(and)p eop %%Page: 6 6 6 5 bop 420 716 a @beginspecial 0 @llx 0 @lly 244 @urx 182 @ury 1152 @rwi @setspecial %%BeginDocument: grazeable-.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: grazeable-.eps %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Thu Aug 1 03:07:05 2002 %%For: jrs@localhost.localdomain (Jonathan Shewchuk) %%BoundingBox: 0 0 244 182 %%Magnification: 1.0000 %%EndComments /MyAppDict 100 dict dup begin def /$F2psDict 200 dict def F2psDictbeginF2psDict begin F2psDictbeginF2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 182 moveto 0 0 lineto 244 0 lineto 244 182 lineto closepath clip newpath -31.0 262.0 translate 1 -1 scale % This junk string is used by the show operators /PATsstr 1 string def /PATawidthshow { % cx cy cchar rx ry string % Loop over each character in the string { % cx cy cchar rx ry char % Show the character dup % cx cy cchar rx ry char char PATsstr dup 0 4 -1 roll put % cx cy cchar rx ry char (char) false charpath % cx cy cchar rx ry char /clip load PATdraw % Move past the character (charpath modified the % current point) currentpoint % cx cy cchar rx ry char x y newpath moveto % cx cy cchar rx ry char % Reposition by cx,cy if the character in the string is cchar 3 index eq { % cx cy cchar rx ry 4 index 4 index rmoveto } if % Reposition all characters by rx ry 2 copy rmoveto % cx cy cchar rx ry } forall pop pop pop pop pop % - currentpoint newpath moveto } bind def /PATcg { 7 dict dup begin /lw currentlinewidth def /lc currentlinecap def /lj currentlinejoin def /ml currentmiterlimit def /ds [ currentdash ] def /cc [ currentrgbcolor ] def /cm matrix currentmatrix def end } bind def % PATdraw - calculates the boundaries of the object and % fills it with the current pattern /PATdraw { % proc save exch PATpcalc % proc nw nh px py 5 -1 roll exec % nw nh px py newpath PATfill % - restore } bind def % PATfill - performs the tiling for the shape /PATfill { % nw nh px py PATfill - PATDict /CurrentPattern get dup begin setfont % Set the coordinate system to Pattern Space PatternGState PATsg % Set the color for uncolored pattezns PaintType 2 eq { PATDict /PColor get PATsc } if % Create the string for showing 3 index string % nw nh px py str % Loop for each of the pattern sources 0 1 Multi 1 sub { % nw nh px py str source % Move to the starting location 3 index 3 index % nw nh px py str source px py moveto % nw nh px py str source % For multiple sources, set the appropriate color Multi 1 ne { dup PC exch get PATsc } if % Set the appropriate string for the source 0 1 7 index 1 sub { 2 index exch 2 index put } for pop % Loop over the number of vertical cells 3 index % nw nh px py str nh { % nw nh px py str currentpoint % nw nh px py str cx cy 2 index oldshow % nw nh px py str cx cy YStep add moveto % nw nh px py str } repeat % nw nh px py str } for 5 { pop } repeat end } bind def % PATkshow - kshow with the current pattezn /PATkshow { % proc string exch bind % string proc 1 index 0 get % string proc char % Loop over all but the last character in the string 0 1 4 index length 2 sub { % string proc char idx % Find the n+1th character in the string 3 index exch 1 add get % string proe char char+1 exch 2 copy % strinq proc char+1 char char+1 char % Now show the nth character PATsstr dup 0 4 -1 roll put % string proc chr+1 chr chr+1 (chr) false charpath % string proc char+1 char char+1 /clip load PATdraw % Move past the character (charpath modified the current point) currentpoint newpath moveto % Execute the user proc (should consume char and char+1) mark 3 1 roll % string proc char+1 mark char char+1 4 index exec % string proc char+1 mark... cleartomark % string proc char+1 } for % Now display the last character PATsstr dup 0 4 -1 roll put % string proc (char+1) false charpath % string proc /clip load PATdraw neewath pop pop % - } bind def % PATmp - the makepattern equivalent /PATmp { % patdict patmtx PATmp patinstance exch dup length 7 add % We will add 6 new entries plus 1 FID dict copy % Create a new dictionary begin % Matrix to install when painting the pattern TilingType PATtcalc /PatternGState PATcg def PatternGState /cm 3 -1 roll put % Check for multi pattern sources (Level 1 fast color patterns) currentdict /Multi known not { /Multi 1 def } if % Font dictionary definitions /FontType 3 def % Create a dummy encoding vector /Encoding 256 array def 3 string 0 1 255 { Encoding exch dup 3 index cvs cvn put } for pop /FontMatrix matrix def /FontBBox BBox def /BuildChar { mark 3 1 roll % mark dict char exch begin Multi 1 ne {PaintData exch get}{pop} ifelse % mark [paintdata] PaintType 2 eq Multi 1 ne or { XStep 0 FontBBox aload pop setcachedevice } { XStep 0 setcharwidth } ifelse currentdict % mark [paintdata] dict /PaintProc load % mark [paintdata] dict paintproc end gsave false PATredef exec true PATredef grestore cleartomark % - } bind def currentdict end % newdict /foo exch % /foo newlict definefont % newfont } bind def % PATpcalc - calculates the starting point and width/height % of the tile fill for the shape /PATpcalc { % - PATpcalc nw nh px py PATDict /CurrentPattern get begin gsave % Set up the coordinate system to Pattern Space % and lock down pattern PatternGState /cm get setmatrix BBox aload pop pop pop translate % Determine the bounding box of the shape pathbbox % llx lly urx ury grestore % Determine (nw, nh) the # of cells to paint width and height PatHeight div ceiling % llx lly urx qh 4 1 roll % qh llx lly urx PatWidth div ceiling % qh llx lly qw 4 1 roll % qw qh llx lly PatHeight div floor % qw qh llx ph 4 1 roll % ph qw qh llx PatWidth div floor % ph qw qh pw 4 1 roll % pw ph qw qh 2 index sub cvi abs % pw ph qs qh-ph exch 3 index sub cvi abs exch % pw ph nw=qw-pw nh=qh-ph % Determine the starting point of the pattern fill %(px, py) 4 2 roll % nw nh pw ph PatHeight mul % nw nh pw py exch % nw nh py pw PatWidth mul exch % nw nh px py end } bind def % Save the original routines so that we can use them later on /oldfill /fill load def /oldeofill /eofill load def /oldstroke /stroke load def /oldshow /show load def /oldashow /ashow load def /oldwidthshow /widthshow load def /oldawidthshow /awidthshow load def /oldkshow /kshow load def % These defs are necessary so that subsequent procs don't bind in % the originals /fill { oldfill } bind def /eofill { oldeofill } bind def /stroke { oldstroke } bind def /show { oldshow } bind def /ashow { oldashow } bind def /widthshow { oldwidthshow } bind def /awidthshow { oldawidthshow } bind def /kshow { oldkshow } bind def /PATredef { MyAppDict begin { /fill { /clip load PATdraw newpath } bind def /eofill { /eoclip load PATdraw newpath } bind def /stroke { PATstroke } bind def /show { 0 0 null 0 0 6 -1 roll PATawidthshow } bind def /ashow { 0 0 null 6 3 roll PATawidthshow } bind def /widthshow { 0 0 3 -1 roll PATawidthshow } bind def /awidthshow { PATawidthshow } bind def /kshow { PATkshow } bind def } { /fill { oldfill } bind def /eofill { oldeofill } bind def /stroke { oldstroke } bind def /show { oldshow } bind def /ashow { oldashow } bind def /widthshow { oldwidthshow } bind def /awidthshow { oldawidthshow } bind def /kshow { oldkshow } bind def } ifelse end } bind def false PATredef % Conditionally define setcmykcolor if not available /setcmykcolor where { pop } { /setcmykcolor { 1 sub 4 1 roll 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat setrgbcolor - pop } bind def } ifelse /PATsc { % colorarray aload length % c1 ... cn length dup 1 eq { pop setgray } { 3 eq { setrgbcolor } { setcmykcolor } ifelse } ifelse } bind def /PATsg { % dict begin lw setlinewidth lc setlinecap lj setlinejoin ml setmiterlimit ds aload pop setdash cc aload pop setrgbcolor cm setmatrix end } bind def /PATDict 3 dict def /PATsp { true PATredef PATDict begin /CurrentPattern exch def % If it's an uncolored pattern, save the color CurrentPattern /PaintType get 2 eq { /PColor exch def } if /CColor [ currentrgbcolor ] def end } bind def % PATstroke - stroke with the current pattern /PATstroke { countdictstack save mark { currentpoint strokepath moveto PATpcalc % proc nw nh px py clip newpath PATfill } stopped { (*** PATstroke Warning: Path is too complex, stroking with gray) = cleartomark restore countdictstack exch sub dup 0 gt { { end } repeat } { pop } ifelse gsave 0.5 setgray oldstroke grestore } { pop restore pop } ifelse newpath } bind def /PATtcalc { % modmtx tilingtype PATtcalc tilematrix % Note: tiling types 2 and 3 are not supported gsave exch concat % tilingtype matrix currentmatrix exch % cmtx tilingtype % Tiling type 1 and 3: constant spacing 2 ne { % Distort the pattern so that it occupies % an integral number of device pixels dup 4 get exch dup 5 get exch % tx ty cmtx XStep 0 dtransform round exch round exch % tx ty cmtx dx.x dx.y XStep div exch XStep div exch % tx ty cmtx a b 0 YStep dtransform round exch round exch % tx ty cmtx a b dy.x dy.y YStep div exch YStep div exch % tx ty cmtx a b c d 7 -3 roll astore % { a b c d tx ty } } if grestore } bind def /PATusp { false PATredef PATDict begin CColor PATsc end } bind def % right30 11 dict begin /PaintType 1 def /PatternType 1 def /TilingType 1 def /BBox [0 0 1 1] def /XStep 1 def /YStep 1 def /PatWidth 1 def /PatHeight 1 def /Multi 2 def /PaintData [ { clippath } bind { 32 16 true [ 32 0 0 -16 0 16 ] {<00030003000c000c0030003000c000c0030003000c000c00 30003000c000c00000030003000c000c0030003000c000c0 030003000c000c0030003000c000c000>} imagemask } bind ] def /PaintProc { pop exec fill } def currentdict end /P2 exch def % left45 11 dict begin /PaintType 1 def /PatternType 1 def /TilingType 1 def /BBox [0 0 1 1] def /XStep 1 def /YStep 1 def /PatWidth 1 def /PatHeight 1 def /Multi 2 def /PaintData [ { clippath } bind { 32 32 true [ 32 0 0 -32 0 32 ] {<808080804040404020202020101010100808080804040404 020202020101010180808080404040402020202010101010 080808080404040402020202010101018080808040404040 202020201010101008080808040404040202020201010101 808080804040404020202020101010100808080804040404 0202020201010101>} imagemask } bind ] def /PaintProc { pop exec fill } def currentdict end /P4 exch def % right45 11 dict begin /PaintType 1 def /PatternType 1 def /TilingType 1 def /BBox [0 0 1 1] def /XStep 1 def /YStep 1 def /PatWidth 1 def /PatHeight 1 def /Multi 2 def /PaintData [ { clippath } bind { 32 32 true [ 32 0 0 -32 0 32 ] {<010101010202020204040404080808081010101020202020 404040408080808001010101020202020404040408080808 101010102020202040404040808080800101010102020202 040404040808080810101010202020204040404080808080 010101010202020204040404080808081010101020202020 4040404080808080>} imagemask } bind ] def /PaintProc { pop exec fill } def currentdict end /P5 exch def /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def F2psBeginF2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline 1 slj 15.000 slw n 4500 2700 m 3900 2100 l 900 2100 l 1500 2700 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P4 [16 0 0 -16 60.00 140.00] PATmp PATsp ef gr PATusp gs col0 s gr % Polyline n 1500 2700 m 600 3150 l 3600 3150 l 4500 2700 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P2 [16 0 0 -8 40.00 180.00] PATmp PATsp ef gr PATusp gs col0 s gr % Polyline n 1500 2700 m 4500 2700 l 3750 3450 l 750 3450 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P5 [16 0 0 -16 50.00 180.00] PATmp PATsp ef gr PATusp gs col0 s gr 7.500 slw % Ellipse n 2550 2700 47 47 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Rotated Ellipse gs 1500 2700 tr -90.000 rot n 0 0 75 75 0 360 DrawEllipse 90.000 rot gs col7 0.00 shd ef gr gs col0 s gr gr % Rotated Ellipse gs 4500 2700 tr -90.000 rot n 0 0 75 75 0 360 DrawEllipse 90.000 rot gs col7 0.00 shd ef gr gs col0 s gr gr % Rotated Ellipse gs 3900 2100 tr -90.000 rot n 0 0 75 75 0 360 DrawEllipse 90.000 rot gs col7 0.00 shd ef gr gs col0 s gr gr % Rotated Ellipse gs 900 2100 tr -90.000 rot n 0 0 75 75 0 360 DrawEllipse 90.000 rot gs col7 0.00 shd ef gr gs col0 s gr gr % Rotated Ellipse gs 600 3150 tr -90.000 rot n 0 0 75 75 0 360 DrawEllipse 90.000 rot gs col7 0.00 shd ef gr gs col0 s gr gr % Rotated Ellipse gs 750 3450 tr -90.000 rot n 0 0 75 75 0 360 DrawEllipse 90.000 rot gs col7 0.00 shd ef gr gs col0 s gr gr % Rotated Ellipse gs 3750 3450 tr -90.000 rot n 0 0 75 75 0 360 DrawEllipse 90.000 rot gs col7 0.00 shd ef gr gs col0 s gr gr % Polyline 0.000 slw n 1950 1500 m 3300 4200 l 3750 3750 l cp gs col7 0.75 shd ef gr % Polyline 7.500 slw [60] 0 sd n 3300 4200 m 1950 1500 l gs col0 s gr [] 0 sd % Rotated Ellipse gs 3300 4200 tr -90.000 rot n 0 0 75 75 0 360 DrawEllipse 90.000 rot gs col7 0.00 shd ef gr gs col0 s gr gr % Rotated Ellipse gs 1950 1500 tr -90.000 rot n 0 0 75 75 0 360 DrawEllipse 90.000 rot gs col7 0.00 shd ef gr gs col0 s gr gr 0.000 slw % Rotated Ellipse gs 3504 2532 tr -90.000 rot n 0 0 153 153 0 360 DrawEllipse 90.000 rot gs col7 1.00 shd ef gr gr % Polyline 15.000 slw gs clippath 3803 3781 m 3718 3696 l 3514 3900 l 3727 3773 l 3599 3985 l cp eoclip n 3300 4200 m 3750 3750 l gs col0 s gr gr % arrowhead 0 slj n 3599 3985 m 3727 3773 l 3514 3900 l 3599 3985 l cp gs col7 1.00 shd ef gr col0 s % Polyline 1 slj n 2467 2762 m 2350 2802 l gs col0 s gr % Polyline n 2647 2775 m 2737 2817 l gs col0 s gr % Polyline n 2570 2582 m 2550 2475 l gs col0 s gr % Polyline n 2527 2807 m 2505 2917 l 2505 2922 l gs col0 s gr % Polyline n 2653 2680 m 2755 2622 l gs col0 s gr % Polyline n 2450 2627 m 2350 2562 l gs col0 s gr /Times-Italic ff 450.00 scf sf 2925 4275 m gs 1 -1 sc (q) col0 sh gr /Times-Italic ff 450.00 scf sf 1575 1575 m gs 1 -1 sc (p) col0 sh gr /Times-Italic ff 450.00 scf sf 3405 2637 m gs 1 -1 sc (s) col0 sh gr F2psBeginF2psEnd rs end %%EndDocument @endspecial 0 881 a Fl(Figure)25 b(10:)37 b Fk(Example)26 b(of)g(a)h(g)o(r)o(az)o(eab)o(le)d(segment)h Fj(s)p Fk(.)44 b(Note)0 963 y(that)17 b Fj(p)i Fk(cannot)e(see)h Fj(q)s Fk(,)h(b)o(ut)e(if)h Fj(q)k Fk(is)d(per)s(turbed)c(b)o(y)j(an)g (in\002nitesi-)0 1046 y(mal)h(amount,)f(then)h Fj(p)g Fk(and)g Fj(q)k Fk(can)c(see)g(each)g(other)l(.)24 b(There)18 b(is)0 1128 y(a)i(line)f(of)h(sight)g(that)f(g)o(r)o(az)o(es)i Fj(s)p Fk(,)f(hence)f(the)h(ter)r(m)g Fc(g)o(r)o(az)o(eab)o(le)p Fk(.)0 1384 y Fp(its)26 b(f)o(aces)h(as)g(well\))e(are)i(Delaunay)-5 b(,)29 b(b)o(ut)e(it)e(still)h(does)h(not)g(ha)o(v)o(e)g(a)0 1476 y(tetrahedralization.)37 b(It)23 b(is)g(not)h(possible)g(to)f (place)h(the)f(v)o(ertices)h(of)0 1567 y(Sch)6 b(\250)-31 b(onhardt')l(s)23 b(polyhedron)h(so)e(that)g(all)f(three)h(of)g(its)f (re\003e)o(x)h(edges)0 1658 y(are)d(strongly)h(Delaunay)g(\(though)g (an)o(y)f(tw)o(o)g(may)g(be\).)0 1800 y(Although)h(the)f(boundary)h(se) o(gments)g(of)f(a)f(f)o(acet)h(must)g(be)g(strongly)0 1891 y(Delaunay)26 b(for)f(the)g(guarantee)i(to)e(hold,)h(no)g(such)g (restriction)f(ap-)0 1982 y(plies)36 b(to)g(the)g(edges)g(introduced)i (into)e(the)g(f)o(acet)g(by)g(meshing.)0 2073 y(F)o(or)18 b(e)o(xample,)i(consider)g(\002nding)g(a)f(tetrahedralization)g(of)g(a) g(cube.)0 2165 y(Each)k(square)h(f)o(ace)f(must)h(be)f(partitioned)g (by)h(a)f(diagonal)h(edge)g(to)0 2256 y(yield)e(a)f(triangulation.)31 b(The)22 b(diagonals)g(are)g(not)g(strongly)g(Delau-)0 2347 y(nay)-5 b(,)32 b(and)e(if)f(the)o(y)g(were)g(se)o(gments)h(in)f (the)h(PLC,)d(a)j(constrained)0 2439 y(tetrahedralization)25 b(might)g(not)g(e)o(xist)f(\(depending)i(on)f(the)g(choice)0 2530 y(of)c(diagonals\).)31 b(If)21 b(the)g(diagonals)i(are)e(not)g (elements)h(of)f(the)g(PLC,)0 2621 y(the)k(e)o(xistence)g(of)f(a)g(CDT) g(is)g(guaranteed)i(by)f(Theorem)g(1,)h(and)f(a)0 2713 y(CDT)c(construction)h(algorithm)g(can)g(choose)g(a)f(compatible)i(set) e(of)0 2804 y(diagonals.)0 2945 y(Ne)o(xt,)c(a)g(stronger)h(and)g(e)n (v)o(en)g(more)g(useful)f(v)o(ersion)h(of)f(Theorem)h(1.)0 3037 y(A)g(PLC)g(se)o(gment)i(often)f(serv)o(es)g(as)g(a)f(boundary)j (to)e(se)n(v)o(eral)g(f)o(acets,)0 3128 y(which)k(can)g(be)g(ordered)h (as)e(the)o(y)h(appear)h(in)f(rotary)f(order)i(around)0 3219 y(the)33 b(se)o(gment.)64 b(A)32 b(se)o(gment)i(is)e Fo(gr)o(azeable)i Fp(if)e(tw)o(o)g(consecuti)n(v)o(e)0 3311 y(f)o(acets)17 b(in)f(the)h(rotary)f(order)h(are)g(separated)g(by) g(an)g(interior)f(angle)h(of)0 3402 y Fh(180)114 3370 y Fb(\016)173 3402 y Fp(or)23 b(more)g(\(as)f(Figure)g(10)h(sho)n (ws\),)h(or)e(if)g(the)h(se)o(gment)g(is)f(in-)0 3493 y(cluded)e(in)e(fe)n(wer)h(than)g(tw)o(o)f(f)o(acets.)24 b(\(An)18 b Fo(interior)h(angle)g Fp(subtends)0 3584 y(the)25 b(interior)f(of)h(the)g(triangulation)g(domain.)42 b(Exterior)24 b(angles)i(of)0 3676 y Fh(180)114 3644 y Fb(\016)178 3676 y Fp(or)i(more)g(are)f(not)h(an)f(impediment)i(to)e (a)g(CDT)-6 b(.\))27 b(Only)h(the)0 3767 y(grazeable)h(se)o(gments)g (need)f(to)g(be)g(strongly)h(Delaunay)g(to)f(guar)o(-)0 3858 y(antee)e(a)f(CDT)-6 b(.)24 b(A)h(three-dimensional)h(PLC)e Fj(X)32 b Fp(is)24 b Fo(weakly)i(edg)o(e-)0 3950 y(pr)m(otected)21 b Fp(if)e(each)i(grazeable)g(se)o(gment)g(in)f Fj(X)26 b Fp(is)20 b(strongly)h(Delau-)0 4041 y(nay)-5 b(.)24 b(If)18 b Fj(X)25 b Fp(is)19 b(weakly)g(edge-protected,)i(then)e Fj(X)25 b Fp(has)19 b(a)g(CDT)-6 b(.)0 4182 y(Se)o(gments)29 b(that)g(are)f(not)h(grazeable)h(occur)g(commonly)g(in)f(prac-)0 4274 y(tice.)35 b(F)o(or)22 b(instance,)i(in)f(a)g(re)o(gular)g(comple) o(x)h(of)f(cubical)g(cells,)g(no)0 4365 y(se)o(gment)f(is)g(grazeable.) 32 b(The)22 b(stronger)g(result)g(e)o(xcludes)g(the)g(non-)0 4456 y(grazeable)e(se)o(gments)g(from)f(the)g(need)g(to)g(be)g (strongly)h(Delaunay)-5 b(.)0 4597 y(But)27 b(what)f(if)h Fj(X)32 b Fp(is)27 b(not)g(weakly)g(edge-protected,)k(and)c(does)h(not) 0 4689 y(ha)o(v)o(e)18 b(a)g(CDT?)g(An)o(y)g(PLC)f(can)h(be)h(made)g (edge-protected)g(\(weakly)0 4780 y(or)j(fully\))g(by)h(the)f (insertion)h(of)f(additional)h(v)o(ertices)f(that)g(split)g(the)0 4871 y(se)o(gments)e(into)f(smaller)f(se)o(gments,)i(as)f(described)h (in)e(Section)h(5.)361 5083 y Fq(4)83 b(T)-5 b(esting)22 b(Edg)q(e)h(Pr)n(otection)0 5249 y Fp(T)-5 b(esting)28 b(whether)g(a)g(PLC)f Fj(X)34 b Fp(is)28 b(edge-protected)i(is)d (straightfor)o(-)0 5340 y(w)o(ard.)22 b(F)o(orm)16 b(the)g(Delaunay)h (tetrahedralization)f Fj(T)26 b Fp(of)16 b(the)g(v)o(ertices)2100 83 y(of)23 b Fj(X)29 b Fp(using)23 b(an)o(y)h(standard)f(algorithm)h ([1,)e(3)q(,)g(28)q(].)34 b Fj(T)f Fp(co)o(v)o(ers)24 b(the)2100 174 y(entire)f(con)m(v)o(e)o(x)h(hull)f(of)g Fj(X)6 b Fp(.)35 b(If)22 b(a)h(se)o(gment)h Fj(s)e Fp(is)h(missing)g (from)g Fj(T)11 b Fp(,)2100 266 y(then)19 b Fj(s)g Fp(is)f(not)h (strongly)h(Delaunay)-5 b(.)2100 407 y(If)27 b Fj(s)g Fp(is)g(an)g(edge)i(of)e Fj(T)11 b Fp(,)28 b(then)g Fj(s)f Fp(is)g(Delaunay)h(b)o(ut)f(might)h(not)f(be)2100 498 y(strongly)34 b(Delaunay)-5 b(.)69 b(The)33 b(recommended)j(solution)e (is)f(to)g(use)2100 589 y(the)25 b(symbolic)h(perturbation)g(technique) g(discussed)g(in)f(Section)g(9)2100 681 y(while)18 b(constructing)g (the)g(Delaunay)h(tetrahedralization.)k(The)18 b(per)o(-)2100 772 y(turbations)25 b(ensure)g(that)f(e)n(v)o(ery)h(edge)h(\(and)e (triangle)h(and)g(tetrahe-)2100 863 y(dron\))d(that)f(is)g(Delaunay)h (is)f(also)h(strongly)g(Delaunay)-5 b(.)32 b(Then,)21 b(if)g Fj(s)2100 955 y Fp(is)e(an)g(edge)g(of)g Fj(T)11 b Fp(,)18 b Fj(s)h Fp(is)f(strongly)i(Delaunay)-5 b(.)2100 1096 y(If)23 b(the)g(perturbation)h(technique)h(is)e(not)g(used,)i (there)e(is)g(a)g(test)g(that)2100 1187 y(checks)h(whether)f(a)g (Delaunay)h(edge)g Fj(s)e Fp(is)h(strongly)g(Delaunay)h(by)2100 1279 y(e)o(xamining)f(only)g(the)f(tetrahedra)h(of)f Fj(T)33 b Fp(that)22 b(ha)o(v)o(e)g Fj(s)g Fp(for)g(an)g(edge.)2100 1370 y(Details)k(are)h(omitted)g(because)h(the)f(perturbation)g (technique)h(has)2100 1461 y(man)o(y)20 b(adv)n(antages.)2314 1677 y Fq(5)83 b(Pr)n(o)n(v)n(ab)o(l)o(y)25 b(Good)d(Edg)q(e)h(Pr)n (otection)2100 1843 y Fp(Gi)n(v)o(en)29 b(a)g(set)f(of)h(v)o(ertices)g (and)g(se)o(gments)h(in)e(three-dimensional)2100 1934 y(space,)34 b(where)e(should)g(additional)f(v)o(ertices)g(be)g (inserted)g(\(split-)2100 2026 y(ting)18 b(se)o(gments)g(into)g (smaller)g(se)o(gments\))g(to)g(ensure)g(that)g(all)f(of)h(the)2100 2117 y(se)o(gments)i(are)g(strongly)g(Delaunay)-5 b(,)21 b(so)e(that)h(all)f(the)g(se)o(gments)i(are)2100 2208 y(guaranteed)f(to)f(appear)h(in)f(a)g(Delaunay)h(tetrahedralization?) 2100 2350 y(This)k(problem)h(is)f(either)g(easy)h(or)g(dif)n(\002cult,) g(depending)h(on)f(what)2100 2441 y(constraints)g(you)g(set)f(on)g(the) g(ne)n(w)h(v)o(ertices.)39 b(If)23 b(you)i(ask)g(that)f(the)2100 2532 y(number)29 b(of)f(added)h(v)o(ertices)f(be)g(polynomial)h(in)f (the)g(number)h(of)2100 2623 y(input)24 b(v)o(ertices)g(and)g(se)o (gments,)i(the)e(problem)g(is)g(unsolv)o(ed)h(\(e)n(v)o(en)2100 2715 y(though)k(the)f(problem)g(is)f(easier)h(than)g(constructing)g(a)g (conform-)2100 2806 y(ing)21 b(Delaunay)h(tetrahedralization,)g (because)h(there)e(is)f(no)i(need)g(to)2100 2897 y(reco)o(v)o(er)e(f)o (acets\).)26 b(Edelsbrunner)21 b(and)f(T)-6 b(an')l(s)19 b Fi(O)r Fh(\()p Fj(m)3469 2866 y Fg(2)3504 2897 y Fj(n)p Fh(\))p Fp(-v)o(erte)o(x)h(so-)2100 2989 y(lution)f(for)g(the)g(tw)o (o-dimensional)h(case)f([10])g(has)g(not)g(been)h(gener)o(-)2100 3080 y(alized)e(to)g(three)g(dimensions,)h(and)g(e)n(v)o(en)f(it)g(is)f (rather)h(complicated.)2100 3221 y(Ho)n(we)n(v)o(er)m(,)30 b(mesh)e(generation)h(has)f(dif)n(ferent)g(needs.)50 b(The)28 b(PLCs)2100 3313 y(that)42 b(require)h(the)f(most)g (additional)h(v)o(ertices)g(ha)o(v)o(e)f(se)o(gments)2100 3404 y(spaced)36 b(v)o(ery)g(closely)g(together)g(or)f(meeting)h(at)e (small)h(angles.)2100 3495 y(Ho)n(we)n(v)o(er)m(,)29 b(high-quality)g(meshes)e(of)g(such)h(PLCs)e(might)h(need)h(a)2100 3587 y(superpolynomial)e(number)f(of)f(v)o(ertices)h(an)o(yw)o(ay)-5 b(.)40 b(F)o(or)23 b(e)o(xample,)2100 3678 y(tw)o(o)e(parallel)h(se)o (gments)g(that)f(are)g(10,000)h(units)g(long)g(and)g(spaced)2100 3769 y(one)17 b(unit)g(apart)f(will)g(require)h(perhaps)g(20,000)h (tetrahedra)f(to)f(mesh)2100 3861 y(if)i(the)h(tetrahedra)h(are)f (required)g(to)g(ha)o(v)o(e)g(good)h(aspect)g(ratios.)2100 4002 y(A)f(more)h(meaningful)g(goal)g(for)f(pro)o(v)n(ably)i(good)f (boundary)h(reco)o(v-)2100 4093 y(ery)j(is)f(to)h(ensure)g(that)g(no)g (tw)o(o)g(v)o(ertices)f(are)h(spaced)h(much)f(more)2100 4184 y(closely)i(together)g(\(say)-5 b(,)28 b(by)e(a)g(small)f (constant)h(f)o(actor\))g(than)g(nec-)2100 4276 y(essary)32 b(to)f(form)h(a)f(high-quality)i(tetrahedral)e(mesh)h(of)g(the)f(do-) 2100 4367 y(main.)45 b(Pro)o(v)n(ably)26 b(good)i(Delaunay)f (re\002nement)f(algorithms)h(cre-)2100 4458 y(ate)17 b(meshes)h(in)f(which)g(each)h(edge')l(s)g(length)g(is)e(proportional)j (to)e(the)2100 4550 y Fo(local)27 b(featur)m(e)g(size)f Fp(at)g(that)g(edge.)47 b(A)26 b(boundary)i(reco)o(v)o(ery)f(algo-)2100 4641 y(rithm)d(should)h(do)f(the)h(same.)38 b(If)24 b(smaller)g (tetrahedra)g(are)g(needed)2100 4732 y(for)18 b(accurac)o(y)-5 b(,)19 b(the)o(y)f(can)g(easily)g(be)g(re\002ned)g(later;)f(b)o(ut)h (if)f(boundary)2100 4824 y(reco)o(v)o(ery)23 b(creates)f(too-small)g (tetrahedra,)g(it)f(might)h(not)g(be)g(possi-)2100 4915 y(ble)d(to)g(\002x)f(them.)2100 5056 y(F)o(or)h(a)h(\002x)o(ed)g(PLC)e Fj(X)6 b Fp(,)20 b(the)g(local)g(feature)g(size)f Fh(lfs)q(\()p Fj(p)p Fh(\))g Fp(of)h(an)o(y)g(point)2100 5147 y Fj(p)e Fp(in)h(space)h(is)f(the)g(radius)h(of)f(the)g(smallest)g(ball)g (centered)h(at)e Fj(p)h Fp(that)2100 5239 y(intersects)f(tw)o(o)f(se)o (gments)h(or)g(v)o(ertices)g(in)f Fj(X)24 b Fp(that)17 b(do)h(not)g(intersect)2100 5330 y(each)i(other)l(.)25 b(Delaunay)c(re\002nement)f(algorithms)f(typically)h(bound)p eop %%Page: 7 7 7 6 bop 0 83 a Fp(the)17 b(sizes)g(of)g(the)f(elements)i(the)o(y)f (create)g(in)g(terms)f(of)h(this)g(or)f(a)h(sim-)0 174 y(ilar)g(de\002nition)g(of)g Fh(lfs)i Fp([17,)e(21)q(].)22 b Fh(lfs)c Fp(is)f(a)g(continuous)i(function)f(that)0 266 y(is)h(positi)n(v)o(e)g(e)n(v)o(erywhere)i(and)f(suggests)g(a)f (rough)h(upper)h(bound)f(on)0 357 y(ho)n(w)k(lar)o(ge)e(high-quality)i (elements)g(can)f(be.)36 b(It)22 b(can)i(v)n(ary)g(widely)0 448 y(o)o(v)o(er)g(the)g(domain,)i(re\003ecting)d(the)h(impact)g(of)g (domain)h(geometry)0 540 y(on)f(element)f(size.)36 b(The)23 b(function)h Fh(lfs)h Fp(is)d(de\002ned)i(in)f(terms)g(of)h(the)0 631 y(input)19 b(PLC)f(and)i(does)f(not)g(change)i(as)e(ne)n(w)g(v)o (ertices)g(are)g(inserted.)0 772 y(Observ)o(e)e(that)f(this)f (de\002nition)i(of)f(local)g(feature)g(size)g(does)h(not)f(tak)o(e)0 863 y(f)o(acets)g(into)f(account.)23 b(This)15 b(is)g(good;)j(it)d (means)h(that)f(f)o(acets)h(ha)o(v)o(e)f(no)0 955 y(ef)n(fect)24 b(on)g(the)g(edge)h(lengths)f(in)g(the)g(\002nal)f(triangulation)i (\(though)0 1046 y(the)20 b(se)o(gments)h(that)f(bound)i(each)f(f)o (acet)f(do\).)27 b(Perhaps)20 b(later)m(,)g(small)0 1137 y(distances)h(between)h(f)o(acets)e(and)i(v)o(ertices)e(may)h(force)g (a)g(Delaunay)0 1229 y(re\002nement)d(algorithm)f(to)g(create)g(much)h (smaller)f(edges)i(\(to)d(elimi-)0 1320 y(nate)j(poor)o(-quality)g (elements\),)f(b)o(ut)g(it)g(will)f(not)i(be)g(the)f(f)o(ault)g(of)h (the)0 1411 y(boundary)i(reco)o(v)o(ery)f(algorithm.)0 1553 y(The)k(edge)h(protection)g(algorithm)f(proceeds)i(in)e(tw)o(o)g (steps,)h(illus-)0 1644 y(trated)j(in)g(Figure)g(11.)52 b(The)28 b(\002rst)f(step)h(uses)h(protecting)g(spheres)0 1735 y(centered)d(at)f(input)h(v)o(ertices)f(to)h(choose)g(locations)g (to)f(insert)g(ne)n(w)0 1826 y(v)o(ertices.)e(Let)17 b Fj(V)35 b Fp(be)19 b(the)f(set)g(of)g(v)o(ertices)g(in)g Fj(X)24 b Fp(where)19 b(at)f(least)g(tw)o(o)0 1918 y(se)o(gments)23 b(meet)e(at)h(an)g(angle)g(less)g(than)g Fh(90)1176 1886 y Fb(\016)1213 1918 y Fp(.)31 b(Imagine)23 b(that)e(each)0 2009 y(v)o(erte)o(x)f Fj(v)241 2017 y Fa(i)288 2009 y Fp(in)g Fj(V)37 b Fp(is)20 b(the)g(center)g(of)g(a)g(sphere)h Fj(S)1228 2017 y Fa(i)1275 2009 y Fp(with)e(some)i(appro-)0 2100 y(priate)c(radius)h Fj(r)422 2108 y Fa(i)448 2100 y Fp(,)g(which)g(may)g(be)f(dif)n(ferent)h(for)f(each)i(v)o(erte)o(x.)k (\(Let)0 2192 y(us)f(momentarily)h(put)f(of)n(f)g(the)g(question)i(of)e (ho)n(w)g(to)g(choose)h(these)0 2283 y(radii.\))44 b(F)o(or)25 b(each)i(se)o(gment)g Fj(s)e Fp(that)h(meets)g(some)h(other)f(se)o (gment)0 2374 y(at)c(an)g(angle)h(of)f(less)g(than)g Fh(90)796 2343 y Fb(\016)833 2374 y Fp(,)g(let)g Fj(v)1008 2382 y Fa(i)1056 2374 y Fp(be)h(the)f(v)o(erte)o(x)g(where)g(the)o(y)0 2466 y(meet.)h(The)18 b(algorithm)h(inserts)f(a)g(ne)n(w)h(v)o(erte)o (x)g(at)f(the)g(point)h Fj(s)c Fi(\\)g Fj(S)1755 2474 y Fa(i)1781 2466 y Fp(,)0 2557 y(as)22 b(illustrated.)33 b(Insert)22 b(all)f(the)h(ne)n(w)h(v)o(ertices)f(generated)h(this)f(w)o (ay)0 2648 y(into)17 b(the)h(Delaunay)g(tetrahedralization)g (constructed)g(in)f(Section)h(4)0 2740 y(\(using)28 b(the)g(Bo)n(wyer)o (\226W)-6 b(atson)29 b([1,)f(28])g(algorithm,)i(so)e(the)g(mesh)0 2831 y(remains)19 b(Delaunay\).)0 2972 y(The)26 b(protecting)i(spheres) f(cut)g(of)n(f)f(the)h(ends)g(of)f(some)h(se)o(gments.)0 3064 y(Each)22 b(of)g(these)g(\223ends\224)h(is)e(guaranteed)i(to)f(be) g(strongly)h(Delaunay)0 3155 y(because)h(no)e(v)o(erte)o(x)h(lies)f(on) h(or)f(inside)h(its)e(diametral)i(sphere)g(\(the)0 3246 y(smallest)g(sphere)g(that)g(contains)h(the)f(end\),)h(e)o(xcept)f(its) g(endpoints.)0 3337 y(Therefore,)k(all)e(the)h(ends)g(appear)g(as)g (edges)g(in)g(the)f(updated)i(De-)0 3429 y(launay)20 b(tetrahedralization.)k(The)18 b(only)i(se)o(gments)f(that)g(can)g (pierce)0 3520 y(the)g(diametral)f(spheres)i(of)e(the)h(ends)g(are)f (other)h(ends.)24 b(The)19 b(second)0 3611 y(step)g(does)g(not)f (insert)h(a)f(v)o(erte)o(x)h(into)f(an)o(y)h(of)g(the)f(ends,)h(so)g (the)f(ends)0 3703 y(remain)h(strongly)h(Delaunay)-5 b(.)0 3844 y(The)23 b(second)h(step)f(reco)o(v)o(ers)g(the)g(se)o (gments)h(that)f(are)g(not)g(ends)g(by)0 3935 y(recursi)n(v)o(e)29 b(bisection.)53 b(An)o(y)29 b(se)o(gment)g(that)g(is)f(not)h(strongly)g (De-)0 4027 y(launay)35 b(is)e(split)g(in)g(tw)o(o)h(with)f(a)h(ne)n(w) f(v)o(erte)o(x)h(at)g(its)e(midpoint.)0 4118 y(The)16 b(Delaunay)g(tetrahedralization)h(of)e(the)h(v)o(ertices)g(is)f (maintained)0 4209 y(throughout,)28 b(so)d(subse)o(gments)i(that)e(are) g(not)h(strongly)g(Delaunay)0 4301 y(can)k(be)h(diagnosed)h(as)e (described)h(in)e(Section)h(4.)57 b(When)30 b(e)n(v)o(ery)0 4392 y(subse)o(gment)20 b(is)f(strongly)h(Delaunay)-5 b(,)20 b(the)f(PLC)e(is)i(edge-protected)0 4483 y(and)h(the)f (algorithm)g(terminates.)0 4624 y(This)j(procedure)j(can)e(be)g(used)h (to)f(mak)o(e)g(a)g(PLC)f(weakly)h(or)g(fully)0 4716 y(edge-protected.)h(T)-6 b(o)16 b(obtain)g(full)g(edge)g(protection,)h (the)f(procedure)0 4807 y(considers)34 b(all)e(se)o(gments\227e)o (xcept)i(edges)g(of)f(the)g(con)m(v)o(e)o(x)h(hull,)0 4898 y(which)17 b(are)g(al)o(w)o(ays)h(strongly)g(Delaunay)-5 b(.)24 b(\(This)16 b(means)i(true)f(edges)0 4990 y(of)j(the)g(con)m(v)o (e)o(x)i(hull\227an)e(edge)h(that)f(lies)g(in)g(a)g(f)o(ace)g(of)g(the) g(con)m(v)o(e)o(x)0 5081 y(hull,)d(b)o(ut)h(not)f(in)h(the)f(boundary)j (of)d(the)h(f)o(ace,)f(must)h(be)g(considered.)0 5172 y(Con)m(v)o(e)o(x)k(hull)f(edges)i(can)e(be)h(disco)o(v)o(ered)g(by)g (searching)g(for)f(dihe-)0 5264 y(dral)i(angles)h(greater)f(than)h Fh(180)849 5232 y Fb(\016)909 5264 y Fp(on)g(the)f(boundary)i(of)e(the) h(initial)2370 2449 y @beginspecial 0 @llx 0 @lly 232 @urx 451 @ury 1512 @rwi @setspecial %%BeginDocument: ccdt.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: ccdt.eps %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Tue May 7 23:19:49 2002 %%For: jrs@complex.eecs.berkeley.edu (Jonathan Shewchuk) %%BoundingBox: 0 0 232 451 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def F2psDictbeginF2psDict begin F2psDictbeginF2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 451 moveto 0 0 lineto 232 0 lineto 232 451 lineto closepath clip newpath -37.0 536.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def F2psBeginF2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % 15.000 slw [90] 0 sd % Ellipse n 3600 6150 450 450 0 360 DrawEllipse gs col0 s gr [] 0 sd [90] 0 sd % Ellipse n 2100 5250 300 300 0 360 DrawEllipse gs col0 s gr [] 0 sd [90] 0 sd % Ellipse n 3600 4350 450 450 0 360 DrawEllipse gs col0 s gr [] 0 sd % Polyline n 2100 5250 m 2100 4350 l gs col0 s gr % Polyline n 2100 5250 m 3600 4350 l gs col0 s gr % Polyline n 3600 4350 m 3225 5100 l gs col0 s gr % Polyline n 2100 5250 m 4200 5250 l gs col0 s gr % Polyline n 2100 5250 m 3600 6150 l gs col0 s gr % Polyline n 3600 6150 m 900 5850 l gs col0 s gr % Polyline 45.000 slw n 675 6675 m 4425 6675 l gs col0 s gr % Polyline n 675 3825 m 4425 3825 l gs col0 s gr % Polyline 15.000 slw n 2100 2550 m 2100 1650 l gs col0 s gr % Polyline n 2100 2550 m 3600 1650 l gs col0 s gr % Polyline n 3600 1650 m 3225 2400 l gs col0 s gr % Polyline n 2100 2550 m 4200 2550 l gs col0 s gr % Polyline n 2100 2550 m 3600 3450 l gs col0 s gr % Polyline n 3600 3450 m 900 3150 l gs col0 s gr % Polyline n 2100 5250 m 1350 5250 l gs col0 s gr % Polyline n 3600 4350 m 4200 4200 l gs col0 s gr % Polyline n 2100 2550 m 1350 2550 l gs col0 s gr % Polyline n 3600 1650 m 4200 1500 l gs col0 s gr % Polyline n 2100 7950 m 2100 7050 l gs col0 s gr % Polyline n 2100 7950 m 3600 7050 l gs col0 s gr % Polyline n 2100 7950 m 4200 7950 l gs col0 s gr % Polyline n 3600 7050 m 3225 7800 l gs col0 s gr % Polyline n 3600 8850 m 900 8550 l gs col0 s gr % Polyline n 2100 7950 m 3600 8850 l gs col0 s gr % Polyline n 2100 7950 m 1350 7950 l gs col0 s gr % Polyline n 3600 7050 m 4200 6900 l gs col0 s gr 0.000 slw % Ellipse n 3600 6150 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3225 5925 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3152 6098 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2700 5850 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1800 6150 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 900 5850 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2352 5403 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2400 5250 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2362 5093 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2100 5250 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2100 4950 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1950 4800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2100 4350 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2625 4575 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3225 5100 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4200 5250 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3600 4350 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3225 4575 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3402 4748 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1800 3450 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 900 3150 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2700 3150 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3600 3450 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4200 2550 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3225 2400 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3600 1650 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2625 1875 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1950 2100 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2100 1650 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2100 2550 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1350 5250 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4200 4200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1350 2550 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4200 1500 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1800 8850 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 900 8550 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2025 8676 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3152 8798 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3600 8850 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3225 8625 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2700 8550 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2775 8356 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2352 8103 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2362 7793 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2100 7950 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2400 7950 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2100 7650 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1950 7500 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2100 7050 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2625 7275 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2795 7536 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2850 7950 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3300 7950 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3225 7800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3402 7448 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3225 7275 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 3600 7050 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4200 7950 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1350 7950 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4200 6900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1461 8610 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Polyline n 2475 3750 m 2325 3750 l 2325 3900 l 2250 3900 l 2400 4050 l 2550 3900 l 2475 3900 l cp gs 0.00 setgray ef gr % Polyline n 2475 6600 m 2325 6600 l 2325 6750 l 2250 6750 l 2400 6900 l 2550 6750 l 2475 6750 l cp gs 0.00 setgray ef gr F2psBeginF2psEnd rs %%EndDocument @endspecial 2100 2615 a Fl(Figure)d(11:)28 b Fk(Making)21 b(a)h(PLC)g(edge-protected.)k(\(Here)21 b(illus-)2100 2697 y(tr)o(ated)h(in)h(tw)o(o)g(dimensions)o(,)e(b)o(ut)h(the)h(pr)q (inciple)d(is)k(the)e(same)2100 2779 y(in)h(three)o(.\))32 b(First,)24 b(use)f(spheres)f(centered)g(at)h(input)e(v)n(er)s(tices) 2100 2861 y(to)c(subdivide)f(segments)g(that)h(meet)g(other)f(segments) h(at)g(an-)2100 2943 y(gles)j(less)g(than)f(90)2661 2912 y Fb(\016)2696 2943 y Fk(.)26 b(Second,)19 b(bisect)h(an)o(y)g(segment) f(that)g(is)2100 3026 y(not)27 b(strongly)f(Delauna)n(y)-7 b(.)44 b(Obser)r(v)n(e)28 b(that)e(the)h(second)g(step)2100 3108 y(does)h(not)f(split)g(the)h(\223ends\224)f(created)g(b)o(y)h(the) f(\002rst)i(step)f(be-)2100 3190 y(cause)k(no)g(ne)o(w)f(v)n(er)s (tices)h(can)g(appear)e(in)i(their)f(diametr)o(al)2100 3272 y(spheres)o(.)2100 3537 y Fp(tetrahedralization.\))24 b(T)-6 b(o)18 b(obtain)h(weak)g(edge)h(protection,)f(the)g(pro-)2100 3628 y(cedure)27 b(considers)h(only)f(the)f(grazeable)h(se)o(gments,)i (and)e(ignores)2100 3719 y(the)f(others)h(as)f(if)f(the)o(y)i(did)f (not)h(e)o(xist.)44 b(The)26 b(adv)n(antage)i(of)e(weak)2100 3811 y(edge)h(protection)f(is)f(that)h(fe)n(wer)g(ne)n(w)g(v)o(ertices) g(are)g(inserted,)h(b)o(ut)2100 3902 y(the)i(incremental)h(f)o(acet)f (insertion)h(algorithm)g(of)f(Section)g(7)g(can)2100 3993 y(construct)17 b(the)g(CDT)f(only)h(of)g(a)g(fully)f (edge-protected)j(PLC.)c(W)-6 b(eak)2100 4085 y(edge)17 b(protection)g(suf)n(\002ces)g(for)f(the)g(CDT)g(construction)h (algorithms)2100 4176 y(discussed)j(in)f(Section)g(6.)2100 4317 y(Ho)n(w)30 b(are)f(the)h(sphere)g(radii)f Fj(r)2939 4325 y Fa(i)2994 4317 y Fp(chosen?)56 b(The)30 b(radii)f(should)h(be) 2100 4409 y(as)d(lar)o(ge)g(as)h(possible)f(while)h(accomplishing)g(tw) o(o)g(goals.)48 b(First,)2100 4500 y(if)28 b(both)h(ends)g(of)g(a)f(se) o(gment)i(are)e(clipped,)j(the)e(middle)g(subse)o(g-)2100 4591 y(ment)22 b(should)h(not)f(be)g(too)g(short.)31 b(This)22 b(goal)g(is)f(accomplished)i(by)2100 4682 y(choosing)d Fj(r)2423 4690 y Fa(i)2467 4682 y Fp(no)f(lar)o(ger)f(than)h Fj(`)2930 4690 y Fa(i)2956 4682 y Fj(=)p Fh(3)p Fp(,)f(where)h Fj(`)3302 4690 y Fa(i)3346 4682 y Fp(is)f(the)g(length)h(of)g(the)2100 4774 y(shortest)25 b(se)o(gment)g(that)f(is)g(clipped)h(by)g Fj(S)3229 4782 y Fa(i)3255 4774 y Fp(.)39 b(Second,)26 b(the)f(diame-)2100 4865 y(tral)20 b(spheres)h(of)f(the)g(ends)h (cannot)g(enclose)g(an)o(y)g(v)o(ertices,)f(nor)g(an)o(y)2100 4956 y(subse)o(gments)g(that)e(are)g(not)h(ends.)24 b(This)18 b(goal)g(is)g(accomplished)i(by)2100 5048 y(choosing)h Fj(r)2424 5056 y Fa(i)2469 5048 y Fp(no)f(lar)o(ger)f(than)h Fh(lfs)q(\()p Fj(v)3045 5056 y Fa(i)3071 5048 y Fh(\))p Fp(,)f(and)h(no)g(lar)o(ger)f(than)h Fh(2)p Fj(d)3778 5056 y Fa(i)3805 5048 y Fj(=)p Fh(3)p Fp(,)2100 5139 y(where)25 b Fj(d)2347 5147 y Fa(i)2397 5139 y Fp(is)g(the)f(length)h (of)g(the)g(shortest)f(se)o(gment)i(adjoining)f Fj(v)3873 5147 y Fa(i)2100 5230 y Fp(whose)d Fo(other)h Fp(end)f(is)f(clipped.)33 b(\(Note)21 b(that)h Fj(d)3328 5238 y Fa(i)3375 5230 y Fp(is)g(sometimes)g(less)2100 5322 y(than)32 b Fj(`)2292 5330 y Fa(i)2318 5322 y Fp(,)j(because)e(a)e(se)o(gment)i(whose)f(f)o (ar)g(end)g(is)g(clipped)g(and)p eop %%Page: 8 8 8 7 bop 0 83 a Fp(whose)29 b(near)g(end)f(is)g(not)h (clipped\227because)h(only)f(one)g(end)g(ad-)0 174 y(joins)17 b(another)g(se)o(gment)h(at)e(an)h(angle)h(less)e(than)h Fh(90)1352 143 y Fb(\016)1389 174 y Fp(\227\002gures)g(into)0 266 y Fj(d)40 274 y Fa(i)85 266 y Fp(b)o(ut)h(not)i Fj(`)344 274 y Fa(i)370 266 y Fp(.\))i(Hence,)e(set)e Fj(r)801 274 y Fa(i)849 266 y Fh(=)j(min)p Fi(f)p Fh(lfs)q(\()p Fj(v)1238 274 y Fa(i)1265 266 y Fh(\))p Fj(;)13 b(`)1361 274 y Fa(i)1387 266 y Fj(=)p Fh(3)p Fj(;)h Fh(2)p Fj(d)1576 274 y Fa(i)1602 266 y Fj(=)p Fh(3)p Fi(g)p Fp(.)0 407 y(The)19 b(algorithm)g(must)g(e)o(xplicitly)g(compute)h(the)f(local)g (feature)g(size)0 498 y(at)30 b(some)h(v)o(ertices.)59 b(The)30 b(local)h(feature)g(size)f Fh(lfs)r(\()p Fj(v)1430 506 y Fa(i)1456 498 y Fh(\))g Fp(is)h(simply)0 589 y(the)e(distance)h (from)f Fj(v)605 597 y Fa(i)660 589 y Fp(to)g(the)g(nearest)g(v)o(erte) o(x)g(or)g(se)o(gment)h(that)0 681 y(doesn')o(t)20 b(intersect)f Fj(v)547 689 y Fa(i)574 681 y Fp(.)25 b(A)19 b(Delaunay)h (tetrahedralization)h(connects)0 772 y(each)16 b(v)o(erte)o(x)g(to)f (its)g(nearest)h(neighbor)h(\(via)f(an)g(edge\),)g(so)g(the)g(initial)0 863 y(tetrahedralization)22 b(helps)h(\002nd)f(the)g(nearest)g(v)o (erte)o(x)g(quickly)-5 b(.)33 b(The)0 955 y(nearest)17 b(se)o(gment)h(may)f(be)g(found)h(by)f(checking)i(e)n(v)o(ery)e(se)o (gment)h(of)0 1046 y(the)h(PLC.)0 1270 y Fn(Theor)o(em)g(2)42 b Fo(This)23 b(algorithm)h(for)g(edg)o(e-pr)m(otecting)i(a)e(PLC)e(cr)m (e-)0 1362 y(ates)k(no)h(se)m(gment)g(shorter)g(than)g(one-quarter)g (the)g(local)f(featur)m(e)0 1453 y(size)19 b(of)g(any)g(point)g(in)g (that)g(se)m(gment.)0 1677 y Fn(Pr)o(oof:)54 b Fp(Observ)o(e)35 b(that)f(an)h(end)g Fj(e)e Fp(adjoining)j(v)o(erte)o(x)e Fj(v)1572 1685 y Fa(i)1633 1677 y Fp(has)h(a)0 1768 y(length)21 b(of)f(at)g(least)g Fh(lfs)q(\()p Fj(v)662 1776 y Fa(i)688 1768 y Fh(\))p Fj(=)p Fh(3)p Fp(.)27 b(A)20 b(well-kno)n(wn)h(property) g([17)q(,)e(21)q(])0 1860 y(of)39 b(the)g Fh(lfs)g Fp(function)h(is)e (that)g(for)h(an)o(y)g(tw)o(o)g(points)g Fj(u)g Fp(and)g Fj(v)s Fp(,)0 1951 y Fh(lfs)q(\()p Fj(u)p Fh(\))k Fi(\024)f Fh(lfs)q(\()p Fj(v)s Fh(\))25 b(+)h Fi(j)p Fj(uv)s Fi(j)p Fp(.)57 b(So)30 b(at)f(an)o(y)i(point)g Fj(u)f Fp(in)g(the)g(end)h Fj(e)p Fp(,)0 2042 y Fh(lfs)q(\()p Fj(u)p Fh(\))22 b Fi(\024)f Fh(lfs)q(\()p Fj(v)424 2050 y Fa(i)451 2042 y Fh(\))c(+)g Fi(j)p Fj(e)p Fi(j)22 b(\024)g Fh(4)p Fi(j)p Fj(e)p Fi(j)p Fp(,)d(where)h Fi(j)p Fj(e)p Fi(j)f Fp(is)g(the)g(length) h(of)f Fj(e)p Fp(.)k(It)0 2134 y(follo)n(ws)c(that)g(for)g(an)o(y)g (point)g Fj(u)g Fp(in)g(an)o(y)g(end)h Fj(e)p Fp(,)e Fi(j)p Fj(e)p Fi(j)k(\025)f Fh(lfs)q(\()p Fj(u)p Fh(\))p Fj(=)p Fh(4)p Fp(.)0 2275 y(Let)27 b Fj(s)g Fp(be)g(the)h(se)o(gment)g (left)e(o)o(v)o(er)i(after)f(one)h(or)f(both)h(ends)g(of)g(a)0 2366 y(se)o(gment)d Fj(t)e Fp(are)i(cut)f(of)n(f.)39 b(F)o(or)23 b(an)o(y)i(point)f Fj(u)g Fp(in)g Fj(s)p Fp(,)h Fi(j)p Fj(s)p Fi(j)32 b(\025)f(j)p Fj(t)p Fi(j)p Fj(=)p Fh(3)h Fi(\025)0 2457 y Fh(lfs)q(\()p Fj(u)p Fh(\))p Fj(=)p Fh(3)p Fp(.)0 2599 y(During)22 b(the)f(second)i(step,)e(a)h(se)o (gment)f Fj(s)g Fp(is)g(produced)i(only)f(when)0 2690 y(a)j(se)o(gment)h(of)g(length)g Fh(2)p Fi(j)p Fj(s)p Fi(j)g Fp(has)f(a)h(v)o(erte)o(x)f Fj(v)j Fp(on)e(or)g(inside)f(its)g (di-)0 2781 y(ametral)31 b(sphere,)k(and)d Fj(v)i Fp(does)d(not)h (intersect)f(the)g(original)h(se)o(g-)0 2873 y(ment)23 b(of)g(which)g Fj(s)f Fp(is)g(a)h(subse)o(gment.)36 b(F)o(or)22 b(an)o(y)h(point)h Fj(u)e Fp(in)h Fj(s)p Fp(,)g(the)0 2964 y(ball)h(of)h(radius)f Fh(2)p Fi(j)p Fj(s)p Fi(j)h Fp(centered)h(at)e Fj(u)g Fp(intersects)g(both)h Fj(v)j Fp(and)d Fj(s)p Fp(,)g(so)0 3055 y Fh(lfs)q(\()p Fj(u)p Fh(\))d Fi(\024)g Fh(2)p Fi(j)p Fj(s)p Fi(j)p Fp(.)j(It)19 b(follo)n(ws)g(that)h(for)f(an)o(y)h(point)g Fj(u)f Fp(in)g(an)o(y)h (se)o(gment)0 3147 y Fj(s)e Fp(produced)j(during)f(the)f(second)h (step,)f Fi(j)p Fj(s)p Fi(j)j(\025)f Fh(lfs)q(\()p Fj(u)p Fh(\))p Fj(=)p Fh(2)p Fp(.)208 b Fd(\004)0 3337 y Fp(The)28 b(same)h(result)f(applies)h(to)f(e)n(v)o(ery)h(edge)g(of)f(the)g(CDT)-6 b(,)28 b(e)o(xcept)0 3429 y(where)16 b(tw)o(o)g(se)o(gments)h(meet)f (at)g(an)g(angle)h(less)f(than)g Fh(60)1461 3397 y Fb(\016)1498 3429 y Fp(.)22 b(Unfortu-)0 3520 y(nately)-5 b(,)25 b(small)e(angles)i (sometimes)f(una)o(v)o(oidably)g(engender)i(short)0 3611 y(edges,)c(b)o(ut)f(the)g(edge)h(lengths)g(are)f(still)f(bounded)k(in)d (terms)g(of)g(the)0 3703 y(angles.)0 3927 y Fn(Theor)o(em)e(3)42 b Fo(Let)19 b Fj(T)30 b Fo(be)21 b(the)f(CCDT)f(of)g(a)i(PLC)d Fj(X)27 b Fo(yielded)20 b(by)g(ap-)0 4018 y(plying)k(the)g(edg)o(e-pr)m (otection)i(algorithm)f(described)g(abo)o(ve)o(,)h(then)0 4110 y(constructing)g(the)f(CDT)f(of)h(the)g(augmented)i(PLC.)c(Let)h Fj(e)h Fo(be)g(any)0 4201 y(edg)o(e)e(of)e Fj(T)11 b Fo(,)21 b(and)i(let)e Fj(u)g Fo(be)h(any)g(point)g(in)g Fj(e)p Fo(.)30 b(If)21 b(the)h(endpoints)h(of)e Fj(e)0 4292 y Fo(lie)j(in)h(two)g(dif)o(fer)m(ent)g(se)m(gments)h(of)f Fj(X)31 b Fo(that)25 b(meet)g(at)g(an)g(angle)h(of)0 4384 y Fj(\036)21 b(<)h Fh(60)225 4352 y Fb(\016)261 4384 y Fo(,)d(then)h Fi(j)p Fj(e)p Fi(j)i(\025)f Fh(lfs)q(\()p Fj(u)p Fh(\))13 b(sin\()p Fj(\036=)p Fh(2\))p Fj(=)p Fh(2)p Fo(.)24 b(F)-8 b(or)19 b(any)h(other)g(edg)o(e)o(,)0 4475 y Fi(j)p Fj(e)p Fi(j)i(\025)f Fh(lfs)q(\()p Fj(u)p Fh(\))p Fj(=)p Fh(4)p Fo(.)0 4699 y Fn(Pr)o(oof:)35 b Fp(If)24 b Fj(e)g Fp(is)g(a)h(subse)o(gment,)i(the)e(result)f(follo)n (ws)h(from)g(Theo-)0 4790 y(rem)f(2.)39 b(Otherwise,)25 b(let)f Fj(w)i Fp(and)f Fj(x)e Fp(be)i(the)f(endpoints)i(of)e Fj(e)p Fp(.)38 b(If)24 b Fj(w)0 4882 y Fp(and)g Fj(x)e Fp(lie)g(on)i(nonintersecting)g(features)f(\(v)o(ertices)g(or)g(se)o (gments\))0 4973 y(of)16 b Fj(X)6 b Fp(,)16 b(then)h Fh(lfs)q(\()p Fj(u)p Fh(\))k Fi(\024)g(j)p Fj(e)p Fi(j)c Fp(by)f(the)g(de\002nition)h(of)f(local)g(feature)g(size.)0 5114 y(The)j(only)h(other)f(case)g(is)g(where)g Fj(w)i Fp(and)f Fj(x)e Fp(lie)h(in)g(tw)o(o)g(se)o(gments)h(of)0 5205 y Fj(X)27 b Fp(that)20 b(meet)h(at)g(some)g(v)o(erte)o(x)g Fj(v)j Fp(at)c(some)h(angle)h Fj(\036)p Fp(.)28 b(The)21 b(triangle)0 5297 y Fi(4)p Fj(v)s(w)r(x)16 b Fp(has)g(side)h(lengths)g Fj(b)k Fh(=)g Fi(j)p Fj(w)r(v)s Fi(j)p Fp(,)c Fj(c)22 b Fh(=)f Fi(j)p Fj(xv)s Fi(j)p Fp(,)16 b(and)h Fi(j)p Fj(e)p Fi(j)p Fp(.)22 b(Assume)2100 83 y(without)g(loss)g(of)h (generality)f(that)g Fj(b)28 b Fi(\024)f Fj(c)p Fp(.)33 b(The)22 b(point)h Fj(u)f Fp(lies)g(in)g Fj(e)p Fp(,)2100 174 y(so)d Fi(j)p Fj(uv)s Fi(j)j(\024)f Fj(c)e Fp(and)h Fh(lfs)q(\()p Fj(u)p Fh(\))h Fi(\024)g Fh(lfs)q(\()p Fj(v)s Fh(\))c(+)g Fi(j)p Fj(uv)s Fi(j)22 b(\024)f Fh(3)p Fj(b)d Fh(+)e Fj(c)p Fp(.)2100 315 y(By)g(the)h(la)o(w)f(of)h(cosines,) g Fi(j)p Fj(e)p Fi(j)2846 284 y Fg(2)2902 315 y Fh(=)k Fj(b)3016 284 y Fg(2)3059 315 y Fh(+)8 b Fj(c)3160 284 y Fg(2)3202 315 y Fi(\000)g Fh(2)p Fj(bc)14 b Fh(cos)f Fj(\036)p Fp(.)22 b(If)16 b Fj(b)g Fp(is)g(held)2100 407 y(\002x)o(ed,)h(calculus)h(sho)n(ws)f(that)g(the)g(ratio)g Fi(j)p Fj(e)p Fi(j)p Fj(=)p Fh(\(3)p Fj(b)9 b Fh(+)g Fj(c)p Fh(\))18 b Fp(is)e(minimized)2100 498 y(for)26 b(a)g(v)n(alue)i(of)e Fj(c)g Fp(that)g(is)g(\(for)g(an)o(y)h Fj(\036)p Fp(\))f(less)g(than)h Fj(b)p Fp(.)45 b(But)26 b(by)h(as-)2100 589 y(sumption,)17 b Fj(c)22 b Fi(\025)f Fj(b)p Fp(,)16 b(so)g(the)g(w)o(orst)g(\(smallest\))f(ratio)g(is)h (attained)g(with)2100 681 y Fj(c)22 b Fh(=)f Fj(b)p Fp(.)h(F)o(or)c (this)h(case,)f Fi(4)p Fj(v)s(w)r(x)h Fp(is)f(isosceles)h(and)g(basic)g (trigonom-)2100 772 y(etry)j(sho)n(ws)g(that)g Fi(j)p Fj(e)p Fi(j)28 b Fh(=)e(2)p Fj(b)13 b Fh(sin)q(\()p Fj(\036=)p Fh(2\))p Fp(.)32 b(Therefore,)22 b Fi(j)p Fj(e)p Fi(j)p Fj(=)p Fh(lfs)r(\()p Fj(u)p Fh(\))27 b Fi(\025)2100 863 y(j)p Fj(e)p Fi(j)p Fj(=)p Fh(\(3)p Fj(b)18 b Fh(+)f Fj(c)p Fh(\))k Fi(\025)g Fh(2)p Fj(b)13 b Fh(sin)q(\()p Fj(\036=)p Fh(2\))p Fj(=)p Fh(\(4)p Fj(b)p Fh(\))22 b(=)f(sin\()p Fj(\036=)p Fh(2\))p Fj(=)p Fh(2)p Fp(.)259 b Fd(\004)2557 1079 y Fq(6)83 b(Constructing)22 b(CDTs)2100 1245 y Fp(The)40 b(\002rst)e(step)i(of)g(constructing)h(the)f(CDT)f(of)g(a)h(PLC)f(is)g (to)2100 1337 y(construct)27 b(the)g(tw)o(o-dimensional)g(CDTs)f (\(triangulations\))h(of)f(all)2100 1428 y(the)39 b(f)o(acets)h(of)f (the)g(PLC.)f(This)h(can)g(be)h(done)g(using)g(Che)n(w')l(s)2100 1519 y Fi(O)r Fh(\()p Fj(n)13 b Fh(log)i Fj(n)p Fh(\))31 b Fp(algorithm)h([2])f(\(where)g Fj(n)h Fp(is)f(the)g(number)h(of)f(v)o (er)o(-)2100 1611 y(tices)24 b(in)g(a)g(f)o(acet\),)h(by)g(using)f(a)g (tw)o(o-dimensional)i(v)o(ersion)f(of)f(the)2100 1702 y(gift-wrapping)19 b(algorithm)h(described)f(belo)n(w)-5 b(,)20 b(or)e(by)i(constructing)2100 1793 y(the)f(Delaunay)h (triangulation)f(of)g(the)g(v)o(ertices)g(of)f(a)h(f)o(acet,)g(then)g (in-)2100 1885 y(serting)j(the)h(se)o(gments)f(one)h(by)g(one.)33 b(Call)22 b(each)h(triangle)f(of)g(each)2100 1976 y(f)o(acet)28 b(CDT)f(a)g Fo(constr)o(aining)i(triangle)p Fp(,)h(because)f(these)f (triangles)2100 2067 y(are)19 b(constrained)h(to)f(appear)h(as)f(f)o (aces)g(of)g(the)g(tetrahedralization.)2100 2208 y(There)g(are)h(tw)o (o)f(kno)n(wn)i(algorithms)e(that)g(can)h(construct)g(the)g(CDT)2100 2300 y(of)j(an)o(y)g(PLC)e Fj(X)29 b Fp(that)22 b(has)h(a)g(CDT)-6 b(,)22 b(including)i(an)o(y)f(weakly)g(edge-)2100 2391 y(protected)f(PLC\227if)d(no)i(\002)n(v)o(e)f(v)o(ertices)h(of)g Fj(X)27 b Fp(are)21 b(cospherical.)29 b(\(If)2100 2482 y(the)19 b(latter)g(condition)h(is)f(not)g(satis\002ed,)f(see)i (Section)f(9.\))k(These)d(are)2100 2574 y(na)n(\250)-23 b(\021v)o(e)21 b(gift)f(wrapping,)i(and)f(a)g(sweep)g(algorithm)g([23)q (].)28 b(Na)n(\250)-23 b(\021v)o(e)20 b(gift)2100 2665 y(wrapping)25 b(is)f(easier)g(to)g(implement,)i(b)o(ut)e(the)g(more)h (complicated)2100 2756 y(sweep)18 b(algorithm)g(is)g(f)o(aster)l(.)k (The)c(running)h(time)f(of)f(gift)h(wrapping)2100 2848 y(is)f Fi(O)r Fh(\()p Fj(n)2306 2856 y Fa(v)2343 2848 y Fj(n)2389 2857 y Fa(f)2429 2848 y Fj(n)2475 2856 y Fa(s)2509 2848 y Fh(\))p Fp(,)f(where)i Fj(n)2820 2856 y Fa(v)2874 2848 y Fp(is)e(the)h(number)h(of)f(v)o(ertices,)g Fj(n)3685 2857 y Fa(f)3742 2848 y Fp(is)g(the)2100 2939 y(number)28 b(of)f(constraining)i(triangles,)g(and)f Fj(n)3327 2947 y Fa(s)3387 2939 y Fp(is)f(the)h(number)g(of)2100 3030 y(tetrahedra)21 b(in)f(the)h(CDT)-6 b(.)20 b(F)o(or)g(lar)o(ge)g (PLCs,)g(this)g(is)g(too)h(slo)n(w)-5 b(.)28 b(The)2100 3122 y(sweep)d(algorithm)g(runs)f(in)h Fi(O)r Fh(\()p Fj(n)3000 3130 y Fa(v)3037 3122 y Fj(n)3083 3130 y Fa(s)3117 3122 y Fh(\))f Fp(time,)h(b)o(ut)f(in)g(practice)h(the)2100 3213 y(running)17 b(time)f(is)f(lik)o(ely)h(to)g(be)g Fi(O)r Fh(\()p Fj(n)3046 3181 y Fg(2)3046 3226 y Fa(v)3089 3213 y Fh(+)6 b Fj(n)3201 3221 y Fa(s)3247 3213 y Fh(log)15 b Fj(n)3405 3221 y Fa(v)3442 3213 y Fh(\))h Fp(or)g(better)f(in)h(all) 2100 3304 y(b)o(ut)h(the)h(most)g(pathological)h(cases.)k(Hence,)18 b(the)g(sweep)g(algorithm)2100 3396 y(is)h(f)o(ast)f(enough)j(for)e (most)g(circumstances.)2100 3537 y(Ne)n(v)o(ertheless,)43 b(the)c(gift-wrapping)g(algorithm)f(is)g(usually)h(f)o(ast)2100 3628 y(enough)22 b(to)d(be)i(used)f(for)g(incremental)h(f)o(acet)f (insertion)g(\(described)2100 3719 y(in)32 b(the)g(ne)o(xt)h (section\),)i(so)d(it)g(is)f(described)j(here.)63 b(\(Space)32 b(pre-)2100 3811 y(v)o(ents)20 b(my)f(describing)h(the)g(sweep)f (algorithm)h(here.\))k(It)19 b(is)f(a)i(v)n(aria-)2100 3902 y(tion)d(on)h(the)g(gift-wrapping)g(algorithms)g(for)f (constructing)h(con)m(v)o(e)o(x)2100 3993 y(hulls)h([26)q(])f(and)i (ordinary)g(Delaunay)g(triangulations)f([27)q(,)f(7)q(].)2100 4134 y(Gift-wrapping)h(be)o(gins)g(by)g(choosing)h(one)f(constraining)h (triangle,)2100 4226 y(which)d(serv)o(es)g(as)g(a)g Fo(seed)g Fp(upon)h(which)g(the)f(constrained)h(Delaunay)2100 4317 y(tetrahedra)h(crystallize)g(one)h(by)f(one.)24 b(Both)19 b(sides)g(of)g(this)g(triangle,)2100 4408 y(plus)i(each)g(f)o(ace)g(of) g(e)n(v)o(ery)g(crystallized)g(tetrahedron,)h(is)e(used)h(as)g(a)2100 4500 y(base)26 b(from)f(which)h(to)f(search)h(for)f(the)h(v)o(erte)o(x) f(that)h(serv)o(es)f(as)h(the)2100 4591 y(ape)o(x)20 b(of)f(an)g(adjacent)g(tetrahedron.)2100 4732 y(Gift-wrapping)29 b(is)f(based)i(on)f(a)f(straightforw)o(ard)i(procedure)g(for)2100 4824 y(\223gro)n(wing\224)d(a)f(tetrahedron)h(from)e(a)h(triangle,)h (illustrated)f(in)f(Fig-)2100 4915 y(ure)g(12.)42 b(Let)24 b Fj(f)33 b Fp(be)26 b(either)e(a)h(constraining)h(triangle)f(or)g(a)g (f)o(ace)h(of)2100 5006 y(a)18 b(constrained)h(Delaunay)g(tetrahedron.) 24 b(Assume)19 b(without)f(loss)g(of)2100 5098 y(generality)f(that)f Fj(f)25 b Fp(is)16 b(oriented)h(horizontally)-5 b(,)18 b(and)f(the)g(constrained)2100 5189 y(Delaunay)24 b(tetrahedron)g (immediately)f(abo)o(v)o(e)g Fj(f)31 b Fp(is)22 b(sought.)36 b(Sup-)2100 5280 y(pose)24 b(that)f(at)g(least)h(one)g(v)o(erte)o(x)f (of)h Fj(X)29 b Fp(lies)23 b(abo)o(v)o(e)h Fj(f)8 b Fp(.)37 b(Let)23 b Fj(S)k Fp(be)d(a)p eop %%Page: 9 9 9 8 bop 210 926 a @beginspecial 0 @llx 0 @lly 407 @urx 273 @ury 1656 @rwi @setspecial %%BeginDocument: bubble3d+.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: bubble3d+.eps %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Thu Aug 1 03:37:27 2002 %%For: jrs@localhost.localdomain (Jonathan Shewchuk) %%BoundingBox: 0 0 407 273 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def F2psDictbeginF2psDict begin F2psDictbeginF2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 273 moveto 0 0 lineto 407 0 lineto 407 273 lineto closepath clip newpath -34.0 343.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def F2psBeginF2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Ellipse n 5550 4800 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr % Ellipse n 5250 4275 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr % Ellipse n 7275 4500 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr % Ellipse n 7050 1950 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr % Polyline 30.000 slw n 7275 4500 m 5550 4800 l gs col0 s gr % Polyline n 5550 4800 m 5250 4275 l gs col0 s gr % Polyline n 5250 4275 m 7050 1950 l gs col0 s gr % Polyline n 7050 1950 m 7275 4500 l gs col0 s gr % Polyline n 7050 1950 m 5550 4800 l gs col0 s gr % Polyline 15.000 slw [90] 0 sd n 5250 4275 m 7275 4500 l gs col0 s gr [] 0 sd % Arc [90] 0 sd n 2100.0 5306.2 1406.2 163.7 16.3 arc gs col0 s gr [] 0 sd 30.000 slw % Ellipse n 2100 3600 1500 1500 0 360 DrawEllipse gs col0 s gr 7.500 slw % Ellipse n 2100 3600 75 75 0 360 DrawEllipse gs col0 s gr [60] 0 sd % Ellipse n 2100 4500 1125 375 0 360 DrawEllipse gs col0 s gr [] 0 sd 0.000 slw % Ellipse n 1500 4800 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr % Ellipse n 1200 4275 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr % Ellipse n 3225 4500 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr % Ellipse n 3000 1950 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr 15.000 slw [90] 0 sd % Ellipse n 2100 4500 1125 1125 0 360 DrawEllipse gs col0 s gr [] 0 sd [90] 0 sd % Ellipse n 2100 4050 1212 1212 0 360 DrawEllipse gs col0 s gr [] 0 sd % Polyline 7.500 slw n 4500 3375 m 4500 3525 l 4650 3525 l 4650 3600 l 4800 3450 l 4650 3300 l 4650 3375 l cp gs 0.00 setgray ef gr gs col0 s gr % Polyline 30.000 slw n 1200 4275 m 3225 4500 l gs col0 s gr % Polyline n 3225 4500 m 1500 4800 l gs col0 s gr % Polyline n 1500 4800 m 1200 4275 l gs col0 s gr /Times-Italic ff 450.00 scf sf 3750 3750 m gs 1 -1 sc (S) col0 sh gr /Times-Italic ff 450.00 scf sf 1650 4680 m gs 1 -1 sc (f) col0 sh gr /Times-Italic ff 450.00 scf sf 2250 3825 m gs 1 -1 sc (O) col0 sh gr /Times-Italic ff 450.00 scf sf 6675 3825 m gs 1 -1 sc (t) col0 sh gr /Times-Italic ff 450.00 scf sf 6750 1950 m gs 1 -1 sc (v) col0 sh gr /Times-Italic ff 450.00 scf sf 2700 1950 m gs 1 -1 sc (v) col0 sh gr % Polyline 15.000 slw [90] 0 sd gs clippath 2160 1185 m 2040 1185 l 2040 1472 l 2100 1232 l 2160 1472 l cp eoclip n 2100 3450 m 2100 1200 l gs col0 s gr gr [] 0 sd % arrowhead n 2160 1472 m 2100 1232 l 2040 1472 l 2160 1472 l cp gs 0.00 setgray ef gr col0 s % Polyline [90] 0 sd n 2100 3750 m 2100 4500 l gs col0 s gr [] 0 sd F2psBeginF2psEnd rs %%EndDocument @endspecial 0 1091 a Fl(Figure)15 b(12:)23 b Fk(A)17 b(sphere)e Fj(S)21 b Fk(that)16 b(circumscr)q(ibes)h Fj(f)8 b Fk(,)17 b(e)n(xpanding)0 1173 y(in)25 b(search)g(of)g(a)h(v)n (er)s(te)n(x)f Fj(v)k Fk(to)c(f)n(or)r(m)g(a)g(ne)o(w)f(tetr)o(ahedron) f Fj(t)29 b Fh(=)0 1255 y(con)n(v)q(\()p Fj(f)c Fi([)17 b Fj(v)s Fh(\))p Fk(.)0 1523 y Fp(sphere)25 b(that)f(can)g(shrink)h(or) f(e)o(xpand,)i(b)o(ut)e(al)o(w)o(ays)h(circumscribes)0 1614 y Fj(f)8 b Fp(.)25 b(Suppose)c(the)f(center)g Fj(O)i Fp(of)e Fj(S)j Fp(is)c(initially)g(in\002nitely)h(f)o(ar)f(belo)n(w)0 1706 y Fj(f)8 b Fp(,)26 b(so)e(that)h(the)f(\223inside\224)h(of)g Fj(S)j Fp(is)c(the)h(open)g(halfspace)h(belo)n(w)f Fj(f)8 b Fp(;)0 1797 y(then)21 b Fj(O)i Fp(mo)o(v)o(es)e(up)g(until)g(the)f (portion)i(of)e Fj(S)25 b Fp(abo)o(v)o(e)c Fj(f)29 b Fp(touches)22 b(the)0 1888 y(\002rst)c(v)o(erte)o(x)i Fj(v)h Fp(that)e(is)g(visible)g(from)g(some)h(point)g(\(an)o(y)f(\002x) o(ed)g(point)0 1980 y(will)f(do\))h(in)g(the)g(interior)g(of)g Fj(f)8 b Fp(.)0 2121 y(Let)19 b Fj(t)f Fp(be)i(the)f(tetrahedron)i Fh(con)n(v\()p Fj(f)26 b Fi([)17 b Fj(v)s Fh(\))p Fp(.)24 b(If)19 b(a)g(CDT)g(of)g Fj(X)25 b Fp(e)o(xists,)0 2212 y(then)f Fj(t)e Fp(is)h(constrained)h(Delaunay)-5 b(.)37 b(If)23 b(no)g(eligible)g(v)o(erte)o(x)h(can)f(be)0 2303 y(found,)31 b(or)d(if)f Fj(t)h Fp(is)f(not)h(constrained)i(Delaunay)-5 b(,)31 b(then)d Fj(X)34 b Fp(has)28 b(no)0 2395 y(CDT)-6 b(.)0 2536 y(The)19 b(gift-wrapping)g(algorithm)g(is)g(as)f(follo)n (ws.)23 b(Let)18 b Fj(f)27 b Fp(be)19 b(the)g(seed)0 2627 y(triangle.)27 b(Say)20 b(that)h(both)f(sides)h(of)f Fj(f)29 b Fp(are)20 b Fo(un\002nished)p Fp(.)29 b(Thereafter)m(,)0 2719 y(say)19 b(that)g(a)g(triangular)g(f)o(ace)g(of)g(the)g(gro)n (wing)h(tetrahedralization)f(is)0 2810 y Fo(un\002nished)24 b Fp(if)e(the)g(algorithm)h(has)f(not)h(yet)f(identi\002ed)g(the)h (second)0 2901 y(constrained)29 b(Delaunay)h(tetrahedron)f(that)f (shares)h(the)f(f)o(ace.)52 b(T)-6 b(o)0 2992 y Fo(\002nish)21 b Fp(a)g(f)o(ace)g(is)g(to)f(construct)i(the)e(second)i(tetrahedron,)g (or)f(to)g(de-)0 3084 y(termine)d(that)f(the)h(f)o(ace)g(adjoins)h(the) e(e)o(xterior)h(domain)h(and)f(there)g(is)0 3175 y(no)h(second)i (tetrahedron.)0 3316 y(The)30 b(gift-wrapping)g(algorithm)g(maintains)g (a)g(dictionary)g(\(i.e.)f(a)0 3408 y(hash)20 b(table\))f(of)g (un\002nished)h(f)o(aces,)f(which)h(initially)e(contains)i(both)0 3499 y(sides)i(of)h Fj(f)8 b Fp(.)33 b(Repeat)22 b(the)h(follo)n(wing)f (steps:)30 b(remo)o(v)o(e)23 b(an)g(arbitrary)0 3590 y(un\002nished)c(f)o(ace)f Fj(f)26 b Fp(from)18 b(the)g(dictionary)h (and)f(search)h(for)f(a)g(v)o(erte)o(x)0 3682 y Fj(v)25 b Fp(that)c(\002nishes)h Fj(f)8 b Fp(.)32 b(If)21 b(no)h(v)o(erte)o(x)g (is)g(abo)o(v)o(e)h Fj(f)8 b Fp(,)22 b(then)g Fj(f)30 b Fp(lies)21 b(on)i(the)0 3773 y(boundary)k(of)f(the)f(con)m(v)o(e)o(x) h(hull.)43 b(If)24 b Fj(f)34 b Fp(does)26 b(not)f(lie)g(on)h(the)f (con-)0 3864 y(v)o(e)o(x)18 b(hull)f(boundary)i(and)f(does)h(not)e (bear)h(a)f(notation)h(that)f(indicates)0 3956 y(that)h(it)f(adjoins)h (the)g(e)o(xterior)g(domain,)g(\002nd)g Fj(v)i Fp(through)f(the)f(gro)n (wth)0 4047 y(procedure)27 b(and)g(add)f Fj(t)35 b Fh(=)f(con)n(v\()p Fj(f)d Fi([)23 b Fj(v)s Fh(\))i Fp(to)h(the)g(gro)n(wing)g(tetra-)0 4138 y(hedralization.)49 b(Check)29 b(each)f(f)o(ace)g(of)f Fj(t)p Fp(,)i(e)o(xcept)f Fj(f)8 b Fp(,)29 b(against)f(the)0 4230 y(dictionary)-5 b(.)25 b(If)19 b(a)g(f)o(ace)h(is)f(already)h (present)g(in)f(the)g(dictionary)-5 b(,)20 b(then)0 4321 y(the)27 b(f)o(ace)h(is)e(no)n(w)i(\002nished,)h(so)e(remo)o(v)o(e)h (it)e(from)h(the)g(dictionary)-5 b(.)0 4412 y(Otherwise,)27 b(the)e(f)o(ace)h(is)f(ne)n(w)g(and)i(has)e(one)h(un\002nished)h(side,) g(so)0 4503 y(insert)19 b(it)f(into)h(the)g(dictionary)-5 b(.)0 4645 y(Finishing)20 b(a)g(single)h(f)o(ace)f(tak)o(es)h Fi(O)r Fh(\()p Fj(n)1009 4653 y Fa(v)1046 4645 y Fj(n)1092 4654 y Fa(f)1132 4645 y Fh(\))f Fp(time,)g(because)h(it)e(may)0 4736 y(be)c(necessary)h(to)e(test)g(the)h(visibility)f(of)g(each)i(v)o (erte)o(x)e(from)h(the)g(f)o(ace,)0 4827 y(which)j(is)f(done)h(by)g (testing)f(each)h(v)o(erte)o(x)g(against)f(e)n(v)o(ery)h(constrain-)0 4919 y(ing)29 b(triangle)g(in)f Fj(X)6 b Fp(.)53 b(\(Clearly)-5 b(,)31 b(it)d(is)g(the)h(visibility)f(testing)h(that)0 5010 y(mak)o(es)17 b(gift)e(wrapping)h(CDTs)f(so)h(slo)n(w)-5 b(.\))22 b(Gift)15 b(wrapping)h(thus)g(runs)0 5101 y(in)25 b Fi(O)r Fh(\()p Fj(n)222 5109 y Fa(v)260 5101 y Fj(n)306 5110 y Fa(f)346 5101 y Fj(n)392 5109 y Fa(s)425 5101 y Fh(\))g Fp(time.)43 b(This)25 b(lea)o(v)o(es)g(much)h(room)g(for)f (impro)o(v)o(e-)0 5193 y(ment,)j(which)e(can)g(be)h(realized)f(by)g (using)h(the)f(sweep)g(algorithm)0 5284 y(instead.)d(F)o(or)16 b(practical)h(purposes)i(it)d(seems)h(lik)o(ely)g(that)g(CDT)f(con-) 2100 83 y(struction)j(by)g(gift)g(wrapping)g(can)h(be)f(sped)g(up)h(by) f(using)g(it)g(in)f(con-)2100 174 y(cert)h(with)f(incremental)i(f)o (acet)f(insertion.)2396 390 y Fq(7)83 b(Incremental)23 b(F)n(acet)g(Inser)r(tion)2100 556 y Fp(Because)i(the)g(na)n(\250)-23 b(\021v)o(e)25 b(gift)f(wrapping)i(algorithm)e(is)h(slo)n(w)-5 b(,)25 b(and)h(the)2100 648 y(f)o(aster)31 b(sweep)h(algorithm)f(tak)o (es)h(a)f(good)i(deal)e(of)g(ef)n(fort)g(to)g(im-)2100 739 y(plement)h(and)h(is)f(dif)n(\002cult)f(to)h(mak)o(e)h(rob)o(ust,)i (I)c(suggest)i(a)f(third)2100 830 y(CDT)26 b(construction)i(algorithm.) 46 b(The)27 b(algorithm)g(be)o(gins)h(with)e(a)2100 922 y(Delaunay)h(tetrahedralization)f(of)g(the)f(v)o(ertices)h(of)g(a)f (fully)h(edge-)2100 1013 y(protected)38 b(PLC\227recall)e(that)h(we)g (ha)o(v)o(e)g(constructed)i(both)e(an)2100 1104 y(edge-protected)20 b(PLC)c(and)j(its)e(tetrahedralization)h(in)g(Section)g(5\227)2100 1196 y(and)i(incrementally)f(reco)o(v)o(ers)h(the)f(missing)g(f)o (acets)g(one)h(by)f(one.)2100 1337 y(The)32 b(incremental)h(f)o(acet)g (insertion)f(algorithm)h(seems)f(lik)o(ely)h(to)2100 1428 y(strik)o(e)19 b(the)f(best)h(trade-of)n(f)g(between)g(ease)g(of)g (implementation)g(and)2100 1519 y(speed)k(in)e(man)o(y)i(practical)f (applications.)33 b(Another)22 b(adv)n(antage)i(of)2100 1611 y(the)19 b(algorithm)g(is)f(that)h(there)f(is)h(no)g(need)g(to)g (precompute)h(the)f(tw)o(o-)2100 1702 y(dimensional)d(CDTs)e(of)i(the)f (f)o(acets;)h(these)f(are)h(produced)g(automat-)2100 1793 y(ically)-5 b(.)23 b(Hence,)c(this)g(may)g(be)g(the)g(easiest)g (option)h(to)f(implement.)2100 1934 y(The)d(disadv)n(antage)i(of)e (incremental)h(f)o(acet)f(insertion)g(is)g(that)g(the)g(al-)2100 2026 y(gorithm)h(does)g(not)f(w)o(ork)h(on)g(weakly)g(edge-protected)h (PLCs;)d(the)o(y)2100 2117 y(must)25 b(be)g(fully)g(edge-protected.)43 b(A)24 b(f)o(acet)h(can)h(only)f(be)g(inserted)2100 2208 y(if)e(all)h(the)g(se)o(gments)h(that)f(bound)h(it)e(already)i(appear)g (as)f(edges)h(in)2100 2300 y(the)17 b(tetrahedralization)g(\(including) h(se)o(gments)g(that)e(are)h(not)g(graze-)2100 2391 y(able\).)41 b(This)24 b(means)h(that)g(more)g(ne)n(w)g(v)o(ertices)g(must)f(be)h (inserted)2100 2482 y(\(by)18 b(the)f(algorithm)h(of)g(Section)f(5\))h (to)f(construct)h(a)f(CCDT)g(than)h(for)2100 2574 y(the)28 b(gift-wrapping)g(or)g(sweep)g(algorithms.)50 b(Ho)n(we)n(v)o(er)m(,)31 b(because)2100 2665 y(man)o(y)21 b(of)g(the)g(e)o(xtra)f(v)o(ertices)h (might)g(be)g(inserted)g(later)f(to)h(achie)n(v)o(e)2100 2756 y(high-quality)j(elements,)g(the)e(dif)n(ference)i(is)e(usually)i (small)e(in)h(the)2100 2848 y(\002nal)c(mesh.)2100 2989 y(The)24 b(best)g(w)o(ay)g(to)g(reason)g(about)h(incremental)f(CDT)f (operations,)2100 3080 y(such)e(as)g(inserting)f(or)h(deleting)f(f)o (acets)h(or)g(v)o(ertices,)f(is)g(to)g(imagine)2100 3171 y(that)d(both)h(the)f(underlying)i(PLC)d(and)h(the)h(CDT)e(are)h (incrementally)2100 3263 y(modi\002ed)26 b(at)f(the)h(same)g(time.)42 b(If)25 b(the)h(underlying)h(PLC)d(remains)2100 3354 y(al)o(w)o(ays)e(edge-protected)h(after)e(each)h(operation,)h(then)f(a) f(CDT)g(e)o(x-)2100 3445 y(ists)h(after)g(each)g(step)h(as)f(well,)g (and)h(the)g(incremental)f(approach)i(is)2100 3537 y(viable.)2100 3678 y(Imagine)e(a)f(PLC)e Fj(X)27 b Fp(whose)22 b(CDT)e Fj(T)32 b Fp(has)21 b(been)h(constructed.)30 b(Let)2100 3769 y Fj(f)24 b Fp(be)15 b(a)h(f)o(acet)g(we)f(w)o(ould)h(lik)o(e)g (to)f(insert)h(into)f(the)h(PLC)e(\(and)i(reco)o(v)o(er)2100 3861 y(in)24 b(the)f(tetrahedralization\).)38 b(The)24 b(se)o(gments)g(that)g(bound)h Fj(f)32 b Fp(must)2100 3952 y(already)18 b(be)f(present)h(in)f Fj(X)6 b Fp(,)17 b(and)h(the)o(y)f(must)h(appear)g(as)f(edges)h(in)f Fj(T)11 b Fp(.)2100 4043 y(Let)24 b Fj(X)2293 4011 y Fa(f)2365 4043 y Fh(=)32 b Fj(X)27 b Fi([)22 b(f)p Fj(f)8 b Fi(g)p Fp(.)41 b(If)24 b Fj(X)31 b Fp(is)24 b(weakly)h(edge-protected,)i(then) 2100 4134 y(so)g(is)f Fj(X)2338 4103 y Fa(f)2378 4134 y Fp(,)i(because)g Fj(X)2757 4103 y Fa(f)2824 4134 y Fp(has)f(e)o(xactly)g(the)g(same)g(se)o(gments)g(and)2100 4226 y(v)o(ertices)22 b(as)g Fj(X)6 b Fp(.)31 b(\(F)o(acets)22 b(ha)o(v)o(e)g(no)g(ef)n(fect)g(on)g(whether)g(a)g(se)o(gment)2100 4317 y(is)j(strongly)g(Delaunay)-5 b(.\))43 b(Therefore,)26 b Fj(X)3219 4285 y Fa(f)3284 4317 y Fp(also)f(has)h(a)f(CDT)f Fj(T)3842 4285 y Fa(f)3881 4317 y Fp(.)2100 4408 y(The)g(goal)h(of)f(a) g(f)o(acet)g(insertion)h(algorithm)g(is)e(to)h(con)m(v)o(ert)h Fj(T)35 b Fp(into)2100 4500 y Fj(T)2156 4468 y Fa(f)2195 4500 y Fp(.)23 b(Such)c(an)g(algorithm)h(is)e(described)i(shortly)-5 b(.)2100 4641 y Fo(Incr)m(emental)31 b(facet)f(insertion)g Fp(tak)o(es)h(adv)n(antage)g(of)f(this)g(f)o(act)g(to)2100 4732 y(construct)23 b(a)g(CDT)f(from)g(an)h(ordinary)h(Delaunay)f (tetrahedraliza-)2100 4824 y(tion.)g(T)-6 b(o)18 b(\002nd)g(the)h(CDT)e (of)i(an)f(edge-protected)j(PLC)c Fj(Y)f Fp(,)i(let)g Fj(X)24 b Fp(be)2100 4915 y(a)c(PLC)f(containing)j(all)e(the)g(v)o (ertices)g(and)h(se)o(gments)g(of)g Fj(Y)16 b Fp(,)k(b)o(ut)g(no)2100 5006 y(f)o(acets.)29 b(\(Note)21 b(that)f(there)h(is)f(no)i(need)f(for) g(the)g(algorithm)g(to)g(actu-)2100 5098 y(ally)i(store)h Fj(X)6 b Fp(;)25 b Fj(X)k Fp(is)23 b(just)h(a)f(mathematical)h (construction)g(for)f(our)2100 5189 y(understanding.\))28 b(Let)20 b Fj(T)30 b Fp(be)20 b(the)g(Delaunay)h(tetrahedralization)g (of)2100 5280 y(the)h(v)o(ertices)g(in)f Fj(X)6 b Fp(.)32 b(Because)22 b Fj(Y)38 b Fp(is)22 b(fully)f(edge-protected,)j(e)n(v)o (ery)p eop %%Page: 10 10 10 9 bop 30 854 a @beginspecial 0 @llx 0 @lly 442 @urx 217 @ury 2088 @rwi @setspecial %%BeginDocument: facetin.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: facetin.eps %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Sun Sep 16 04:19:29 2001 %%For: jrs@complex.localdomain (Jonathan Shewchuk) %%BoundingBox: 0 0 442 217 %%Magnification: 1.0000 %%EndComments /MyAppDict 100 dict dup begin def /$F2psDict 200 dict def F2psDictbeginF2psDict begin F2psDictbeginF2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 217 moveto 0 0 lineto 442 0 lineto 442 217 lineto closepath clip newpath -31.0 248.0 translate 1 -1 scale % This junk string is used by the show operators /PATsstr 1 string def /PATawidthshow { % cx cy cchar rx ry string % Loop over each character in the string { % cx cy cchar rx ry char % Show the character dup % cx cy cchar rx ry char char PATsstr dup 0 4 -1 roll put % cx cy cchar rx ry char (char) false charpath % cx cy cchar rx ry char /clip load PATdraw % Move past the character (charpath modified the % current point) currentpoint % cx cy cchar rx ry char x y newpath moveto % cx cy cchar rx ry char % Reposition by cx,cy if the character in the string is cchar 3 index eq { % cx cy cchar rx ry 4 index 4 index rmoveto } if % Reposition all characters by rx ry 2 copy rmoveto % cx cy cchar rx ry } forall pop pop pop pop pop % - currentpoint newpath moveto } bind def /PATcg { 7 dict dup begin /lw currentlinewidth def /lc currentlinecap def /lj currentlinejoin def /ml currentmiterlimit def /ds [ currentdash ] def /cc [ currentrgbcolor ] def /cm matrix currentmatrix def end } bind def % PATdraw - calculates the boundaries of the object and % fills it with the current pattern /PATdraw { % proc save exch PATpcalc % proc nw nh px py 5 -1 roll exec % nw nh px py newpath PATfill % - restore } bind def % PATfill - performs the tiling for the shape /PATfill { % nw nh px py PATfill - PATDict /CurrentPattern get dup begin setfont % Set the coordinate system to Pattern Space PatternGState PATsg % Set the color for uncolored pattezns PaintType 2 eq { PATDict /PColor get PATsc } if % Create the string for showing 3 index string % nw nh px py str % Loop for each of the pattern sources 0 1 Multi 1 sub { % nw nh px py str source % Move to the starting location 3 index 3 index % nw nh px py str source px py moveto % nw nh px py str source % For multiple sources, set the appropriate color Multi 1 ne { dup PC exch get PATsc } if % Set the appropriate string for the source 0 1 7 index 1 sub { 2 index exch 2 index put } for pop % Loop over the number of vertical cells 3 index % nw nh px py str nh { % nw nh px py str currentpoint % nw nh px py str cx cy 2 index oldshow % nw nh px py str cx cy YStep add moveto % nw nh px py str } repeat % nw nh px py str } for 5 { pop } repeat end } bind def % PATkshow - kshow with the current pattezn /PATkshow { % proc string exch bind % string proc 1 index 0 get % string proc char % Loop over all but the last character in the string 0 1 4 index length 2 sub { % string proc char idx % Find the n+1th character in the string 3 index exch 1 add get % string proe char char+1 exch 2 copy % strinq proc char+1 char char+1 char % Now show the nth character PATsstr dup 0 4 -1 roll put % string proc chr+1 chr chr+1 (chr) false charpath % string proc char+1 char char+1 /clip load PATdraw % Move past the character (charpath modified the current point) currentpoint newpath moveto % Execute the user proc (should consume char and char+1) mark 3 1 roll % string proc char+1 mark char char+1 4 index exec % string proc char+1 mark... cleartomark % string proc char+1 } for % Now display the last character PATsstr dup 0 4 -1 roll put % string proc (char+1) false charpath % string proc /clip load PATdraw neewath pop pop % - } bind def % PATmp - the makepattern equivalent /PATmp { % patdict patmtx PATmp patinstance exch dup length 7 add % We will add 6 new entries plus 1 FID dict copy % Create a new dictionary begin % Matrix to install when painting the pattern TilingType PATtcalc /PatternGState PATcg def PatternGState /cm 3 -1 roll put % Check for multi pattern sources (Level 1 fast color patterns) currentdict /Multi known not { /Multi 1 def } if % Font dictionary definitions /FontType 3 def % Create a dummy encoding vector /Encoding 256 array def 3 string 0 1 255 { Encoding exch dup 3 index cvs cvn put } for pop /FontMatrix matrix def /FontBBox BBox def /BuildChar { mark 3 1 roll % mark dict char exch begin Multi 1 ne {PaintData exch get}{pop} ifelse % mark [paintdata] PaintType 2 eq Multi 1 ne or { XStep 0 FontBBox aload pop setcachedevice } { XStep 0 setcharwidth } ifelse currentdict % mark [paintdata] dict /PaintProc load % mark [paintdata] dict paintproc end gsave false PATredef exec true PATredef grestore cleartomark % - } bind def currentdict end % newdict /foo exch % /foo newlict definefont % newfont } bind def % PATpcalc - calculates the starting point and width/height % of the tile fill for the shape /PATpcalc { % - PATpcalc nw nh px py PATDict /CurrentPattern get begin gsave % Set up the coordinate system to Pattern Space % and lock down pattern PatternGState /cm get setmatrix BBox aload pop pop pop translate % Determine the bounding box of the shape pathbbox % llx lly urx ury grestore % Determine (nw, nh) the # of cells to paint width and height PatHeight div ceiling % llx lly urx qh 4 1 roll % qh llx lly urx PatWidth div ceiling % qh llx lly qw 4 1 roll % qw qh llx lly PatHeight div floor % qw qh llx ph 4 1 roll % ph qw qh llx PatWidth div floor % ph qw qh pw 4 1 roll % pw ph qw qh 2 index sub cvi abs % pw ph qs qh-ph exch 3 index sub cvi abs exch % pw ph nw=qw-pw nh=qh-ph % Determine the starting point of the pattern fill %(px, py) 4 2 roll % nw nh pw ph PatHeight mul % nw nh pw py exch % nw nh py pw PatWidth mul exch % nw nh px py end } bind def % Save the original routines so that we can use them later on /oldfill /fill load def /oldeofill /eofill load def /oldstroke /stroke load def /oldshow /show load def /oldashow /ashow load def /oldwidthshow /widthshow load def /oldawidthshow /awidthshow load def /oldkshow /kshow load def % These defs are necessary so that subsequent procs don't bind in % the originals /fill { oldfill } bind def /eofill { oldeofill } bind def /stroke { oldstroke } bind def /show { oldshow } bind def /ashow { oldashow } bind def /widthshow { oldwidthshow } bind def /awidthshow { oldawidthshow } bind def /kshow { oldkshow } bind def /PATredef { MyAppDict begin { /fill { /clip load PATdraw newpath } bind def /eofill { /eoclip load PATdraw newpath } bind def /stroke { PATstroke } bind def /show { 0 0 null 0 0 6 -1 roll PATawidthshow } bind def /ashow { 0 0 null 6 3 roll PATawidthshow } bind def /widthshow { 0 0 3 -1 roll PATawidthshow } bind def /awidthshow { PATawidthshow } bind def /kshow { PATkshow } bind def } { /fill { oldfill } bind def /eofill { oldeofill } bind def /stroke { oldstroke } bind def /show { oldshow } bind def /ashow { oldashow } bind def /widthshow { oldwidthshow } bind def /awidthshow { oldawidthshow } bind def /kshow { oldkshow } bind def } ifelse end } bind def false PATredef % Conditionally define setcmykcolor if not available /setcmykcolor where { pop } { /setcmykcolor { 1 sub 4 1 roll 3 { 3 index add neg dup 0 lt { pop 0 } if 3 1 roll } repeat setrgbcolor - pop } bind def } ifelse /PATsc { % colorarray aload length % c1 ... cn length dup 1 eq { pop setgray } { 3 eq { setrgbcolor } { setcmykcolor } ifelse } ifelse } bind def /PATsg { % dict begin lw setlinewidth lc setlinecap lj setlinejoin ml setmiterlimit ds aload pop setdash cc aload pop setrgbcolor cm setmatrix end } bind def /PATDict 3 dict def /PATsp { true PATredef PATDict begin /CurrentPattern exch def % If it's an uncolored pattern, save the color CurrentPattern /PaintType get 2 eq { /PColor exch def } if /CColor [ currentrgbcolor ] def end } bind def % PATstroke - stroke with the current pattern /PATstroke { countdictstack save mark { currentpoint strokepath moveto PATpcalc % proc nw nh px py clip newpath PATfill } stopped { (*** PATstroke Warning: Path is too complex, stroking with gray) = cleartomark restore countdictstack exch sub dup 0 gt { { end } repeat } { pop } ifelse gsave 0.5 setgray oldstroke grestore } { pop restore pop } ifelse newpath } bind def /PATtcalc { % modmtx tilingtype PATtcalc tilematrix % Note: tiling types 2 and 3 are not supported gsave exch concat % tilingtype matrix currentmatrix exch % cmtx tilingtype % Tiling type 1 and 3: constant spacing 2 ne { % Distort the pattern so that it occupies % an integral number of device pixels dup 4 get exch dup 5 get exch % tx ty cmtx XStep 0 dtransform round exch round exch % tx ty cmtx dx.x dx.y XStep div exch XStep div exch % tx ty cmtx a b 0 YStep dtransform round exch round exch % tx ty cmtx a b dy.x dy.y YStep div exch YStep div exch % tx ty cmtx a b c d 7 -3 roll astore % { a b c d tx ty } } if grestore } bind def /PATusp { false PATredef PATDict begin CColor PATsc end } bind def % horizontal lines 11 dict begin /PaintType 1 def /PatternType 1 def /TilingType 1 def /BBox [0 0 1 1] def /XStep 1 def /YStep 1 def /PatWidth 1 def /PatHeight 1 def /Multi 2 def /PaintData [ { clippath } bind { 16 8 true [ 16 0 0 -8 0 8 ] {< ffff000000000000ffff000000000000>} imagemask } bind ] def /PaintProc { pop exec fill } def currentdict end /P9 exch def /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def F2psBeginF2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline n 3300 3300 m 3975 3600 l 4500 3600 l 5100 3300 l 4350 3150 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P9 [16 0 0 -8 220.00 210.00] PATmp PATsp ef gr PATusp % Polyline n 6000 3300 m 6675 3600 l 7200 3600 l 7800 3300 l 7050 3150 l cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def 15.00 15.00 sc P9 [16 0 0 -8 400.00 210.00] PATmp PATsp ef gr PATusp % Polyline 7.500 slw [60] 0 sd n 600 1200 m 2400 1200 l gs col0 s gr [] 0 sd % Ellipse n 600 600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 600 1200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 600 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 1800 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 2400 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 2400 1200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 2400 600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 1800 600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 1200 600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 1200 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3300 600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3300 1200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3300 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 4500 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 5100 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 5100 1200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 5100 600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 4500 600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3900 600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3900 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6000 600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6000 1200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6000 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7200 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7800 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7800 1200 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7800 600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7200 600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6600 600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6600 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 1500 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 4200 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6900 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 600 3300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 1875 2625 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 2400 3300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 2100 3900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 1500 4050 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 1200 3900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 1800 3600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 1275 3600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 1125 2625 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 1650 3150 75 75 0 360 DrawEllipse gs col0 s gr % Ellipse n 3300 3300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 4575 2625 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 5100 3300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 4800 3900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 4200 4050 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3900 3900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 4500 3600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3975 3600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 3825 2625 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 4350 3150 75 75 0 360 DrawEllipse gs col0 s gr % Ellipse n 6000 3300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7275 2625 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7800 3300 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7500 3900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6900 4050 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6600 3900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7200 3600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6675 3600 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 6525 2625 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr gs col0 s gr % Ellipse n 7050 3150 75 75 0 360 DrawEllipse gs col0 s gr % Polyline 15.000 slw n 600 1200 m 1200 1800 l gs col0 s gr % Polyline n 1200 1800 m 1200 600 l gs col0 s gr % Polyline n 1200 600 m 600 1200 l gs col0 s gr % Polyline n 1800 600 m 1200 600 l gs col0 s gr % Polyline n 1800 600 m 1800 1800 l gs col0 s gr % Polyline n 1800 1800 m 1200 1800 l gs col0 s gr % Polyline n 1800 1800 m 2400 1200 l gs col0 s gr % Polyline n 2400 1200 m 1800 600 l gs col0 s gr % Polyline n 600 1200 m 600 1800 l gs col0 s gr % Polyline n 600 1800 m 1200 1800 l gs col0 s gr % Polyline n 1200 600 m 600 600 l gs col0 s gr % Polyline n 600 600 m 600 1200 l gs col0 s gr % Polyline n 1800 600 m 2400 600 l gs col0 s gr % Polyline n 2400 600 m 2400 1200 l gs col0 s gr % Polyline n 2400 1200 m 2400 1800 l gs col0 s gr % Polyline n 2400 1800 m 1800 1800 l gs col0 s gr % Polyline n 3300 1200 m 3900 1800 l gs col0 s gr % Polyline n 3900 600 m 3300 1200 l gs col0 s gr % Polyline n 4500 600 m 3900 600 l gs col0 s gr % Polyline n 4500 1800 m 3900 1800 l gs col0 s gr % Polyline n 4500 1800 m 5100 1200 l gs col0 s gr % Polyline n 5100 1200 m 4500 600 l gs col0 s gr % Polyline n 3300 1200 m 3300 1800 l gs col0 s gr % Polyline n 3300 1800 m 3900 1800 l gs col0 s gr % Polyline n 3900 600 m 3300 600 l gs col0 s gr % Polyline n 3300 600 m 3300 1200 l gs col0 s gr % Polyline n 4500 600 m 5100 600 l gs col0 s gr % Polyline n 5100 600 m 5100 1200 l gs col0 s gr % Polyline n 5100 1200 m 5100 1800 l gs col0 s gr % Polyline n 5100 1800 m 4500 1800 l gs col0 s gr % Polyline 7.500 slw n 5400 1125 m 5400 1275 l 5550 1275 l 5550 1350 l 5700 1200 l 5550 1050 l 5550 1125 l cp gs col7 0.00 shd ef gr gs col0 s gr % Polyline 15.000 slw n 6000 1200 m 6600 1800 l gs col0 s gr % Polyline n 6600 600 m 6000 1200 l gs col0 s gr % Polyline n 7200 600 m 6600 600 l gs col0 s gr % Polyline n 7200 1800 m 6600 1800 l gs col0 s gr % Polyline n 7200 1800 m 7800 1200 l gs col0 s gr % Polyline n 7800 1200 m 7200 600 l gs col0 s gr % Polyline n 6000 1200 m 6000 1800 l gs col0 s gr % Polyline n 6000 1800 m 6600 1800 l gs col0 s gr % Polyline n 6600 600 m 6000 600 l gs col0 s gr % Polyline n 6000 600 m 6000 1200 l gs col0 s gr % Polyline n 7200 600 m 7800 600 l gs col0 s gr % Polyline n 7800 600 m 7800 1200 l gs col0 s gr % Polyline n 7800 1200 m 7800 1800 l gs col0 s gr % Polyline n 7800 1800 m 7200 1800 l gs col0 s gr % Polyline n 6600 600 m 7800 1200 l gs col0 s gr % Polyline n 1200 600 m 1500 1800 l gs col0 s gr % Polyline n 1500 1800 m 1800 600 l gs col0 s gr % Polyline n 6000 1200 m 6900 1800 l gs col0 s gr % Polyline n 6900 1800 m 7800 1200 l gs col0 s gr % Polyline n 6000 1200 m 7800 1200 l gs col0 s gr % Polyline n 3300 1200 m 5100 1200 l gs col0 s gr % Polyline 7.500 slw [60] 0 sd n 1125 2625 m 1650 3150 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 1650 3150 m 1875 2625 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 600 3300 m 1200 3900 l gs col0 s gr % Polyline n 1200 3900 m 1275 3600 l gs col0 s gr % Polyline n 1275 3600 m 1500 4050 l gs col0 s gr % Polyline n 1200 3900 m 1500 4050 l gs col0 s gr % Polyline n 1500 4050 m 2100 3900 l gs col0 s gr % Polyline n 2100 3900 m 2400 3300 l gs col0 s gr % Polyline n 1875 2625 m 2400 3300 l gs col0 s gr % Polyline n 1125 2625 m 1875 2625 l gs col0 s gr % Polyline n 600 3300 m 1125 2625 l gs col0 s gr % Polyline 30.000 slw [120] 0 sd n 1650 3150 m 600 3300 l gs col0 s gr [] 0 sd % Polyline [120] 0 sd n 2400 3300 m 1650 3150 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 1500 4050 m 1800 3600 l gs col0 s gr % Polyline n 1800 3600 m 2100 3900 l gs col0 s gr % Polyline 7.500 slw [60] 0 sd n 1200 3900 m 2100 3900 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 1200 3900 m 1650 3150 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 1650 3150 m 2100 3900 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 1125 2625 m 1275 3600 l gs col0 s gr % Polyline n 1800 3600 m 1875 2625 l gs col0 s gr % Polyline n 1875 2625 m 1275 3600 l gs col0 s gr % Polyline 45.000 slw n 600 3300 m 1275 3600 l gs col0 s gr % Polyline n 1275 3600 m 1800 3600 l gs col0 s gr % Polyline n 1800 3600 m 2400 3300 l gs col0 s gr % Polyline 7.500 slw n 1125 2625 m 1200 3900 l gs col0 s gr % Polyline n 1875 2625 m 2100 3900 l gs col0 s gr % Polyline n 1125 2625 m 1500 4050 l gs col0 s gr % Polyline n 1500 4050 m 1875 2625 l gs col0 s gr % Polyline n 1200 3900 m 1875 2625 l gs col0 s gr % Polyline [60] 0 sd n 6525 2625 m 7050 3150 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 7050 3150 m 7275 2625 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 6000 3300 m 6600 3900 l gs col0 s gr % Polyline n 6600 3900 m 6675 3600 l gs col0 s gr % Polyline n 6675 3600 m 6900 4050 l gs col0 s gr % Polyline n 6600 3900 m 6900 4050 l gs col0 s gr % Polyline n 6900 4050 m 7500 3900 l gs col0 s gr % Polyline n 7500 3900 m 7800 3300 l gs col0 s gr % Polyline n 7275 2625 m 7800 3300 l gs col0 s gr % Polyline n 6525 2625 m 7275 2625 l gs col0 s gr % Polyline n 6000 3300 m 6525 2625 l gs col0 s gr % Polyline 30.000 slw [120] 0 sd n 7050 3150 m 6000 3300 l gs col0 s gr [] 0 sd % Polyline [120] 0 sd n 7800 3300 m 7050 3150 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 6900 4050 m 7200 3600 l gs col0 s gr % Polyline n 7200 3600 m 7500 3900 l gs col0 s gr % Polyline 7.500 slw [60] 0 sd n 6600 3900 m 7500 3900 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 6600 3900 m 7050 3150 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 7050 3150 m 7500 3900 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 6525 2625 m 6675 3600 l gs col0 s gr % Polyline n 7200 3600 m 7275 2625 l gs col0 s gr % Polyline n 7275 2625 m 6675 3600 l gs col0 s gr % Polyline 45.000 slw n 6000 3300 m 6675 3600 l gs col0 s gr % Polyline n 6675 3600 m 7200 3600 l gs col0 s gr % Polyline n 7200 3600 m 7800 3300 l gs col0 s gr % Polyline 7.500 slw [60] 0 sd n 3825 2625 m 4350 3150 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 4350 3150 m 4575 2625 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 3300 3300 m 3900 3900 l gs col0 s gr % Polyline n 3900 3900 m 3975 3600 l gs col0 s gr % Polyline n 3975 3600 m 4200 4050 l gs col0 s gr % Polyline n 3900 3900 m 4200 4050 l gs col0 s gr % Polyline n 4200 4050 m 4800 3900 l gs col0 s gr % Polyline n 4800 3900 m 5100 3300 l gs col0 s gr % Polyline n 4575 2625 m 5100 3300 l gs col0 s gr % Polyline n 3825 2625 m 4575 2625 l gs col0 s gr % Polyline n 3300 3300 m 3825 2625 l gs col0 s gr % Polyline 30.000 slw [120] 0 sd n 4350 3150 m 3300 3300 l gs col0 s gr [] 0 sd % Polyline [120] 0 sd n 5100 3300 m 4350 3150 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 4200 4050 m 4500 3600 l gs col0 s gr % Polyline n 4500 3600 m 4800 3900 l gs col0 s gr % Polyline 7.500 slw [60] 0 sd n 3900 3900 m 4800 3900 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 3900 3900 m 4350 3150 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 4350 3150 m 4800 3900 l gs col0 s gr [] 0 sd % Polyline 15.000 slw n 3825 2625 m 3975 3600 l gs col0 s gr % Polyline n 4500 3600 m 4575 2625 l gs col0 s gr % Polyline n 4575 2625 m 3975 3600 l gs col0 s gr % Polyline 45.000 slw n 3300 3300 m 3975 3600 l gs col0 s gr % Polyline n 3975 3600 m 4500 3600 l gs col0 s gr % Polyline n 4500 3600 m 5100 3300 l gs col0 s gr % Polyline 7.500 slw n 6675 3600 m 7500 3900 l gs col0 s gr % Polyline n 2700 1125 m 2700 1275 l 2850 1275 l 2850 1350 l 3000 1200 l 2850 1050 l 2850 1125 l cp gs col7 0.00 shd ef gr gs col0 s gr % Polyline n 2700 3225 m 2700 3375 l 2850 3375 l 2850 3450 l 3000 3300 l 2850 3150 l 2850 3225 l cp gs col7 0.00 shd ef gr gs col0 s gr % Polyline n 5400 3225 m 5400 3375 l 5550 3375 l 5550 3450 l 5700 3300 l 5550 3150 l 5550 3225 l cp gs col7 0.00 shd ef gr gs col0 s gr % Polyline 30.000 slw n 6675 3600 m 7050 3150 l gs col0 s gr % Polyline n 7050 3150 m 7200 3600 l gs col0 s gr F2psBeginF2psEnd rs end %%EndDocument @endspecial 0 1019 a Fl(Figure)30 b(13:)48 b Fk(T)-9 b(w)o(o-)31 b(and)g(three-dimensional)c(e)n(xamples)k(of)0 1102 y(inser)s(ting)18 b(a)i(f)n(acet)g(into)f(a)h(CDT)-9 b(.)0 1367 y Fp(se)o(gment)20 b(in)e Fj(X)25 b Fp(is)19 b(strongly)g(Delaunay)-5 b(,)20 b(so)f Fj(T)30 b Fp(is)18 b(the)h(CDT)f(of)h Fj(X)6 b Fp(.)0 1508 y(Ne)o(xt,)23 b(insert)g(the)g(f)o(acets)g(of)g Fj(Y)39 b Fp(into)23 b Fj(X)6 b Fp(,)24 b(one)f(by)g(one.)36 b(W)m(ith)22 b(each)0 1600 y(f)o(acet)27 b(insertion,)i(update)f Fj(T)37 b Fp(so)27 b(it)g(is)f(still)g(the)h(CDT)f(of)h Fj(X)6 b Fp(.)48 b(The)0 1691 y(k)o(e)o(y)35 b(observ)n(ation)h(is)d(that)h (because)i Fj(X)k Fp(al)o(w)o(ays)35 b(remains)f(edge-)0 1782 y(protected,)18 b(this)f(update)h(is)f(al)o(w)o(ays)h(possible.)23 b(When)18 b(all)e(the)i(f)o(acets)0 1874 y(ha)o(v)o(e)28 b(been)h(inserted,)i Fj(X)45 b Fh(=)39 b Fj(Y)45 b Fp(and)28 b Fj(T)39 b Fp(is)28 b(the)g(CDT)f(of)h Fj(Y)17 b Fp(\227or)0 1965 y(w)o(ould)23 b(be)g(if)f Fj(T)33 b Fp(didn')o(t)23 b(co)o(v)o(er)g(the)f(entire)h(con)m(v)o(e)o(x)h(hull)e(of)h(the)g (tri-)0 2056 y(angulation)h(domain.)35 b(The)22 b(\002nal)g(step)h(is)f (to)h(remo)o(v)o(e)g(from)f Fj(T)33 b Fp(an)o(y)0 2148 y(tetrahedra)19 b(that)g(do)h(not)f(lie)f(in)h(the)g(triangulation)g (domain.)0 2289 y(Let)j(us)g(consider)h(an)f(algorithm)h(for)f(reco)o (v)o(ering)h(a)f(f)o(acet)h Fj(f)8 b Fp(.)33 b(Ho)n(w)0 2380 y(does)27 b Fj(T)36 b Fp(transform)26 b(into)g Fj(T)758 2348 y Fa(f)797 2380 y Fp(?)45 b(First,)26 b(\002nd)g(all)f(the)h (tetrahedra)h(in)0 2472 y Fj(T)41 b Fp(that)31 b(intersect)f(the)h (relati)n(v)o(e)g(interior)f(of)h Fj(f)8 b Fp(.)59 b(It)30 b(may)h(be)g(that)0 2563 y Fj(f)37 b Fp(is)29 b(already)h(represented)h (as)e(a)g(union)h(of)f(triangular)h(f)o(aces,)i(in)0 2654 y(which)18 b(case)g(there)f(is)g(nothing)i(to)e(do.)23 b(Otherwise,)17 b(the)h(ne)o(xt)g(step)f(is)0 2746 y(to)24 b(delete)h(from)f Fj(T)35 b Fp(each)24 b(tetrahedron)i(whose)f (interior)f(intersects)0 2837 y Fj(f)8 b Fp(,)23 b(as)f(Figure)g(13)g (illustrates.)32 b(\(T)-5 b(etrahedra)22 b(that)g(intersect)g Fj(f)30 b Fp(only)0 2928 y(on)23 b(their)g(boundaries)i(stay)e(put.\)) 35 b(It)22 b(is)h(easy)g(to)g(v)o(erify)g(that)g(e)n(v)o(ery)0 3019 y(other)g(tetrahedron)h(is)e(still)f(constrained)j(Delaunay)-5 b(,)25 b(and)e(so)g(must)0 3111 y(be)c(present)h(in)e(the)h(ne)n(w)h (CDT)-6 b(.)0 3252 y(Ne)o(xt,)22 b(use)f(the)h(na)n(\250)-23 b(\021v)o(e)21 b(gift-wrapping)h(algorithm)g(to)f(retriangulate)0 3343 y(the)26 b(polygonal)i(ca)o(vities)e(created)h(on)g(each)g(side)g (of)f Fj(f)8 b Fp(.)46 b(Be)26 b(fore-)0 3435 y(w)o(arned)19 b(that)e(there)h(may)g(be)g(more)h(than)f(one)g(polygonal)i(ca)o(vity)d (on)0 3526 y(each)k(side)f(of)g Fj(f)8 b Fp(,)20 b(because)h(some)f (triangular)g(f)o(aces)h(of)f(the)g(tetrahe-)0 3617 y(dralization)f (might)g(already)h(conform)g(to)f Fj(f)27 b Fp(before)19 b Fj(f)27 b Fp(is)19 b(inserted.)0 3758 y(F)o(or)27 b(most)g(domains,)j (the)e(polygonal)h(ca)o(vities)e(will)f(be)i(bounded)0 3850 y(by)19 b(a)f(small)f(number)j(of)e(triangular)g(f)o(aces,)g(so)h (the)f(poor)h(time)e(com-)0 3941 y(ple)o(xity)j(of)g(na)n(\250)-23 b(\021v)o(e)21 b(gift)f(wrapping)h(is)e(unlik)o(ely)i(to)f(be)h(a)f(b)o (urden.)27 b(Of)0 4032 y(course,)f(it)d(is)h(possible)g(to)g(design)h (e)o(xamples)g(where)f(the)g(ca)o(vities)0 4124 y(ha)o(v)o(e)15 b(man)o(y)h(f)o(aces,)g(so)f(the)g(incremental)g(f)o(acet)g(insertion)g (algorithm)0 4215 y(may)20 b(be)g(e)n(v)o(en)h(slo)n(wer)e(than)i(gift) e(wrapping)h(the)g(whole)g(PLC)f(from)0 4306 y(scratch.)j(Such)16 b(e)o(xamples)g(are)f(lik)o(ely)h(to)f(be)h(the)f(e)o(xception)h(in)g (prac-)0 4398 y(tice.)0 4539 y(T)-6 b(o)22 b(retriangulate)h(a)g(ca)o (vity)-5 b(,)23 b(let)f Fj(Z)28 b Fp(be)22 b(a)h(PLC)e(consisting)j (only)f(of)0 4630 y(the)j(triangular)g(f)o(aces)g(that)g(bound)h(one)g (ca)o(vity)-5 b(,)27 b(plus)f(their)g(edges)0 4721 y(and)34 b(v)o(ertices.)66 b(Happily)-5 b(,)37 b(the)c(na)n(\250)-23 b(\021v)o(e)34 b(gift-wrapping)f(algorithm)0 4813 y(w)o(orks)22 b(correctly)f(e)n(v)o(en)h(if)e(some)h(or)g(all)g(of)g(the)g(f)o(acets) g(on)g(the)g(con-)0 4904 y(v)o(e)o(x)e(hull)f(of)g(the)g(re)o(gion)h (being)g(triangulated)g(are)f(left)g(unspeci\002ed.)0 4995 y(So)j(when)h(a)g(polygonal)h(ca)o(vity)f(is)f(triangulated,)h Fj(f)30 b Fp(may)22 b(be)g(omit-)0 5087 y(ted)28 b(from)h(the)f (description)i(of)e(the)g(ca)o(vity)-5 b(.)52 b(Therefore,)31 b(there)d(is)0 5178 y(no)e(need)g(to)g(precompute)h(the)f(tw)o (o-dimensional)h(CDT)d(of)i Fj(f)34 b Fp(be-)0 5269 y(fore)18 b(inserting)h(it.)j(When)c(the)h(ca)o(vity)f(is)g(tetrahedralized,)g (the)h(tw)o(o-)2130 1469 y @beginspecial 0 @llx 0 @lly 424 @urx 358 @ury 2088 @rwi @setspecial %%BeginDocument: insert.eps %!PS-Adobe-2.0 EPSF-2.0 %%Title: insert.eps %%Creator: fig2dev Version 3.2 Patchlevel 3c %%CreationDate: Tue May 7 23:29:44 2002 %%For: jrs@complex.eecs.berkeley.edu (Jonathan Shewchuk) %%BoundingBox: 0 0 424 358 %%Magnification: 1.0000 %%EndComments /$F2psDict 200 dict def F2psDictbeginF2psDict begin F2psDictbeginF2psDict /mtrx matrix put /col-1 {0 setgray} bind def /col0 {0.000 0.000 0.000 srgb} bind def /col1 {0.000 0.000 1.000 srgb} bind def /col2 {0.000 1.000 0.000 srgb} bind def /col3 {0.000 1.000 1.000 srgb} bind def /col4 {1.000 0.000 0.000 srgb} bind def /col5 {1.000 0.000 1.000 srgb} bind def /col6 {1.000 1.000 0.000 srgb} bind def /col7 {1.000 1.000 1.000 srgb} bind def /col8 {0.000 0.000 0.560 srgb} bind def /col9 {0.000 0.000 0.690 srgb} bind def /col10 {0.000 0.000 0.820 srgb} bind def /col11 {0.530 0.810 1.000 srgb} bind def /col12 {0.000 0.560 0.000 srgb} bind def /col13 {0.000 0.690 0.000 srgb} bind def /col14 {0.000 0.820 0.000 srgb} bind def /col15 {0.000 0.560 0.560 srgb} bind def /col16 {0.000 0.690 0.690 srgb} bind def /col17 {0.000 0.820 0.820 srgb} bind def /col18 {0.560 0.000 0.000 srgb} bind def /col19 {0.690 0.000 0.000 srgb} bind def /col20 {0.820 0.000 0.000 srgb} bind def /col21 {0.560 0.000 0.560 srgb} bind def /col22 {0.690 0.000 0.690 srgb} bind def /col23 {0.820 0.000 0.820 srgb} bind def /col24 {0.500 0.190 0.000 srgb} bind def /col25 {0.630 0.250 0.000 srgb} bind def /col26 {0.750 0.380 0.000 srgb} bind def /col27 {1.000 0.500 0.500 srgb} bind def /col28 {1.000 0.630 0.630 srgb} bind def /col29 {1.000 0.750 0.750 srgb} bind def /col30 {1.000 0.880 0.880 srgb} bind def /col31 {1.000 0.840 0.000 srgb} bind def end save newpath 0 358 moveto 0 0 lineto 424 0 lineto 424 358 lineto closepath clip newpath -13.0 407.0 translate 1 -1 scale /cp {closepath} bind def /ef {eofill} bind def /gr {grestore} bind def /gs {gsave} bind def /sa {save} bind def /rs {restore} bind def /l {lineto} bind def /m {moveto} bind def /rm {rmoveto} bind def /n {newpath} bind def /s {stroke} bind def /sh {show} bind def /slc {setlinecap} bind def /slj {setlinejoin} bind def /slw {setlinewidth} bind def /srgb {setrgbcolor} bind def /rot {rotate} bind def /sc {scale} bind def /sd {setdash} bind def /ff {findfont} bind def /sf {setfont} bind def /scf {scalefont} bind def /sw {stringwidth} bind def /tr {translate} bind def /tnt {dup dup currentrgbcolor 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} bind def /shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul 4 -2 roll mul srgb} bind def /DrawEllipse { /endangle exch def /startangle exch def /yrad exch def /xrad exch def /y exch def /x exch def /savematrix mtrx currentmatrix def x y tr xrad yrad sc 0 0 1 startangle endangle arc closepath savematrix setmatrix } def /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def F2psBeginF2psBegin %%Page: 1 1 10 setmiterlimit 0.06000 0.06000 sc % % Fig objects follow % % Polyline n 4800 1800 m 5100 2400 l 5700 3000 l 7200 3000 l 7050 2100 l 6525 1500 l 5550 1425 l cp gs col7 0.75 shd ef gr % Polyline n 4800 5100 m 5100 5700 l 5700 6300 l 7200 6300 l 7050 5400 l 6525 4800 l 5550 4725 l cp gs col7 0.75 shd ef gr % Polyline n 300 1800 m 600 2400 l 1200 3000 l 2700 3000 l 2550 2100 l 2025 1500 l 1050 1425 l cp gs col7 0.75 shd ef gr % Arc 30.000 slw gs clippath 4335 1590 m 4392 1419 l 3976 1278 l 4289 1479 l 3919 1449 l cp eoclip n 3750.0 2625.0 1275.0 -118.1 -61.9 arc gs col0 s gr gr % arrowhead n 3919 1449 m 4289 1479 l 3976 1278 l 3919 1449 l cp gs 0.00 setgray ef gr col0 s % Arc gs clippath 3166 2610 m 3105 2779 l 3519 2927 l 3211 2722 l 3580 2757 l cp eoclip n 3695.6 1792.5 1058.9 51.8 121.0 arc gs col0 s gr gr % arrowhead n 3580 2757 m 3211 2722 l 3519 2927 l 3580 2757 l cp gs 0.00 setgray ef gr col0 s 7.500 slw [60] 0 sd % Ellipse n 6450 2625 825 825 0 360 DrawEllipse gs col0 s gr [] 0 sd % Polyline 30.000 slw n 4800 1800 m 7200 3000 l gs col0 s gr % Polyline 7.500 slw n 4800 1800 m 5100 2400 l gs col0 s gr % Polyline n 5700 3000 m 5100 2400 l gs col0 s gr % Polyline n 7200 3000 m 7050 2100 l 6525 1500 l gs col0 s gr % Polyline n 4800 1800 m 5550 1425 l 6525 1500 l gs col0 s gr % Polyline n 4800 3000 m 5100 2400 l gs col0 s gr % Polyline n 4800 3000 m 5700 3000 l gs col0 s gr % Polyline n 7050 2100 m 6600 900 l 6525 1500 l gs col0 s gr % Polyline n 6600 900 m 5550 1425 l gs col0 s gr % Polyline n 6000 2400 m 5700 3000 l gs col0 s gr % Polyline n 6000 2400 m 5100 2400 l gs col0 s gr % Polyline n 6000 2400 m 7050 2100 l gs col0 s gr % Polyline n 6525 1500 m 6000 2400 l gs col0 s gr % Polyline n 6000 2400 m 5550 1425 l gs col0 s gr % Polyline 30.000 slw n 7200 3000 m 5700 3000 l gs col0 s gr % Polyline n 7200 900 m 6600 900 l gs col0 s gr % Polyline n 5400 900 m 6600 900 l gs col0 s gr % Polyline n 4800 1800 m 4800 3000 l gs col0 s gr % Polyline n 7200 3000 m 7200 900 l gs col0 s gr % Polyline 7.500 slw n 7200 900 m 7050 2100 l gs col0 s gr % Polyline 30.000 slw n 5400 900 m 4800 1800 l gs col0 s gr % Polyline n 4800 3000 m 4800 3450 l gs col0 s gr % Polyline 7.500 slw n 5700 3000 m 4800 3450 l gs col0 s gr % Polyline 30.000 slw n 300 5100 m 2700 6300 l gs col0 s gr % Polyline n 2700 6300 m 1200 6300 l gs col0 s gr % Polyline n 900 4200 m 2100 4200 l gs col0 s gr % Polyline n 300 5100 m 300 6300 l gs col0 s gr % Polyline n 2700 6300 m 2700 4200 l gs col0 s gr % Polyline n 1800 6750 m 2700 6300 l gs col0 s gr % Polyline n 900 4200 m 300 5100 l gs col0 s gr % Polyline n 300 6300 m 300 6750 l gs col0 s gr % Polyline n 300 6750 m 1800 6750 l gs col0 s gr % Polyline n 2100 4200 m 2700 4200 l gs col0 s gr % Polyline 15.000 slw n 1800 4575 m 1200 4425 l gs col0 s gr % Polyline n 1200 4425 m 825 4650 l gs col0 s gr % Polyline n 825 4650 m 1050 4875 l gs col0 s gr % Polyline n 1050 4875 m 1800 4575 l gs col0 s gr % Polyline n 1800 4575 m 2175 4725 l gs col0 s gr % Polyline n 2175 4725 m 2475 4500 l gs col0 s gr % Polyline n 2475 4500 m 2700 5400 l gs col0 s gr % Polyline n 2700 5400 m 2400 5400 l gs col0 s gr % Polyline n 2400 5400 m 2175 4725 l gs col0 s gr % Polyline n 1725 5325 m 2400 5400 l gs col0 s gr % Polyline n 1725 5325 m 1050 4875 l gs col0 s gr % Polyline n 975 5625 m 375 5700 l gs col0 s gr % Polyline n 375 5700 m 675 6075 l gs col0 s gr % Polyline n 675 6075 m 1350 6075 l gs col0 s gr % Polyline n 1350 6075 m 975 5625 l gs col0 s gr % Polyline n 675 6075 m 525 6450 l gs col0 s gr % Polyline n 525 6450 m 1200 6600 l gs col0 s gr % Polyline n 1200 6600 m 1800 6525 l gs col0 s gr % Polyline 30.000 slw n 300 1800 m 2700 3000 l gs col0 s gr % Polyline 7.500 slw n 300 1800 m 600 2400 l gs col0 s gr % Polyline n 600 2400 m 2700 3000 l gs col0 s gr % Polyline n 1200 3000 m 600 2400 l gs col0 s gr % Polyline n 300 1800 m 2025 1500 l 2700 3000 l gs col0 s gr % Polyline n 2700 3000 m 2550 2100 l 2025 1500 l gs col0 s gr % Polyline n 300 1800 m 1050 1425 l 2025 1500 l gs col0 s gr % Polyline n 300 3000 m 600 2400 l gs col0 s gr % Polyline n 300 3000 m 1200 3000 l gs col0 s gr % Polyline n 2100 900 m 1050 1425 l gs col0 s gr % Polyline 30.000 slw n 2700 3000 m 1200 3000 l gs col0 s gr % Polyline 7.500 slw n 2550 2100 m 2100 900 l 2025 1500 l gs col0 s gr % Polyline 30.000 slw n 900 900 m 2100 900 l gs col0 s gr % Polyline n 300 1800 m 300 3000 l gs col0 s gr % Polyline n 2700 3000 m 2700 900 l gs col0 s gr % Polyline 7.500 slw n 2700 900 m 2550 2100 l gs col0 s gr % Polyline 30.000 slw n 1800 3450 m 2700 3000 l gs col0 s gr % Polyline n 900 900 m 300 1800 l gs col0 s gr % Polyline n 300 3000 m 300 3450 l gs col0 s gr % Polyline n 300 3450 m 1800 3450 l gs col0 s gr % Polyline 7.500 slw n 1200 3000 m 1800 3450 l gs col0 s gr % Polyline n 1200 3000 m 300 3450 l gs col0 s gr % Polyline n 900 900 m 1050 1425 l gs col0 s gr % Polyline 30.000 slw n 2100 900 m 2700 900 l gs col0 s gr % Polyline n 6300 3450 m 7200 3000 l gs col0 s gr % Polyline n 4800 3450 m 6300 3450 l gs col0 s gr % Polyline 7.500 slw n 5700 3000 m 6300 3450 l gs col0 s gr % Polyline [60] 0 sd n 600 5700 m 2700 6300 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 300 5100 m 600 5700 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 300 6300 m 600 5700 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 1200 6300 m 600 5700 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 300 6300 m 1200 6300 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 1200 6300 m 300 6750 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 1200 6300 m 1800 6750 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 300 5100 m 2025 4800 l 2700 6300 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 2700 6300 m 2550 5400 l 2025 4800 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 2700 4200 m 2550 5400 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 2550 5400 m 2100 4200 l 2025 4800 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 2100 4200 m 1050 4725 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 900 4200 m 1050 4725 l gs col0 s gr [] 0 sd % Polyline [60] 0 sd n 300 5100 m 1050 4725 l 2025 4800 l gs col0 s gr [] 0 sd /Helvetica ff 360.00 scf sf 3105 3450 m gs 1 -1 sc (deletion) col0 sh gr /Helvetica ff 360.00 scf sf 3060 1125 m gs 1 -1 sc (insertion) col0 sh gr /Times-Italic ff 360.00 scf sf 6300 3300 m gs 1 -1 sc (t) col0 sh gr /Times-Italic ff 360.00 scf sf 5925 2250 m gs 1 -1 sc (v) col0 sh gr /Times-Italic ff 360.00 scf sf 6000 5625 m gs 1 -1 sc (P) col0 sh gr /Times-Italic ff 360.00 scf sf 2925 5625 m gs 1 -1 sc (G) col0 sh gr /Times-Italic ff 360.00 scf sf 1800 3300 m gs 1 -1 sc (t) col0 sh gr /Times-Italic ff 360.00 scf sf 4800 1200 m gs 1 -1 sc (T') col0 sh gr /Times-Italic ff 360.00 scf sf 300 1200 m gs 1 -1 sc (T) col0 sh gr 0.000 slw % Ellipse n 5400 900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4800 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4800 3000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 5100 2400 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 5700 3000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7050 2100 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6525 1500 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6600 900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 5550 1425 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6000 2400 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7200 900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 4800 3450 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr 15.000 slw % Ellipse n 1800 4575 106 106 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 825 4650 106 106 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2175 4725 106 106 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2475 4500 106 106 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2700 5400 106 106 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 2400 5400 106 106 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 675 6075 106 106 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 375 5700 106 106 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 525 6450 106 106 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 1200 6600 106 106 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 1800 6525 106 106 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr % Ellipse n 1200 4425 106 106 0 360 DrawEllipse gs col7 1.00 shd ef gr gs col0 s gr 0.000 slw % Ellipse n 900 900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 300 1800 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 300 3000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 600 2400 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1200 3000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2700 3000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2550 2100 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2025 1500 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2100 900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1050 1425 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 1800 3450 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 2700 900 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 300 3450 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 7200 3000 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr % Ellipse n 6300 3450 75 75 0 360 DrawEllipse gs col7 0.00 shd ef gr 15.000 slw % Ellipse n 1725 5325 106 106 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr % Ellipse n 1050 4875 106 106 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr % Ellipse n 2400 5400 106 106 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr % Ellipse n 975 5625 106 106 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr % Ellipse n 1350 6075 106 106 0 360 DrawEllipse gs col7 0.75 shd ef gr gs col0 s gr F2psBeginF2psEnd rs %%EndDocument @endspecial 2100 1634 a Fl(Figure)28 b(14:)41 b Fk(Inser)s(ting)27 b(or)i(deleting)d(a)i(v)n(er)s(te)n(x)h Fj(v)s Fk(.)51 b(This)28 b(e)n(x-)2100 1717 y(ample)20 b(is)h(tw)o(o-dimensional)c(f)n (or)j(clar)q(ity)-7 b(,)20 b(b)o(ut)g(the)g(same)g(pr)q(in-)2100 1799 y(ciples)33 b(oper)o(ate)f(in)h(three)f(dimensions)o(.)63 b(Bold)32 b(edges)h(are)2100 1881 y(segments)o(.)61 b(The)32 b(polygon)f Fj(P)44 b Fk(is)33 b(the)f(union)f(of)i(the)f(tr)q(ian-) 2100 1963 y(gles)26 b(adjoining)e Fj(v)s Fk(.)45 b(T)-9 b(r)q(iangles)25 b(outside)g Fj(P)38 b Fk(are)27 b(constr)o(ained)2100 2045 y(Delauna)n(y)c(in)j(both)e(tr)q(iangulations)o(.)37 b(The)24 b(g)o(r)o(aph)h Fj(G)h Fk(is)g(used)2100 2128 y(as)e(a)g(search)g(str)q(ucture)f(to)g(identify)f Fj(P)35 b Fk(when)23 b Fj(v)k Fk(is)d(inser)s(ted.)2100 2210 y(Note)f(that)h(although)d Fj(v)27 b Fk(lies)d(inside)f(the)g (circumcircle)h(of)g Fj(t)p Fk(,)h Fj(t)2100 2292 y Fk(is)g(not)e (deleted)f(when)h Fj(v)28 b Fk(is)d(inser)s(ted)d(because)i Fj(G)g Fk(does)g(not)2100 2374 y(connect)19 b(it)i(to)f(an)o(y)g(tr)q (iangle)e(in)i Fj(P)11 b Fk(.)2100 2640 y Fp(dimensional)22 b(CDT)d(of)i Fj(f)28 b Fp(appears)22 b(automatically)f(on)g(the)f(surf) o(ace)2100 2731 y(of)f(the)g(ca)o(vity)g(tetrahedralization.)2362 2947 y Fq(8)83 b(V)l(er)r(te)o(x)23 b(Inser)r(tion)g(and)f(Deletion) 2100 3113 y Fp(Once)33 b(a)f(domain)h(has)f(been)h(tetrahedralized)g (with)f(constrained)2100 3204 y(Delaunay)22 b(elements)g(\(collecti)n (v)o(ely)f(forming)h(a)f(CCDT)f(of)i(the)f(in-)2100 3296 y(put)35 b(PLC\),)e(some)i(of)g(these)g(elements)g(will)f(be)h(of)g (poor)g(qual-)2100 3387 y(ity)j(and)h(need)g(to)f(be)h(impro)o(v)o(ed.) 82 b(Delaunay)39 b(meshing)g(algo-)2100 3478 y(rithms)18 b([6,)g(11,)g(21)q(,)f(22)q(,)g(29)q(])h(insert)g(additional)g(v)o (ertices)g(to)g(replace)2100 3570 y(bad)i(elements)f(with)g(better)g (ones,)g(while)g(maintaining)h(the)f(Delau-)2100 3661 y(nay)28 b(\(or)e(\223almost)i(Delaunay\224\))g(property)g(throughout)g (the)f(inser)o(-)2100 3752 y(tions.)22 b(F)o(ortunately)-5 b(,)16 b(inserting)g(a)f(v)o(erte)o(x)g(into,)h(or)f(deleting)h(a)g(v)o (erte)o(x)2100 3844 y(from,)k(a)g(constrained)h(Delaunay)g (tetrahedralization)f(is)g(almost)g(as)2100 3935 y(easy)f(as)g(in)g(an) g(ordinary)h(Delaunay)g(tetrahedralization.)2100 4076 y(Consider)29 b(v)o(erte)o(x)g(deletion)g(\002rst.)51 b(Suppose)30 b(we)e(ha)o(v)o(e)h(the)g(CDT)2100 4167 y Fj(T)2156 4136 y Fa(v)2213 4167 y Fp(of)21 b(a)g(PLC)e Fj(X)2576 4136 y Fa(v)2614 4167 y Fp(.)28 b(Let)21 b Fj(X)27 b Fp(be)21 b(the)g(PLC)e(obtained)j(by)f(deleting)h(a)2100 4259 y(v)o(erte)o(x)c Fj(v)j Fp(from)e Fj(X)2593 4227 y Fa(v)2630 4259 y Fp(.)k(\(Assume)18 b(that)g Fj(v)j Fp(is)d(not)g(the)h(endpoint)g(of)f(an)o(y)2100 4350 y(se)o(gment,)k(because)h(endpoints)g(cannot)f(be)g(deleted.\))31 b(W)-6 b(e)21 b(wish)h(to)2100 4441 y(transform)d Fj(T)2465 4410 y Fa(v)2520 4441 y Fp(into)g(the)g(CDT)f Fj(T)30 b Fp(of)19 b Fj(X)6 b Fp(.)2100 4582 y(The)24 b(\002rst)f(step)h(is)g (to)g(delete)g(e)n(v)o(ery)h(tetrahedron)g(that)f(has)g Fj(v)j Fp(for)d(a)2100 4674 y(v)o(erte)o(x.)g(Let)19 b Fj(P)30 b Fp(be)19 b(the)h(union)g(of)f(these)h(tetrahedra.)k(As)19 b(Figure)g(14)2100 4765 y(sho)n(ws,)28 b Fj(P)37 b Fp(is)26 b(a)g(star)o(-shaped)g(polyhedron)j(whose)e(points)f(are)g(all)2100 4856 y(visible)19 b(from)g Fj(v)s Fp(.)k(No)c(other)g(tetrahedron)h(is) e(deleted.)2100 4998 y(The)k(polytope)h(is)e(retriangulated)i(by)f(a)g (simple)g(sweep)g(algorithm)2100 5089 y(for)k(constructing)i(CDTs)e(of) h(star)o(-shaped)g(polyhedra,)j(described)2100 5180 y(else)n(where)20 b([23)q(].)k(The)19 b(algorithm,)g(based)i(on)e(a)h(similar)e (algorithm)2100 5272 y(of)j(De)n(villers)g([5],)g(runs)g(in)g Fi(O)r Fh(\()p Fj(n)2970 5280 y Fa(s)3016 5272 y Fh(log)15 b Fj(n)3174 5280 y Fa(v)3211 5272 y Fh(\))21 b Fp(time,)g(where)g Fj(n)3684 5280 y Fa(s)3738 5272 y Fp(is)g(the)p eop %%Page: 11 11 11 10 bop 0 83 a Fp(number)20 b(of)f(tetrahedra)g(in)g(the)g(ne)n(w)g (tetrahedralization)g(of)g Fj(P)11 b Fp(,)18 b(and)0 174 y Fj(n)46 182 y Fa(v)102 174 y Fp(is)h(the)g(number)h(of)e(v)o (ertices)h(in)g Fj(P)11 b Fp(.)0 315 y(There)16 b(is)f(a)h(danger)h (though.)23 b(What)15 b(if)h Fj(P)26 b Fp(has)16 b(no)g(CDT?)f(Perhaps) h Fj(P)0 407 y Fp(is)k(Sch)6 b(\250)-31 b(onhardt')l(s)21 b(polyhedron,)i(or)d(another)h(dif)n(\002cult)f(polyhedron.)0 498 y(Sometimes)k(v)o(ertices)g(cannot)i(be)e(deleted,)i(and)f(it)f(is) g(the)g(respon-)0 589 y(sibility)e(of)g(the)g(application)i(program)f (to)f(ensure)h(that)f(a)h(v)o(erte)o(x)f(is)0 681 y(safe)d(to)g(delete) g(before)g(deleting)h(it.)0 822 y(The)h(best)g(w)o(ay)h(to)f (accomplish)h(that)f(is)g(to)g(ensure)g(that)g(the)g(under)o(-)0 913 y(lying)f(PLC)e(al)o(w)o(ays)i(remains)f(weakly)h(edge-protected)h (after)e(each)0 1005 y(v)o(erte)o(x)g(deletion)g(or)f(insertion.)23 b(A)c(simple)f(guideline)h(is)f(that)h(if)f Fj(X)1763 973 y Fa(v)0 1096 y Fp(is)25 b(weakly)h(edge-protected,)i(then)d(so)h (long)g(as)f Fj(v)j Fp(does)e(not)f(lie)g(in)0 1187 y(a)d(se)o(gment,)h Fj(X)k Fp(is)22 b(also)g(weakly)g(edge-protected,)i(and)f(thus)f(has)g (a)0 1279 y(CDT)-6 b(.)16 b(Ho)n(we)n(v)o(er)m(,)i(if)e Fj(v)k Fp(is)c(deleted)h(from)g(the)g(interior)g(of)g(a)f(se)o(gment,)0 1370 y(the)23 b(deletion)g(mer)o(ges)g(tw)o(o)g(se)o(gments)h(into)f (one.)35 b(The)23 b(deletion)g(is)0 1461 y(safe)e(only)g(if)g(the)g(ne) n(w)-5 b(,)21 b(lar)o(ger)g(se)o(gment)g(is)g(kno)n(wn)h(to)f(be)g (strongly)0 1553 y(Delaunay)-5 b(.)44 b(F)o(or)25 b(e)o(xample,)j(let)d Fj(X)32 b Fp(be)25 b(the)h(PLC)e(in)i(Figure)f(9,)i(let)0 1644 y Fj(v)i Fp(be)d(a)f(v)o(erte)o(x)i(in)e(the)h(middle)g(of)g(the)g (central)g(se)o(gment,)i(and)e(let)0 1735 y Fj(X)69 1703 y Fa(v)128 1735 y Fh(=)21 b Fj(X)g Fi([)15 b(f)p Fj(v)s Fi(g)p Fp(.)24 b Fj(X)587 1703 y Fa(v)642 1735 y Fp(has)19 b(a)f(CDT)g Fj(T)1035 1703 y Fa(v)1090 1735 y Fp(from)g(which)h Fj(v)i Fp(cannot)e(be)0 1826 y(safely)g(deleted.)0 1968 y(V)-8 b(erte)o(x)21 b(insertion)h(is)f(easier)h(to)f(implement)h(than) g(v)o(erte)o(x)g(deletion,)0 2059 y(because)j(no)f(sweep)g(algorithm)g (is)f(needed.)38 b(The)24 b(insertion)f(algo-)0 2150 y(rithm)h(is)g(just)g(a)g(slight)h(v)n(ariation)g(of)f(the)g(Bo)n(wyer) o(\226W)-6 b(atson)25 b(algo-)0 2242 y(rithm)19 b(for)f(v)o(erte)o(x)i (insertion)f(in)g(Delaunay)h(triangulations)f([1,)g(28)q(].)0 2383 y(V)-8 b(erte)o(x)28 b(insertion)g(is)f(the)h(re)n(v)o(erse)h(of)f (v)o(erte)o(x)g(deletion.)51 b(Gi)n(v)o(en)28 b(a)0 2474 y(CDT)21 b Fj(T)33 b Fp(of)22 b(a)g(PLC)f Fj(X)28 b Fp(and)23 b(a)f(v)o(erte)o(x)g Fj(v)s Fp(,)h(the)f(goal)g(is)g(to)g(construct)0 2565 y(the)e(CDT)f Fj(T)336 2534 y Fa(v)392 2565 y Fp(of)h Fj(X)543 2534 y Fa(v)604 2565 y Fh(=)j Fj(X)h Fi([)18 b(f)p Fj(v)s Fi(g)p Fp(,)i(if)f(it)h(e)o(xists.)25 b(The)20 b(\002rst)f(task)h(is)0 2657 y(to)h(identify)g Fj(P)11 b Fp(,)21 b(the)g(polyhedron)i(to)e(be)g(retriangulated.)31 b(Unfortu-)0 2748 y(nately)-5 b(,)23 b(while)e(it)g(is)g(easy)h(to)g (determine)g Fj(P)32 b Fp(from)22 b Fj(T)1398 2716 y Fa(v)1434 2748 y Fp(,)g(it)f(is)g(harder)0 2839 y(to)e(determine)g Fj(P)30 b Fp(from)19 b Fj(T)11 b Fp(.)0 2980 y(First,)25 b(\002nd)g(the)h(tetrahedra)f(that)g(contain)h Fj(v)s Fp(.)42 b(\(T)-6 b(ypically)25 b(there)g(is)0 3072 y(just)19 b(one,)i(b)o(ut)e(there)h(are)g(more)g(if)f Fj(v)j Fp(lies)d(on)h(a)g (f)o(ace)g(or)g(edge)g(of)g Fj(T)11 b Fp(.\))0 3163 y(These)16 b(tetrahedra)h(are)f(no)h(longer)f(constrained)i(Delaunay)-5 b(,)17 b(so)f(the)o(y)0 3254 y(must)h(be)g(deleted.)23 b Fj(P)28 b Fp(is)17 b(connected,)h(so)f(the)h(other)f(tetrahedra)g(in) g Fj(P)0 3346 y Fp(can)k(be)f(found)h(by)g(a)f(depth-\002rst)g(search)g (from)g(the)g(tetrahedra)h(that)0 3437 y(contain)28 b Fj(v)s Fp(.)47 b(The)27 b(search)h(does)g(not)f(w)o(alk)g(through)i (constraining)0 3528 y(triangles,)f(and)f(it)f(backtracks)i(whene)n(v)o (er)f(it)f(encounters)i(a)e(tetra-)0 3620 y(hedron)c(whose)g (circumsphere)h(does)f(not)f(enclose)h Fj(v)s Fp(.)30 b(The)21 b(search)0 3711 y(\002nds)e(e)n(v)o(ery)h(simple)o(x)f(that)g (is)f(no)i(longer)f(constrained)h(Delaunay)-5 b(.)0 3852 y(On)25 b(what)f(graph)i(is)e(the)g(search)i(performed?)41 b(Let)24 b Fj(G)h Fp(be)f(a)h(graph)0 3944 y(with)e(one)i(node)g(for)e (each)i(tetrahedron.)38 b(An)24 b(edge)h(connects)g(tw)o(o)0 4035 y(nodes)c(if)e(the)h(corresponding)j(tetrahedra)d(share)g(a)g (triangular)g(f)o(ace)0 4126 y(that)f(is)f Fo(not)h Fp(a)g (constraining)h(triangle.)0 4267 y(After)h(all)g(the)g(tetrahedra)h(in) g Fj(P)32 b Fp(are)21 b(identi\002ed)h(and)g(deleted,)g Fj(P)32 b Fp(is)0 4359 y(retetrahedralized)23 b(to)g(yield)f Fj(T)832 4327 y Fa(v)869 4359 y Fp(.)34 b(The)22 b(ne)n(w)h (tetrahedralization)g(is)0 4450 y(easy)g(to)f(generate:)31 b(for)23 b(each)g(triangular)f(f)o(ace)h Fj(s)f Fp(in)g(the)h(boundary) 0 4541 y(of)c Fj(P)11 b Fp(,)17 b(construct)j(a)e(ne)n(w)h(tetrahedron) h Fh(con)n(v)q(\()p Fj(s)15 b Fi([)h Fj(v)s Fh(\))p Fp(,)i(as)h(Figure) f(14)0 4633 y(illustrates.)55 b(The)29 b(total)h(running)g(time)g(is)f Fi(O)r Fh(\()p Fj(n)1315 4641 y Fa(s)1349 4633 y Fh(\))p Fp(,)i(where)f Fj(n)1687 4641 y Fa(s)1750 4633 y Fp(is)0 4724 y(the)25 b(number)g(of)g(old)g(tetrahedra)g(deleted.)41 b(\(The)24 b(number)i(of)e(ne)n(w)0 4815 y(tetrahedra)30 b(created)g(is)f(ne)n(v)o(er)h(lar)o(ger)g(than)g Fh(2)p Fj(n)1289 4823 y Fa(s)1348 4815 y Fh(+)25 b(2)p Fp(,)32 b(though)e(it)0 4907 y(could)17 b(be)f(asymptotically)h(smaller)l(.\)) 22 b(This)16 b(running)h(time)f(does)h(not)0 4998 y(include)i(the)f (time)f(needed)i(to)f(\002nd)g(a)g(tetrahedron)h(that)f(contains)g Fj(v)s Fp(.)0 5139 y(Lik)o(e)24 b(v)o(erte)o(x)g(deletion,)i(v)o(erte)o (x)e(insertion)g(is)g(not)g(al)o(w)o(ays)h(safe.)38 b(A)0 5230 y(ne)n(w)16 b(v)o(erte)o(x)f(may)h(cause)g(a)f(se)o(gment)h(to)g (no)f(longer)h(be)g(strongly)g(De-)0 5322 y(launay)-5 b(,)24 b(and)e(knock)i(it)d(out)h(of)g(the)g(tetrahedralization.)33 b(A)22 b(Delau-)2100 83 y(nay)d(mesh)f(generation)h(program)g(should)g (test)f(for)g(this)g(possibility)-5 b(,)2100 174 y(and)20 b(back)f(out)g(when)h(v)o(erte)o(x)f(insertion)g(cannot)h(succeed.)2100 315 y(A)32 b(three-dimensional)h(Delaunay)g(re\002nement)f(algorithm)g (I)g(de-)2100 407 y(scribe)25 b(else)n(where)f([21)q(])g(handles)h (this)f(dif)n(\002culty)h(by)f(considering)2100 498 y(the)29 b(diametral)g(sphere)g(of)g(each)g(se)o(gment)h(\(the)f(smallest)f (sphere)2100 589 y(that)21 b(contains)h(the)f(se)o(gment\))g(to)g(be)g (a)g(protected)h(re)o(gion.)30 b(An)o(y)21 b(ef-)2100 681 y(fort)29 b(to)g(insert)g(a)g(v)o(erte)o(x)g(on)g(or)h(inside)f (the)g(sphere)h(is)f(thw)o(arted;)2100 772 y(instead,)k(the)d(se)o (gment)h(is)f(split)g(at)g(its)f(center)m(,)34 b(and)c(the)h(tw)o(o)f (re-)2100 863 y(sulting)25 b(subse)o(gments)i(ha)o(v)o(e)e(smaller)f (diametral)h(spheres.)42 b(Thus,)2100 955 y(e)n(v)o(ery)19 b(subse)o(gment)g(is)e(k)o(ept)i(strongly)g(Delaunay)g(at)e(all)h (times,)f(and)2100 1046 y(the)i(mathematical)g(inte)o(grity)g(of)g(the) g(CDT)f(is)h(ne)n(v)o(er)g(broached.)2100 1187 y(Unfortunately)-5 b(,)21 b(there)g(is)e(one)i(circumstance)g(where)g(this)f(strate)o(gy) 2100 1279 y(does)j(not)f(w)o(ork.)32 b(A)21 b(v)o(erte)o(x)h(inserted)h (on)f(one)g(grazeable)h(se)o(gment)2100 1370 y(might)k(knock)i(a)e (second)i(grazeable)f(se)o(gment)g(out)f(of)g(the)h(mesh,)2100 1461 y(and)i(a)f(v)o(erte)o(x)g(on)h(the)f(second)h(se)o(gment)g(might) f(knock)i(the)e(\002rst)2100 1553 y(one)34 b(out.)68 b(This)33 b(is)h(a)f(chick)o(en-and-e)o(gg)k(problem)d(where)g(both) 2100 1644 y(v)o(ertices\227perhaps)d(man)o(y)f(v)o(ertices\227must)g (be)g(inserted)g(simul-)2100 1735 y(taneously)19 b(to)f(k)o(eep)i(the)e (mesh)g(weakly)h(edge-protected.)25 b(Simulta-)2100 1826 y(neous)c(v)o(erte)o(x)e(insertions)h(can)g(be)g(performed)h(by)f (identifying)g(and)2100 1918 y(remo)o(ving)k(all)f(the)g(tetrahedra)h (that)f(w)o(ould)h(be)f(remo)o(v)o(ed)h(by)g(indi-)2100 2009 y(vidual)19 b(v)o(erte)o(x)h(insertions,)f(then)g(gift)f(wrapping) i(the)f(ca)o(vities.)2331 2218 y Fq(9)84 b(Deg)q(eneracies)23 b(and)g(Rob)n(ustness)2100 2384 y Fp(Unfortunately)-5 b(,)26 b(CDT)e(construction)h(algorithms)g(are)f(e)n(v)o(en)h(more)2100 2475 y(sensiti)n(v)o(e)19 b(to)f(numerical)h(error)g(than)g(most)g (geometric)g(algorithms.)2100 2566 y(Furthermore,)28 b(PLCs)d(in)h(which)h(\002)n(v)o(e)f(or)g(more)h(v)o(ertices)f(lie)g (on)h(a)2100 2658 y(common)c(sphere)f(can)g(cause)g(gift)g(wrapping)g (to)f(f)o(ail)h(if)f(de)o(genera-)2100 2749 y(cies)e(are)g(not)g (handled)h(carefully)-5 b(.)2100 2890 y(Therefore,)27 b(I)f(recommend)h(that)f(e)o(xact)g(arithmetic)f([19)q(])g(be)h(used) 2100 2982 y(to)g(implement)h(the)f(numerical)h(predicates)f(\(i.e.)f (orientation)i(and)2100 3073 y(insphere)j(tests\),)i(and)e(that)f(all)g (the)h(algorithms)g(use)g(a)f(modi\002ed)2100 3164 y(insphere)i(test)e (that)h(emplo)o(ys)h(a)e(simple)h(symbolic)h(perturbation)2100 3256 y(technique)20 b([9,)e(23)q(])g(to)h(simulate)f(the)h (circumstance)h(where)f(no)g(\002)n(v)o(e)2100 3347 y(v)o(ertices)i (are)f(cospherical.)30 b(Symbolic)21 b(perturbation)g(ensures)h(that) 2100 3438 y(the)f(gift-wrapping)g(and)h(sweep)f(algorithms)g(correctly) h(produce)g(a)2100 3529 y(CDT)f(of)i(an)o(y)g(weakly-edge)g(protected)g (PLC,)e(and)i(simpli\002es)f(the)2100 3621 y(test)29 b(for)h(strongly)g(Delaunay)h(se)o(gments)g(\(as)f(discussed)h(in)e (Sec-)2100 3712 y(tion)19 b(4\).)2777 3921 y Fq(Ref)o(erences)2137 4067 y Fp([1])42 b(Adrian)34 b(Bo)n(wyer)l(.)74 b Fo(Computing)35 b(Diric)o(hlet)e(T)-7 b(essellations)p Fp(.)2266 4158 y(Computer)20 b(Journal)f Fn(24)p Fp(\(2\):162\226166,)j(1981.)2137 4308 y([2])42 b(L.)22 b(P)o(aul)g(Che)n(w)-5 b(.)40 b Fo(Constr)o(ained)24 b(Delaunay)g(Triangulations)p Fp(.)2266 4400 y(Algorithmica)19 b Fn(4)p Fp(\(1\):97\226108,)i(1989.)2137 4550 y([3])42 b(K)n(enneth)37 b(L.)d(Clarkson)i(and)g(Peter)f(W)-7 b(.)35 b(Shor)l(.)80 b Fo(Applica-)2266 4642 y(tions)26 b(of)h(Random)g(Sampling)g(in)f(Computational)i(Geome-)2266 4733 y(try)l(,)19 b(II)p Fp(.)27 b(Discrete)19 b(&)g(Computational)h (Geometry)g Fn(4)p Fp(\(1\):387\226)2266 4824 y(421,)f(1989.)2137 4975 y([4])42 b(Da)o(vid)20 b(Cohen-Steiner)m(,)2945 4958 y(\264)2935 4975 y(Eric)f(Colin)h(de)h(V)-8 b(erdi)t(\036)-29 b(ere,)20 b(and)h(Ma-)2266 5066 y(riette)c(Yvinec.)26 b Fo(Conforming)19 b(Delaunay)g(T)l(riangulations)g(in)2266 5157 y(3D)p Fp(.)j(Proceedings)c(of)e(the)h(Eighteenth)g(Annual)h (Symposium)2266 5249 y(on)g(Computational)g(Geometry)g(\(Barcelona,)g (Spain\),)f(pages)2266 5340 y(199\226208,)k(June)f(2002.)p eop %%Page: 12 12 12 11 bop 37 83 a Fp([5])42 b(Oli)n(vier)18 b(De)n(villers.)25 b Fo(On)19 b(Deletion)f(in)h(Delaunay)g(T)l(riangula-)166 174 y(tions)p Fp(.)j(Proceedings)c(of)e(the)h(Fifteenth)f(Annual)i (Symposium)166 266 y(on)h(Computational)g(Geometry)-5 b(,)19 b(pages)g(181\226188.)i(Associa-)166 357 y(tion)e(for)g (Computing)h(Machinery)-5 b(,)20 b(June)g(1999.)37 503 y([6])42 b(T)-6 b(amal)24 b(Krishna)h(De)o(y)-5 b(,)26 b(Chanderjit)f(L.)f(Bajaj,)h(and)g(K)m(okichi)166 594 y(Sugihara.)58 b Fo(On)28 b(Good)h(T)l(riangulations)h(in)e(Thr)m(ee)h (Dimen-)166 685 y(sions)p Fp(.)j(International)21 b(Journal)g(of)g (Computational)g(Geome-)166 777 y(try)e(&)f(Applications)i Fn(2)p Fp(\(1\):75\22695,)g(1992.)37 923 y([7])42 b(Re)o(x)37 b(A.)f(Dwyer)l(.)83 b Fo(Higher)o(-Dimensional)37 b(Vor)m(onoi)g(Dia-) 166 1014 y(gr)o(ams)26 b(in)f(Linear)g(Expected)h(Time)p Fp(.)46 b(Discrete)25 b(&)g(Compu-)166 1105 y(tational)19 b(Geometry)g Fn(6)p Fp(\(4\):343\226367,)i(1991.)37 1251 y([8])42 b(Herbert)37 b(Edelsbrunner)m(,)42 b(Xiang-Y)-7 b(ang)38 b(Li,)i(Gary)e(Miller)m(,)166 1342 y(Andreas)54 b(Stathopoulos,)62 b(Dafna)53 b(T)-6 b(almor)m(,)61 b(Shang-Hua)166 1434 y(T)-5 b(eng,)23 b(Alper)g(Ungor)m(,)g(and)h(Noel)e(W)-6 b(alkington.)39 b Fo(Smoothing)166 1525 y(and)19 b(Cleaning)g(Up)f (Sliver)o(s)p Fp(.)26 b(Proceedings)19 b(of)f(the)g(32nd)i(An-)166 1616 y(nual)28 b(Symposium)h(on)f(the)g(Theory)h(of)f(Computing)h (\(Port-)166 1708 y(land,)f(Ore)o(gon\),)h(pages)e(273\226278.)h (Association)f(for)f(Com-)166 1799 y(puting)20 b(Machinery)-5 b(,)20 b(May)f(2000.)37 1945 y([9])42 b(Herbert)20 b(Edelsbrunner)h (and)g(Ernst)f(Peter)f(M)6 b(\250)-31 b(uck)o(e.)33 b Fo(Simula-)166 2036 y(tion)20 b(of)g(Simplicity:)26 b(A)19 b(T)-7 b(ec)o(hnique)22 b(to)e(Cope)g(with)g(De)m(g)o(ener)o(-)166 2127 y(ate)15 b(Cases)h(in)f(Geometric)g(Algorithms)p Fp(.)k(A)m(CM)c(T)m(ransactions)166 2219 y(on)k(Graphics)h Fn(9)p Fp(\(1\):66\226104,)h(1990.)0 2365 y([10])42 b(Herbert)33 b(Edelsbrunner)h(and)g(T)m(io)n(w)f(Seng)g(T)-6 b(an.)72 b Fo(An)33 b(Up-)166 2456 y(per)c(Bound)g(for)g(Conforming)g(Delaunay)h (T)l(riangulations)p Fp(.)166 2547 y(Discrete)g(&)h(Computational)g (Geometry)g Fn(10)p Fp(\(2\):197\226213,)166 2639 y(1993.)0 2784 y([11])42 b(P)o(aul-Louis)25 b(Geor)o(ge)h(and)g(Houman)g (Borouchaki.)50 b Fo(Delau-)166 2876 y(nay)23 b(T)l(riangulation)g(and) g(Meshing:)30 b(Application)23 b(to)f(F)m(inite)166 2967 y(Elements)p Fp(.)k(Herm)t(\036)-29 b(es,)19 b(P)o(aris,)f(1998.)0 3113 y([12])42 b(Carol)25 b(Hazle)n(w)o(ood.)47 b Fo(Appr)m(oximating) 25 b(Constr)o(ained)h(T)-7 b(etr)o(a-)166 3204 y(hedrizations)p Fp(.)108 b(Computer)44 b(Aided)g(Geometric)g(Design)166 3296 y Fn(10)p Fp(:67\22687,)21 b(1993.)0 3441 y([13])42 b(Der)o(-Tsai)27 b(Lee)i(and)g(A.)f(K.)g(Lin.)57 b Fo(Gener)o(alized)29 b(Delaunay)166 3533 y(T)l(riangulations)18 b(for)f(Planar)g(Gr)o(aphs)p Fp(.)23 b(Discrete)16 b(&)h(Compu-)166 3624 y(tational)i(Geometry)g Fn(1)p Fp(:201\226217,)i(1986.)0 3770 y([14])42 b(Gary)27 b(L.)g(Miller)m(,)h(Dafna)f(T)-6 b(almor)m(,)29 b(Shang-Hua)f(T)-5 b(eng,)29 b(and)166 3861 y(Noel)45 b(W)-6 b(alkington.)111 b Fo(A)44 b(Delaunay)i(Based)g(Numerical)166 3952 y(Method)26 b(for)e(Thr)m(ee)h(Dimensions:)35 b(Gener)o(ation,)26 b(F)-8 b(ormula-)166 4044 y(tion,)16 b(and)h(P)-6 b(artition)p Fp(.)21 b(Proceedings)c(of)f(the)g(T)-6 b(wenty-Se)n(v)o(enth)166 4135 y(Annual)17 b(A)m(CM)e(Symposium)i(on)f(the)g(Theory)h(of)f (Computing)166 4226 y(\(Las)i(V)-8 b(e)o(gas,)19 b(Ne)n(v)n(ada\),)g (pages)h(683\226692,)h(May)f(1995.)0 4372 y([15])42 b(Gary)48 b(L.)g(Miller)m(,)54 b(Dafna)49 b(T)-6 b(almor)m(,)55 b(Shang-Hua)49 b(T)-5 b(eng,)166 4464 y(Noel)34 b(W)-6 b(alkington,)39 b(and)c(Han)f(W)-6 b(ang.)77 b Fo(Contr)m(ol)34 b(V)-8 b(olume)166 4555 y(Meshes)38 b(using)g(Spher)m(e)g(P)-6 b(ac)o(king:)60 b(Gener)o(ation,)42 b(Re\002ne-)166 4646 y(ment)36 b(and)g(Coar)o(sening)p Fp(.)82 b(Fifth)34 b(International)i(Meshing)166 4738 y(Roundtable)c(\(Pittsb)o(ur)o(gh,)f (Pennsylv)n(ania\),)j(pages)e(47\22661,)166 4829 y(October)19 b(1996.)0 4975 y([16])42 b(Michael)18 b(Murphy)-5 b(,)18 b(Da)o(vid)f(M.)g(Mount,)h(and)f(Carl)g(W)-7 b(.)16 b(Gable.)166 5066 y Fo(A)k(Point-Placement)h(Str)o(ate)m(gy)g(for)g(Conforming)g (Delaunay)166 5157 y(T)-7 b(etr)o(ahedr)o(alization)p Fp(.)57 b(Proceedings)29 b(of)f(the)f(Ele)n(v)o(enth)i(An-)166 5249 y(nual)16 b(Symposium)f(on)h(Discrete)f(Algorithms,)h(pages)g (67\22674.)166 5340 y(Association)j(for)g(Computing)h(Machinery)-5 b(,)20 b(January)h(2000.)2100 83 y([17])42 b(Jim)29 b(Ruppert.)62 b Fo(A)29 b(Delaunay)i(Re\002nement)f(Algorithm)g(for)2266 174 y(Quality)d(2-Dimensional)i(Mesh)f(Gener)o(ation)p Fp(.)55 b(Journal)29 b(of)2266 266 y(Algorithms)19 b Fn(18)p Fp(\(3\):548\226585,)j(May)d(1995.)2100 409 y([18])42 b(E.)20 b(Sch)6 b(\250)-31 b(onhardt.)2763 393 y Fo(\250)2744 409 y(Uber)22 b(die)f(Zerle)m(gung)h(von)g(Dr)m(eiec)o(kspoly-)2266 501 y(edern)j(in)f(Tetr)o(aeder)p Fp(.)44 b(Mathematische)25 b(Annalen)g Fn(98)p Fp(:309\226)2266 592 y(312,)19 b(1928.)2100 735 y([19])42 b(Jonathan)48 b(Richard)f(She)n(wchuk.)116 b Fo(Adaptive)47 b(Pr)m(ecision)2266 827 y(Floating-Point)33 b(Arithmetic)g(and)h(Fast)f(Rob)o(ust)h(Geomet-)2266 918 y(ric)28 b(Pr)m(edicates)p Fp(.)55 b(Discrete)28 b(&)f(Computational)i(Geometry)2266 1009 y Fn(18)p Fp (\(3\):305\226363,)21 b(October)f(1997.)2100 1153 y([20])p 2266 1153 225 4 v 279 w(.)51 b Fo(A)26 b(Condition)i(Guar)o(anteeing)g (the)f(Existence)g(of)2266 1244 y(Higher)o(-Dimensional)33 b(Constr)o(ained)h(Delaunay)f(T)l(riangu-)2266 1336 y(lations)p Fp(.)25 b(Proceedings)19 b(of)f(the)g(F)o(ourteenth)h(Annual)f(Sympo-) 2266 1427 y(sium)j(on)h(Computational)g(Geometry)f(\(Minneapolis,)i (Min-)2266 1518 y(nesota\),)e(pages)h(76\22685.)g(Association)f(for)g (Computing)h(Ma-)2266 1610 y(chinery)-5 b(,)20 b(June)f(1998.)2100 1753 y([21])p 2266 1753 V 279 w(.)56 b Fo(T)-7 b(etr)o(ahedr)o(al)29 b(Mesh)g(Gener)o(ation)g(by)f(Delaunay)2266 1845 y(Re\002nement)p Fp(.)81 b(Proceedings)37 b(of)e(the)h(F)o(ourteenth)g(Annual)2266 1936 y(Symposium)28 b(on)f(Computational)h(Geometry)f(\(Minneapo-)2266 2027 y(lis,)17 b(Minnesota\),)h(pages)h(86\22695.)g(Association)f(for)f (Comput-)2266 2119 y(ing)i(Machinery)-5 b(,)20 b(June)g(1998.)2100 2262 y([22])p 2266 2262 V 279 w(.)g Fo(Mesh)c(Gener)o(ation)h(for)f (Domains)g(with)f(Small)h(An-)2266 2353 y(gles)p Fp(.)26 b(Proceedings)19 b(of)g(the)f(Sixteenth)h(Annual)g(Symposium)2266 2445 y(on)29 b(Computational)h(Geometry)f(\(Hong)h(K)m(ong\),)i(pages)d (1\226)2266 2536 y(10.)19 b(Association)h(for)e(Computing)i(Machinery) -5 b(,)21 b(June)e(2000.)2100 2680 y([23])p 2266 2680 V 279 w(.)45 b Fo(Sweep)25 b(Algorithms)g(for)f(Constructing)i(Higher)o (-)2266 2771 y(Dimensional)46 b(Constr)o(ained)g(Delaunay)g(T)l (riangulations)p Fp(.)2266 2862 y(Proceedings)31 b(of)g(the)f (Sixteenth)h(Annual)g(Symposium)g(on)2266 2954 y(Computational)k (Geometry)g(\(Hong)g(K)m(ong\),)j(pages)e(350\226)2266 3045 y(359.)50 b(Association)g(for)f(Computing)h(Machinery)-5 b(,)58 b(June)2266 3136 y(2000.)2100 3280 y([24])p 2266 3280 V 279 w(.)38 b Fo(What)23 b(is)f(a)g(Good)h(Linear)g(Element?)34 b(Interpola-)2266 3371 y(tion,)28 b(Conditioning)o(,)i(and)d(Quality)g (Measur)m(es)p Fp(.)52 b(This)27 b(pro-)2266 3462 y(ceedings,)20 b(2002.)2100 3606 y([25])42 b(Robin)16 b(Sibson.)j Fo(A)c(Brief)f (Description)i(of)f(Natur)o(al)h(Neighbor)2266 3697 y(Interpolation)p Fp(.)46 b(Interpreting)25 b(Multi)n(v)n(ariate)g(Data)g(\(V)-10 b(.)24 b(Bar)o(-)2266 3789 y(nett,)18 b(editor\),)h(pages)h(22\22636.)g (John)g(W)m(ile)o(y)-5 b(,)18 b(1981.)2100 3932 y([26])42 b(G.)29 b(Sw)o(art.)59 b Fo(F)m(inding)29 b(the)g(Con)m(ve)o(x)h(Hull)f (Facet)g(by)g(Facet)p Fp(.)2266 4024 y(Journal)20 b(of)f(Algorithms)g Fn(6)p Fp(:17\22648,)h(1985.)2100 4167 y([27])42 b(M.)30 b(T)-6 b(anemura,)34 b(T)-6 b(.)30 b(Oga)o(w)o(a,)k(and)d(N.)f(Ogita.) 64 b Fo(A)30 b(Ne)o(w)g(Al-)2266 4258 y(gorithm)g(for)f(Thr)m (ee-Dimensional)i(Vor)m(onoi)f(T)-7 b(essellation)p Fp(.)2266 4350 y(Journal)20 b(of)f(Computational)g(Physics)g Fn(51)p Fp(:191\226207,)i(1983.)2100 4493 y([28])42 b(Da)o(vid)15 b(F)-6 b(.)13 b(W)-6 b(atson.)18 b Fo(Computing)e(the)f Fj(n)p Fo(-dimensional)h(Delau-)2266 4585 y(nay)f(T)-7 b(essellation)15 b(with)g(Application)g(to)f(Vor)m(onoi)i(P)-6 b(olytopes)p Fp(.)2266 4676 y(Computer)20 b(Journal)f Fn(24)p Fp(\(2\):167\226172,)j(1981.)2100 4820 y([29])42 b(Nigel)30 b(P)-8 b(.)30 b(W)-6 b(eatherill)30 b(and)h(O.)f(Hassan.)65 b Fo(Ef)o(\002cient)31 b(Thr)m(ee-)2266 4911 y(Dimensional)20 b(Grid)g(Gener)o(ation)g(using)g(the)g(Delaunay)h(T)l(ri-)2266 5002 y(angulation)p Fp(.)51 b(Proceedings)27 b(of)g(the)f(First)f (European)i(Com-)2266 5094 y(putational)22 b(Fluid)e(Dynamics)i (Conference)g(\(Brussels,)f(Bel-)2266 5185 y(gium\))28 b(\(Ch.)f(Hirsch,)i(J.)e(P)t(\264)-29 b(eriaux,)29 b(and)f(W)-7 b(.)27 b(K)m(ordulla,)j(edi-)2266 5276 y(tors\),)18 b(pages)i (961\226968,)h(September)e(1992.)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF