%!PS % The math behind Bezier Cubic Splines #58 % ================================================================ % by Don Lancaster /ggnum 58 store % Copyright c 2005 by Don Lancaster & Synergetics, Box 809, Thatcher, AZ, 85552 % (928) 428-4073 Email: don@tinaja.com Website: http://www.tinaja.com % Consulting services available http://www.tinaja.com/info01.html % Linking welcome. Reposting expressly forbidden. % All commercial rights and all electronic media rights ~fully~ reserved. % Linking usually welcome. Reposting expressly forbidden. Version 1.1 % IMPORTANT NOTE: Don Lancaster's file gonzo.ps is required for this program. % After obvious location mods, uncomment ONE of the following two lines: (C:\\Documents and Settings\\don\\Desktop\\gonzo\\gonzo.ps) run % use internal gonzo % (A:\\gonzo.ps) run % use external gonzo % NOTE THAT ALL PS FILENAME STRINGS !!!DEMAND!!! DOUBLE REVERSE SLASHES. % GONZO20A Guru Gonzo PostScript power tools (Interim release) % Includes gonzo justification and layout utilities. % Copyright c 1990, 1996, 2001 by Don Lancaster and Synergetics, Box 809, % Thatcher Arizona, 5552 (928) 428-4073 don@tinaja.com support % via http://www.tinaja.com All commercial rights and all electronic % media rights **FULLY** reserved. Reposting is expressly forbidden. %%%%%%%%%%% links menu directory %%%%%%%%%%%% % This code locks pdfmark commands out of a PostScript printer. /pdfmark where {pop}{userdict /pdfmark /cleartomark load put} ifelse % /surl "start url" marks the beginning of a text sequence to be urled. % It also paints the text blue... /surl {mark /blue cvx 0.33 /setgray cvx % change text to blue /currentpoint cvx % remember box start /urly /exch cvx /store cvx /urlx /exch cvx /store cvx ] cvx % complete deferred command printlist exch 3 index exch put % stuff into gonzo printlist exch 1 add exch % increment gonzo list count } def % /eurl "end url" unmarks the end of a text sequence and sets up % the pdfmark needed to define the Acrobat web link. /eurl {mark % start deferred proc exch % position url string % /black cvx 0 /setgray cvx % turn blue marker off % maintextcolor /setrgbcolor cvx % reset to main text color??? /aqua cvx /black cvx /makeurl cvx % defer call of url builder ] cvx % complete deferred proc printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } def % /makeurl generates the pdfmark, receiving a {(urlstring) makeurl}. % Note that it is not called until formatted printlist time... /urlover 0.2 def % fraction of hot area over bounds /makeurl { /cururlname exch store % save the url string mark % start pdfmark currentfont /ScaleMatrix get 3 get /fsize exch store % guess height /Rect [ urlx fsize urlover mul sub % set box left x urly fsize urlover mul sub % set box left y currentpoint exch fsize urlover mul add exch fsize add ] /Border [ 0 0 0] % [0 0 0 ] = none; [0 0 2] = debug /Color [ .7 0 0 ] /Action <> /Subtype /Link /ANN % annotation type pdfmark % call pdf operators } def % /makeurlx generates the box specific pdfmark, receiving % a {(urlstring) makeurl}. % Note that it is not called until formatted printlist time... /makeurlx { /cururlnamex exch store % save the url string mark % start pdfmark /Rect [ xpos % set box left x ypos 0.9 sub % set box left y xpos 2.8 add % box right x ypos 0.9 sub 2.8 add % box right y ] /Border [ 0 0 0] % [0 0 0 ] = none; [0 0 2] = debug /Color [ .7 0 0 ] /Action <> /Subtype /Link /ANN % annotation type pdfmark % call pdf operators } def /maintextcolor {0 0 0 } def % text link specific data -- use dictionary instead below { /cubic01 {(http://www.tinaja.com/cubic01.asp) eurl} def /hack62 {(http://www.tinaja.com/glib/hack62.pdf) eurl} def /increment {(http://www.tinaja.com/text/bezgen3.html) eurl} def /interpolate {(http://members.bellatlantic.net/~vze2vrva/design.html) eurl } def /bezmath {(http://www.tinaja.com/text/bezmath.html) eurl } def /table {(http://www.tinaja.com/psutils/imtable.psl) eurl } def } pop % dictionary method << % zzzzzzzzzzzzzzzzzz keep for search marker /bernstein (http://graphics.idav.ucdavis.edu/education/CAGDNotes/Bernstein-Polynomials.pdf) /ellipse4.psl (http://www.tinaja.com/glib/ellipse4.psl) /wnhsl (http://www.tinaja.com/whatnu05.asp#hsl) /stalac.pdf (http://www.tinaja.com/glib/stalac.pdf) /santa01 (http://www.tinaja.com/santa01.asp) /imxytab.psl (http://www.tinaja.com/psutils/imxytab.psl) /nonlingr.pdf (http://www.tinaja.com/glib/nonlingr.pdf) /unibmm01.psl (http://www.tinaja.com/psutils/unibm01.psl) /webimage.pdf (http://www.tinaja.com/glib/webimage.pdf) /keycor01.pdf (http://www.tinaja.com/glib/keycor01.pdf) /nubkg01.psl (http://www.tinaja.com/psutils/nubkg01.psl) /basis.pdf (http://www.tinaja.com/glib/basis.pdf) /fixtlt01.psl (http://www.tinaja.com/psutils/fixtlt01.psl) /swingt01.psl (http://www.tinaja.com/psutils/swingt01.psl) /perspec1.pdf (http://www.tinaja.com/glib/perspec1.pdf) /starwars.psl (http://www.tinaja.com/psutils/starwars.psl) /video901.jpg (http://www.tinaja.com/images/bargs/finalc9.jpg) /video901.bmp (http://www.tinaja.com/images/bargs/finalc9.bmp) /autobmf1.psl (http://www.tinaja.com/psutils/autobmf1.psl) /bmfauto1.pdf (http://www.tinaja.com/glib/bmfauto1.pdf) /autobm1.psl (http://www.tinaja.com/psutils/autobmf1.psl) /bmdemo1.bmp (http://www.tinaja.com/psutils/bmdemo1.bmp) /adobeifilter (http://www.adobe.com/support/downloads/product.jsp?product=1&platform=Windows) /myriadfont (http://store.adobe.com/type/browser/P/P_1706.html) /stonefont (http://store.adobe.com/type/browser/F/STAQ/F_STAQ-11705000.html) /cleartype (http://grc.com/cleartype.htm) /adobeacrobat (http://www.adobe.com/products/acrobat/main.html) /acroread (http://www.adobe.com/products/acrobat/readstep2.html) /dutchdare (http://www.darenet.nl/page/language.view/home) /sedn (news:///sci.electronics.design) /sern (news:///sci.electronics.repair) /mcmaster (http://www.mcmaster.com/ ) /smallparts (http://www.smallparts.com/ ) /grainger (http://www.grainger.com/Grainger/ ) /mouser (http://www.mouser.com/ ) /digikey (http://www.digikey.com/ ) /allied (http://www.alliedelec.com/ ) /newark (http://www.newark.com/) /thomasreg (http://www.thomasregister.com/) /whtnu05 (http://www.tinaja.com/whtnu05.asp) /refurblg.pdf (http://www.tinaja.com/glib/refurblg.pdf) /refurb.pdf (http://www.tinaja.com/glib/refurb.pdf) /advetorl.pdf (http://www.tinaja.com/glib/advetorl.pdf) /sotofamilia (http://cgi6.ebay.com/ws/eBayISAPI.dll?MfcISAPICommand=ViewListedItems&userid=sotofamilia&include=0&since=7&sort=3&rows=100) /marcia.pdf (http://www.tinaja.com/glib/marcia.pdf) /auctscne.pdf (http://www.tinaja.com/glib/auctscne.pdf) /ebaysell.pdf (http://www.tinaja.com/glib/ebaysell.pdf) /ebayspoof (mailto:spoof@ebay.com) /auct01links (http://www.tinaja.com/auct01.asp#links) /enhebay2.pdf (http://www.tinaja.com/glib/enhebay2.pdf) /enhebay1.pdf (http://www.tinaja.com/glib/enhebay1.pdf) /pdfflash.pdf(http://www.tinaja.com/glib/pdfflash.pdf) /adobejava (http://partners.adobe.com/public/developer/pdf/topic_js.html) /p3anim01.pdf (http://www.tinaja.com/glib/p3anim01.pdf) /xpdf (http://www.foolabs.com/xpdf/) /heapsort.pdf (http://www.tinaja.com/glib/heapsort.pdf) /strconv.pdf (http://www.tinaja.com/glib/strconv.pdf) /pdfrefman (http://partners.adobe.com/public/developer/pdf/index_reference.html) /uncompresspdf.api (http://www.tinaja.com/plugins/uncompressPDF.api) /adobeebooks (http://www.adobe.com/epaper/ebooks/main.html) /viewpdf1.psl (http://www.tinaja.com/psutils/viewpdf1.psl) /adobeacrobatsdk (http://partners.adobe.com/public/developer/acrobat/sdk/index_doc.html) /adobejavascriptguide (http://partners.adobe.com/public/developer/acrobat/sdk/index_doc.html#js) /wordfreq.pdf (http://www.tinaja.com/glib/wordfreq.pdf) /azauct01.pdf (http://www.tinaja.com/glib/azauct01.pdf) /startsdk.pdf (http://www.tinaja.com/glib/startsdk.pdf) /flatevue.pdf (http://www.tinaja.com/glib/flatvue.pdf) /wordfrq1.psl (http://www.tinaja.com/psutils/wordfrq1.psl) /otherwf (http://www.mytranslate.com/wordfrequency.htm) /homonyms (http://www.cooper.com/alan/homonym_list.html) /wrightauct (http://www.wrightbrosauctioneers.com/) /a1auct (http://www.a1auctionz.com/) /auctbroke (http://www.auctionbrokers.us/) /ronbrunk (http://www.brunksauction.com/) /americawest (http://www.yellowpages-ads.com/01231827) /azauctioneers (http://www.arizonaauctioneers.com/) /dickerson (http://www.cfdauction.com/) /wsmauct (http://www.westernsalesmanagement.com/) /asustore (http://property.asu.edu/) /uaauct (http://pacs.web.arizona.edu/pacs_home.html) /schoolauct (http://web.archive.org/web/20040229230404/http://www.dist.maricopa.edu/surplus/other.html) /haynieauct (http://www.chuckhaynieauctions.com/pages/1/index.htm) /crawfordauct (http://www.tumbleweedauction.com/) /mangold (http://www.azauctioneers.org/members/8402_OCMangold.asp) /tingle (http://brucetingleauctioneering.com/) /countass (http://www.soldyourway.com/) /southwestliq (http://www.swliquidators.com/) /maricopacoll (http://www.dist.maricopa.edu/surplus/) /sierraauct (http://www.sierraauction.com/) /cunninghamauct (http://www.auctionaz.com/) /auctappr (http://www.auctionandappraise.com/) /azauctionassn (http://www.azauctioneers.org/home.asp) /natauctionassn (http://www.auctioneers.org/) /azclassifieds (http://www.arizclassified.com/classifieds/index.inn) /azrepublic (http://www.azcentral.com/class/merch/) /tudailystar (http://classified.tucson.com/index.php?site_name=citizen) /enhebay1.pdf (http://www.tinaja.com/glib/enhebay1.pdf) /busonly.psl (http://www.tinaja.com/psutils/busonly.psl) /rebound1.psl (http://www.tinaja.com/glib/rebound1.pdf) /rebound1.pdf (http://www.tinaja.com/glib/rebound1.psl) /funfield.pdf (http://www.tinaja.com/glib/funfield.pdf) /psar2img.pdf (http://www.tinaja.com/glib/psar2img.pdf) /dovebid (http://www.dovebid.com) /michaelfox (http://www.michaelfox.com) /mjauctions (http://www.mjauctions.com) /ucc (http://www.law.cornell.edu/ucc/) /arizlaw (http://www.azleg.state.az.us/ArizonaRevisedStatutes.asp) /vickrey (http://www.vanderbilt.edu/econ/reiley/papers/VickreyHistory.pdf) /whtnu04 (http://www.tinaja.com/whtnu04.asp) /logrpt01.psl (http://www.tinaja.com/psutils/logrpt01.psl) /nutilt01.psl (http://www.tinaja.com/psutils/nutilt01.psl) /nubkg01.psl (http://www.tinaja.com/psutils/nubkg01.psl) /dodbur01.psl (http://www.tinaja.com/psutils/dodbur01.psl) /ebayphen.pdf (http://www.tinaja.com/glib/ebayphen.pdf) /gallery.pdf (http://www.tinaja.com/glib/gallery.pdf) /histolog (http://www.tinaja.com/glib/histolog.pdf) /bmfonts (http://www.tinaja.com/glib/bmfonts.pdf) /dodbur (http://www.tinaja.com/glib/dodgebur.pdf) /ebayphoto (http://www.tinaja.com/glib/ebayfoto.pdf) /auctscne (http://www.tinaja.com/glib/auctscne.pdf) /stepprep (http://www.tinaja.com/glib/stepprep.pdf) /phonenums (http://www.switchboard.com/bin/cgiqa.dll?MG=) /reversephone (http://www.reversephonedirectory.com/) /scholar (http://www.scholar.google.com/) /shieldsup (https://grc.com/x/ne.dll?bh0bkyd2) /sotofamilia (http://cgi6.ebay.com/ws/eBayISAPI.dll?MfcISAPICommand=ViewListedItems&userid=sotofamilia&include=0&since=7&sort=3&rows=100) /topozone (http://www.topozone.com/) /thomasreg (http://www.thomasregister.com/) /uhaul (http://www.uhaul.com/) /ups (http://www.ups.com/) /usps (http://www.usps.com/) /vrane (http://www.vrane.com) /wayback (http://web.archive.org/) /whois (http://www.networksolutions.com/cgi-bin/whois/whois) /grainger (http://www.grainger.com/) /zipcodes (http://www.usps.com/ncsc/lookups/lookup_zip+4.html) /mcmaster (http://www.mcmaster.com/) /mscsupply (http://www.mscdirect.com/) /natauctioneers (http://www.auctioneers.org/) /newspapers (http://www.usnpl.com/) /norfolk (http://www.norfolkandwaay.com) /quickphrase (http://www.typingmaster.com/index.asp?go=quickphrase) /myebays (http://www.tinaja.com/glib/myebays.pdf) /moreebay (http://www.tinaja.com/glib/moreebay.pdf) /mapsonus (http://www6.mapsonus.com/) /aafont01 (http://www.tinaja.com/aafont01.asp) /froogle (http://www.froogle.com) /govliquidation (http://www.govliquidation.com) /intershipper (http://www.intershipper.com) /kelly (http://www.kbb.com) /paypal (https://www.paypal.com/refer/pal=don%40tinaja.com) /ebaysell (http://www.tinaja.com/glib/ebaysell.pdf) /ebaybuy (http://www.tinaja.com/glib/ebaybuy.pdf) /deja (http://groups.google.com/googlegroups/deja_announcement.html) /drhtml (http://www2.imagiware.com/RxHTML/) /fedex (http://www.fedex.com/us/) /currency (http://www.xe.net/ucc/) /terraserver (http://terraserver-usa.com/) /areacode (http://decoder.americom.com/cgi-bin/decoder.cgi) /asiansources (http://www.asia.globalsources.com/HOMEPAGES/ASOL/HOME) /ebaystore (http://stores.ebay.com/synergeticsabeja) /amazon (http://www.amazon.com/exec/obidos/redirect-home/donlancastersgur/) /aucres01 (http://www.tinaja.com/aucres01.asp) /auctlinks (http://www.tinaja.com/auct01.asp#links) /wayback (http://www.archive.org/web/web.php) /agilent (http://www.agilent.com) /fields01.psl (http://www.tinaja.com/glib/fields01.psl) /fields01.pdf (http://www.tinaja.com/glib/fields01.pdf) /maxwells (http://hyperphysics.phy-astr.gsu.edu/hbase/electric/maxeq.html#c3) /muse121 (http://www.tinaja.com/glib/muse121.pdf) /maxwellbook (http://www.amazon.com/exec/obidos/ISBN=0486606368/donlancastersgurA) /transtronics (http://www.transtronics.com) /sigview.pdf (http://www.tinaja.com/glib/sigview.pdf) /mscal28nd.asp (http://www.tinaja.com/mscal28nd.asp) /microchip (http://www.microchip.com) /numschip.pdf (http://www.tinaja.com/glib/numschip.pdf) /numschip.psl (http://www.tinaja.com/glib/numschip.psl) /msd28a.asm (http://www.tinaja.com/glib/msd28a.asm) /lineartechnology (http://www.lineartechnology.com) /bmtypewr (http://www.tinaja/com/psutils/bmtypewr.psl) /distlang.pdf (http://www.tinaja.com/glib/distlang.pdf) /muse141 (http://www.tinaja.com/glib/muse141.pdf) /screenthief (http://www.keyscreen.com/KeyScreen(s)5/scrnthf.htm) /giffont (http://www.tinaja.com/bmfonts/giffont1.bmp) /f507bg.txt (http://www.tinaja.com/bmfonts/f507bg.txt) /f507bg.psl (http://www.tinaja.com/bmfonts/f507bg.psl) /f507bg.pdf (http://www.tinaja.com/bmfonts/f507bg.pdf) /f607bg.txt (http://www.tinaja.com/bmfonts/f607bg.txt) /f707bg.txt (http://www.tinaja.com/bmfonts/f707bg.txt) /imgwrds1.psl (http://www.tinaja.com/psutils/imgwrds1.psl) /bmfont01 (http://www.tinaja.com/bmfont01.asp) /expbmp.psl (http://www.tinaja.com/glib/expbmp.psl) /kikisu (http://www.tinaja.com/images/bargs/ki710101.jpg) /hp3336a (http://www.tinaja.com/images/bargs/hp333601.jpg) /bmtransfer (http://www.tinaja.com/bmfonts/lettex01.bmp) /histolog.pdf (http://www.tinaja.com/glib/histolog.pdf) /histolog.psl (http://www.tinaja.com/glib/histolog.psl) /site01 (http://www.tinaja.com/site01.asp) /dayproc1.psl (http://www.tinaja.com/psutils/dayproc1.psl) /trail30.psl (http://www.tinaja.com/psutils/trail30.psl) /logrptm1.psl (http://www.tinaja.com/psutils/logrptm1.psl) /logrpt01.psl (http://www.tinaja.com/psutils/logrpt01.psl) /powerfit (http://www.tinaja.com/glib/powerfit.pdf) /pssort (http://www.tinaja.com/glib/pssort.pdf) /heapsort (http://www.tinaja.com/glib/heapsort.pdf) /bashpseu (http://www.tinaja.com/glib/bashpseu.pdf) /pseudo01 (http://www.tinaja.com/pseudo01.asp) /muse112 (http://www.tinaja.com/glib/muse112.pdf) /muse113 (http://www.tinaja.com/glib/muse113.pdf) /muse89 (http://www.tinaja.com/glib/muse89.pdf) /muse151 (http://www.tinaja.com/glib/muse151.pdf) /pssecrets (http://www.tinaja.com/glib/pssecrets.pdf) /bouncy (http://www.tinaja.com/glib/bouncy.pdf) /vectstep (http://www.tinaja.com/glib/vectstep.pdf) /muse102 (http://www.tinaja.com/glib/muse102.pdf) /onesword (http://www.tinaja.com/text/onesword.html) /emergop2 (http://www.tinaja.com/glib/emergop2.pdf) /wave01 (http://www.tinaja.com/wave01.asp) /chaincode (http://www.tinaja.com/text/chain01.html) /muse152 (http://www.tinaja.com/glib/muse152.pdf) /atg1 (http://www.tinaja.com/glib/atg1.pdf) /hack62 (http://www.tinaja.com/glib/hack62.pdf) /psinscrt (http://www.tinaja.com/glib/psinscrt.pdf) /fern2img (http://www.tinaja.com/psutils/fern2img.psl) /thefern (http://www.tinaja.com/psutils/fern2img.pdf) /cmoscb (http://www.amazon.com/exec/obidos/ISBN%3D0750699434/donlancastersgurA/002-0496817-3688016) /activecb (http://www.amazon.com/exec/obidos/ISBN%3D075062986X/donlancastersgurA/002-0496817-3688016) /hack64 (http://www.tinaja.com/glib/hack64.pdf) /nss (http://www.caves.org) /sinquest (http://www.tinaja.com/glib/sinquest.pdf) /askguru (http://www.tinaja.com/glair01.asp) /assycb (http://www.amazon.com/exec/obidos/ISBN%3D0672223317/donlancastersgurA/002-3338585-9572047) /muse105 (http://www.tinaja.com/glib/muse105.pdf) /muse107 (http://www.tinaja.com/glib/muse107.pdf) /resbn90 (http://www.tinaja.com/glib/resbn90.pdf) /hackar3 (http://www.tinaja.com/glib/hackar3.pdf) /testdemo (http://www.tinaja.com/glib/FULL60-1.ASC) /mschips (http://www.tinaja.com/glib/mschips.pdf) /sigview (http://www.sigview.com) /ggsigview (http://www.tinaja.com/glib/sigview.pdf) /mock (http://www.technicalworks.com) /xtronics (http://www.xtronics.com/) /oshen (http://www.oshonsoft.com/pic.html) /heapps01 (http://www.tinaja.com/psutils/heapps01.psl) /distlangpdf (http://www.tinaja.com/glib/distlang.pdf) /strconv (http://www.tinaja.com/glib/strconv.pdf) /fancysort (http://linux.wku.edu/~lamonml/algor/sort) /presort (http://www.tinaja.com/psutils/presort1.psl) /psnt (http://www.tinaja.com/glib/psnt.pdf) /insort (http://www.tinaja.com/psutils/insort.ps) /bublsort (http://www.tinaja.com/psutils/bublsort.ps) /oldstrconv (http://www.tinaja.com/psutils/strconv.html) /psdisk03 (http://www.tinaja.com/glib/psdisk03.pdf) /muse01 (http://www.tinaja.com/muse01.asp) /gonzopow (http://www.tinaja.com/glib/gonzopow.pdf) /analogeb (http://www.tinaja.com/glib/analogeb.pdf) /psdisk03 (http://www.tinaja.com/glib/psdisk03.pdf) /flut01 (http://www.tinaja.com/flut01.asp) /clpng (news:///comp.lang.postscript) /ctpng (news:///comp.text.pdf) /yahoo (http://www.yahoo.com) /google (http://www.google.com) /scodes (http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) /whois (http://www.networksolutions.com/en_US/whois/index.jhtml) /zekes (http://www.zekes.com) /logfileformat (http://www.microsoft.com/windows2000/en/server/iis/default.asp?url=/windows2000/en/server/iis/htm/core/iicnvlg.htm) /logrpt01.psl (http://www.tinaja.com/psutils/logrpt01.psl) /logrpt01.log (http://www.tinaja.com/psutils/logrpt01.log) /ex031126 (http://www.tinaja.com/psutils/ex031126.log) /picup01 (http://www.tinaja.com/picup01.asp) /webwb01 (http://www.tinaja.com/webwb01.asp) /muse90 (http://www.tinaja.com/glib/muse90.pdf) /vismagsn (http://www.tinaja.com/glib/vismagsn.psl) /vismagsn.pdf (http://www.tinaja.com/glib/vismagsn.pdf) /msquant (http://www.tinaja.com/glib/msquant.psl) /optjit01 (http://www.tinaja.com/psutils/optjit01.psl) /optjit01demo (http://www.tinaja.com/psutils/optjit01.pdf) /qall01 (http://www.tinaja.com/psutils/qall01.psl) /deltapat (http://www.tinaja.com/psutils/deltapat.pdf) /deltapat.pdf (http://www.tinaja.com/psutils/deltapat.pdf) /deltapat.psl (http://www.tinaja.com/psutils/deltapat.psl) /mindist1 (http://www.tinaja.com/glib/mindist1.pdf) /deltams1 (http://www.tinaja.com/glib/deltams1.pdf) /grabjpg (http://www.tinaja.com/psutils/grabjpg.psl) /gallery (http://www.tinaja.com/glib/gallery.pdf) /nutour01 (http://wwww.tinaja.com/nutour01.pdf) /linkpdf1 (http://www.tinaja.com/glib/linkpdf1.html) /ebayfoto (http://www.tinaja.com/glib/ebayfoto.pdf) /jpeg2pdf.html (http://www.tinaja.com/text/jpeg2pdf.html) /pdf2bmp (http://www.tinaja.com/psutils/pdf2bmp.psl) /bitmfont (http://www.tinaja.com/psutils/bitmfont.txt) /antifontpsl (http://www.tinaja.com/psutils/antifont.psl) /antifonttxt (http://www.tinaja.com/psutils/antifont.txt) /histog01 (http://www.tinaja.com/psutils/histog01.psl) /swingtlt (http://www.tinaja.com/glib/swingtlt.pdf) /newsamoe (news:///alt.marketing/online.ebay) /webtrends (http://www.netiq.com/webtrends/default.asp) /stegan (http://63.140.207.28/books/bkwater.asp) /nodi (http://www.pages.ebay.com/help/community/notice-infringe2.pdf) /ebayvero (http://www.pages.ebay.com/help/community/vero-program.html) /aboutme (http://members.ebay.com/aboutme/abeja/) /magfill2 (http://www.tinaja.com/psutils/magfill2.psl) /bmprpt01 (http://www.tinaja.com/psutils/bmprpt01.psl) /waywere (http://www.tinaja.com/glib/waywere.pdf) /nikon (http://www.nikon.com) /bayer (http://www.coreco.com/Web/wbtools3.nsf/0/87fce126f109ea3a05256c7100591c9a?OpenDocument) /hewpack (http://www.hp.com) /auct01 (http://www.tinaja.com/auct01.asp) /blat01 (http://www.tinaja.com/auct01.asp) /moreebay (http://www.tinaja.com/glib/moreebay.pdf) /auctscne (http://www.tinaja.com/glib/auctscne.pdf) /autourl (http://www.tinaja.com/glib/autourl.pdf) /msintro1 (http://www.tinaja.com/glib/msintro1.pdf) /msintrosource (http://www.tinaja.com/glib/msintro1.psl) /knockout (http://www.tinaja.com/glib/knockout.bmp) /stepsynt (http://www.tinaja.com/glib/stepsynt.pdf) /msintro1 (http://www.tinaja.com/glib/msintro1.pdf) /msinprop (http://www.tinaja.com/glib/msinprop.pdf) /muse106 (http://www.tinaja.com/glib/muse106.pdf) /muse142 (http://www.tinaja.com/glib/muse142.pdf) /math01 (http://www.tinaja.com/math01.asp) /cubic01 (http://www.tinaja.com/cubic01.asp) /bez4pts (http://www.tinaja.com/glib/bez4pts.pdf) /muse145 (http://www.tinaja.com/glib/muse145.pdf) /muse148 (http://www.tinaja.com/glib/muse148.pdf) /curveft3 (http://www.tinaja.com/psutils/curveft3.psl) /fuzzybez (http://www.tinaja.com/glib/fuzzybez.pdf) /bmprpt01 (http://www.tinaja.com/psutils/bmprpt01.psl) /nowhit01 (http://www.tinaja.com/psutils/nowhit01.psl) /blender (http://www.tinaja.com/psutils/blender.psl) /speedup2 (http://www.tinaja.com/glib/speedup2.pdf) /histog01 (http://www.tinaja.com/psutils/histog01.psl) /imgviewer32 (http://www.arcatapet.net/imgv32.cfm) /basis (http://www.tinaja.com/glib/basis.pdf) /expbmp (http://www.tinaja.com/glib/expbmp.pdf) /dodbur01 (http://www.tinaja.com/psutils/dodbur01.psl) /dodgebur (http://www.tinaja.com/glib/dodgebur.pdf) /magfill1 (http://www.tinaja.com/psutils/magfill1.psl) /swingt01 (http://www.tinaja.com/psutils/swingt01.psl) /before01 (http://www.tinaja.com/images/bargs/marcon01.jpg) /during01 (http://www.tinaja.com/images/bargs/marcon01.bmp) /after01 (http://www.tinaja.com/images/bargs/marconz1.jpg) /repobmp (http://www.tinaja.com/glib/repobmp.pdf) /basis01 (http://www.tinaja.com/glib/basis.pdf) /arcata (http://www.arcatapet.net/imgv32.cfm) /comparebmp (http://www.designer-info.com/Writing/bmp_tiff_jpeg_gif.htm) /imagimag (http://www.tinaja.com/glib/imagimag.pdf) /myebays (http://www.tinaja.com/glib/myebays.pdf) /stepprep (http://www.tinaja.com/glib/stepprep.pdf) /aafont01 (http://www.tinaja.com/aafont01.asp) /here1 (http://village.infoweb.ne.jp/~fwhw1257/study/bmpform.htm) /here2 (http://www.daubnet.com/formats/BMP.html) /bittype (http://www.tinaja.com/psutils/pdf2bmp.psl) /photocombine (http://www.tinaja.com/psutils/blender.psl) /psl (http://www.tinaja.com/psutils/) % dummy temp /psl1 (http://www.tinaja.com/psutils/pdf2bmp.psl) /psl2 (http://www.tinaja.com/psutils/acatdata.psl) /psl3 (http://www.tinaja.com/psutils/catwords.psl) /psl4 (http://www.tinaja.com/psutils/graburls.psl) /psl5 (http://www.tinaja.com/psutils/blender.psl) /psl6 (http://www.tinaja.com/psutils/catools1.psl) /psl7 (http://www.tinaja.com/psutils/strconv.html) /psl8 (http://www.tinaja.com/psutils/bodcat.psl) /psl9 (http://www.tinaja.com/psutils/flatvue1.psl) /psl10 (http://www.tinaja.com/psutils/fern2img.psl) /psl11 (http://www.tinaja.com/psutils/flutools.psl) /psl12 (http://www.tinaja.com/psutils/mscal156q.psl) /psl13 (http://www.tinaja.com/psutils/weblogu2.psl) /psl14 (http://www.tinaja.com/psutils/pfa2pfb.psl) /psl15 (http://www.tinaja.com/psutils/pfb2pfa.psl) /psl16 (http://www.tinaja.com/glib/psdisk03.psl) /psl17 (http://www.tinaja.com/psutils/disktool.psl) /psl18 (http://www.tinaja.com/glib/psinscrt.psl) /psl19 (http://www.tinaja.com/glib/pssearch.psl) /psl20 (http://www.tinaja.com/text/refsum1.html) /psl21 (http://www.tinaja.com/text/reflog1.html) /psl22 (http://www.tinaja.com/psutils/reflog1.psl) /psl23 (http://www.tinaja.com/psutils/refsum1.psl) /psl24 (http://www.tinaja.com/psutils/searepl.psl) /psl25 (http://www.tinaja.com/psutils/weberru2.psl) /psl26 (http://www.tinaja.com/psutils/grabsrch.psl) /psl27 (http://www.tinaja.com/psutils/grabrefs.psl) /magsn01 (http://www.tinaja.com/magsn01.asp) /gonzoutils (http://www.tinaja.com/post01.asp#gonzo) /disktool (http://www.tinaja.com/psutils/disktool.ps) /elesimp (http://www.tinaja.com/glib/elesimp.pdf) /tn5603 (http://partners.adobe.com/asn/developer/pdfs/tn/TN5603.Filters.pdf) /fern2img (http://www.tinaja.com/psutils/fern2img.psl) /fern (http://www.tinaja.com/psutils/fern2img.pdf) /oldfern (http://www.tinaja.com/psutils/fernx1.pdf) /acrosdk (http://partners.adobe.com/asn/developer/acrosdk/main.html) /refman2 (http://partners.adobe.com/asn/developer/pdfs/tn/psrefman.pdf) /refman3 (http://partners.adobe.com/asn/developer/pdfs/tn/PLRM.pdf) /s3011 (http://partners.adobe.com/asn/developer/pdfs/tn/PS3010and3011.Supplement.pdf) /s2011 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2011.supplement.pdf) /s2012 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2012.supplement.pdf) /s2013 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2013.supplement.pdf) /s2014 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2014.supplement.pdf) /s2015 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2015.supplement.pdf) /s2016 (http://ftp.ktug.or.kr/obsolete/info/adobe/devtechnotes/pdffiles/ps2016.supplement.pdf) /ghost (http://www.cs.wisc.edu/~ghost/) /distlang (http://www.tinaja.com/psutils/distlang.html) /adobepst (http://partners.adobe.com/asn/developer/technotes/) /maildon (mailto:don@tinaja.com) /tinaja (http://www.tinaja.com) /adobe (http://www.adobe.com) /adobesdk (http://partners.adobe.com/asn/developer/acrosdk/main.html) /pstrans (http://www.tinaja.com/glib/pstrans.pdf) /borland (http://www.borland.com/products/downloads/download_cbuilder.html) /ebay (http://cgi6.ebay.com/ws/eBayISAPI.dll?ViewSellersOtherItems&userid=abeja&completed=0&sort=2&since=-1&include=0&page=1&rows=100) /searepl (http://www.tinaja.com/psutils/searepl.psl) /aasdk (http://www.tinaja.com/plugins/AboutAcrobatSDK.api) /uncomp (http://www.tinaja.com/plugins/UncompressPDF.api) /addimage (http://www.tinaja.com/plugins/AddImage.api) /samplejpg (http://www.tinaja.com/plugins/sample.jpg) /transparency (http://www.tinaja.com/plugins/Transparency.api) /threerects (http://www.tinaja.com/plugins/threerects.pdf) /watermark (http://www.tinaja.com/plugins/Watermark.api) /verifyurls (http://www.tinaja.com/plugins/VerifyURLS.api) /flate (http://www.tinaja.com/glib/flatvue.pdf) /pstrans (http://www.tinaja.com/glib/pstrans.pdf) /advt01 (http://www.tinaja.com/advt01.asp) /amlink01 (http://www.tinaja.com/amlink01.asp) /ng1 (news:///comp.text.pdf) /ng2 (news:///comp.lang.postscript) /msc++ (http://msdn.microsoft.com/visualc/productinfo/default.asp) /degub (http://www.tinaja.com/glib/degub.pdf) /ghostscript (http://www.artifex.com/pressreleases/GS70.htm) /demox.psl (http://www.tinaja.com/glib/g9demox.psl) /demox.pdf (http://www.tinaja.com/glib/g9demox.pdf) /demo.pdf (http://www.tinaja.com/glib/g9demo.pdf) /flatvue (http://www.tinaja.com/glib/flatvue.psl) /pdfrefman (http://partners.adobe.com/asn/developer/acrosdk/docs.html) /psrefman (http://partners.adobe.com/asn/developer/technotes/postscript.html) /pdfmrm (http://partners.adobe.com/asn/developer/acrosdk/docs.html) /tipdf (http://partners.adobe.com/asn/developer/acrosdk/docs.html) /asdk (http://partners.adobe.com/asn/developer/acrosdk) /mtcr (http://support.adobe.com/devsup/devsup.nsf/docs/51864.htm) /flatvue1 (http://www.tinaja.com/psutils/flatvue1.psl) /acrob01 (http://www.tinaja.com/acrob01.asp) /post01 (http://www.tinaja.com/post01.asp) /info01 (http://www.tinaja.com/info01.asp) /gurgrm01 (http://www.tinaja.com/gurgrm01.asp) /energfun (http://www.tinaja.com/glib/energfun.pdf) { /tilley (http://www.tilleyfoundation.com) /mnglobal (http://www.mnglobal.com/energy/pg2.htm) /keely (http://www.keelynet.com) /evolve (http://www.evolvedtechnology.com) /hack64 (http://www.tinaja.com/glib/hack64.pdf) /hackar3 (http://www.tinaja.com/glib/hackar3.pdf) /resbn58 (http://www.tinaja.com/glib/resbn58.pdf) /bppt (http://www.batterypoweronline.com) /muse112 (http://www.tinaja.com/glib/muse112.pdf) /muse113 (http://www.tinaja.com/glib/muse113.pdf) /energfun (http://www.tinaja.com/glib/energfun.pdf) /bashpseu (http://www.tinaja.com/glib/bashpseu.pdf) /adobe (http://www.adobe.com) /netscape (http://www.netscape.com) /gallypsl (http://www.tinaja.com/galley1.psl) /gallypdf (http://www.tinaja.com/galley1.pdf) /atn5150 (http://partners.adobe.com/asn/developer/acrosdk/docs/createpdfapi/pdfmarkReference.pdf) /nutour (http://www.tinaja.com/bargains/nutour02.pdf) /nutoursource (http://www.tinaja.com/bargains/nutour02.psl) /bwhistle (http://www.tinaja.com/glib/bwhistle.pdf) /gonzo1 (http://www.tinaja.com/post01.asp#gonzo) /barg01 (http://www.tinaja.com/barg01.asp) /weblib01 (http://www.tinaja.com/weblib01.asp) /gurgrm01 (http://www.tinaja.com/gurgrm01.asp) /z1 (http://www.tinaja.com/bargains/thumb/albradz2.jpg) /z2 (http://www.tinaja.com/bargains/sbtesteq.asp) /z3 (http://www.tinaja.com/images/bargs/albrad02.jpg) /z4 (http://www.tinaja.com/bargains/thumb/tutenaz2.jpg) /z5 (http://www.tinaja.com/bargains/sbphone.asp) /z6 (http://www.tinaja.com/images/bargs/tutena02.jpg) /sourceme (http://www.tinaja.com/glib/gallery.psl) /sourceme2 (http://www.tinaja.com/glib/autourl.psl) } pop >> {mark exch /eurl cvx ] cvx def} forall %%%%%%%%%%%%%%%% New colorizer patches %%%%%%%%%%%%%%%%%% /boxgrays 0.899 def /grayshade boxgrays def /mastergray boxgrays def /staytint {0.33 setgray} def /staytint1 {0.25 setgray} def /showadgrays true def /red {0 settint} def /Zmacro {staytint /ypos ypos 2 add def 72 300 div setlinewidth xpos ypos moveto txtwide 0 rlineto stroke /ypos ypos -2 add def tintoff} def % hair rule /amacro {(zy0) stringmacro /ypos ypos ypara add def 0.33 setgray } def % start drop cap /bmacro {(iFy1) stringmacro /ypos ypos ypara add def black} def % finish drop cap % Gonzo character colorizer /blueon {mark /blue cvx 0.33 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /blueoff {mark /beige cvx 0 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton {mark 0.33 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1 {mark 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1b {mark beige cvx % try for aqua after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1a {mark /aqua cvx % try for aqua after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1p {mark /burple cvx % try for aqua after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1r {mark /red cvx % try for aqua after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1a {mark /aqua cvx % try for aqua after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1b {mark /beige cvx % try for beige after url??? 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tintoff {mark 0 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def %%%%%%%%%%%%%% COMPACT VERSION OF COLORIZER II %%%%%%%%%%%%%%%%%%%%%% /settint {dup /currenttint exch store 5.999 mul dup floor cvi /&cbar exch store dup floor sub /&cwt exch store [ {/setgray [ /dup cvx 0.3 &cwt 0.59 mul add /ge cvx [1 /exch cvx &cwt 0.59 mul 0.30 add /sub cvx 1 &cwt sub 0.59 mul 0.11 add /div cvx /dup cvx 1 &cwt sub /mul cvx &cwt /add cvx /exch cvx ] cvx [ &cwt 0.59 mul 0.3 add /div cvx /dup cvx &cwt /mul cvx 0] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.59 1 &cwt sub 0.3 mul add /ge cvx [1 &cwt sub 0.3 mul 0.59 add /sub cvx &cwt 0.3 mul 0.11 add /div cvx /dup cvx &cwt /mul cvx 1 &cwt sub /add cvx /exch cvx 1 /exch cvx] cvx [1 &cwt sub 0.3 mul 0.59 add /div cvx /dup cvx 1 &cwt sub /mul cvx /exch cvx 0] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.59 &cwt 0.11 mul add /ge cvx [&cwt 0.11 mul 0.59 add /sub cvx 1 &cwt sub 0.11 mul 0.30 add /div cvx /dup cvx 1 &cwt sub /mul cvx &cwt /add cvx 1 /exch cvx] cvx [0 /exch cvx &cwt 0.11 mul 0.59 add /div cvx /dup cvx &cwt /mul cvx] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.59 1 &cwt sub mul 0.11 add /ge cvx [1 &cwt sub 0.59 mul 0.11 add /sub cvx &cwt 0.59 mul 0.30 add /div cvx /dup cvx &cwt /mul cvx 1 &cwt sub /add cvx 1] cvx [0 /exch cvx 1 &cwt sub 0.59 mul 0.11 add /div cvx /dup cvx 1 &cwt sub /mul cvx /exch cvx] cvx /ifelse cvx /setrgbcolor cvx] cvx /def cvx} {/setgray [/dup cvx 0.11 &cwt 0.30 mul add /ge cvx[&cwt 0.30 mul 0.11 add /sub cvx 1 &cwt sub 0.30 mul 0.59 add /div cvx /dup cvx 1 &cwt sub /mul cvx &cwt /add cvx /exch cvx 1] cvx [ &cwt 0.30 mul 0.11 add /div cvx /dup cvx &cwt /mul cvx /exch cvx 0 /exch cvx ] cvx /ifelse cvx /setrgbcolor cvx ] cvx /def cvx} {/setgray [ /dup cvx 0.30 1 &cwt sub 0.11 mul add /ge cvx[ 1 /exch cvx 1 &cwt sub 0.11 mul 0.30 add /sub cvx &cwt 0.11 mul 0.59 add /div cvx /dup cvx &cwt /mul cvx 1 &cwt sub /add cvx ] cvx [ 1 &cwt sub 0.11 mul 0.30 add /div cvx /dup cvx 1 &cwt sub /mul cvx 0 /exch cvx] cvx /ifelse cvx /setrgbcolor cvx ] cvx /def cvx} ] &cbar get exec exec} bind def /beige {0.10 settint} def % examples of convenience operators /aqua {0.52 settint} def /blue {0.67 settint} def /lime {0.44 settint} def /burple {0.75 settint} def %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /guru { gonzo begin ps.util.1 begin printerror nuisance begin} def % guru % activate gonzo utilities 50 50 10 setgrid % create grid % 56 61 showgrid /setpagefonts { /cstretch 0.015 def /sstretch 0.015 def /font0 /StoneSans-Bold 1.6 gonzofont /font1 /StoneSans 0.95 gonzofont /font2 /StoneSans [0.95 0 0.25 0.95 0 0 ] gonzofont /font4 /StoneSans 0.85 gonzofont /font3 /StoneSans-Bold 0.85 gonzofont /font6 /StoneSans-Bold 0.85 gonzofont /font7 /StoneSans-Bold 1.05 gonzofont % subheaders /font8 /StoneSans-Bold [0.65 0 0 0.65 0 0.4] gonzofont /txtwide 36 store /yinc 1.2 store /kern 0.1 store /pm 1.5 store aqua 0.33 setgray font1 black /amacro { mark /aqua cvx 0.33 /setgray cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch } def /bmacro { mark /black cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch } def /shiftin {xpos /xposhold exch store /xpos xpos 3 add store} def /shiftout {/xpos xposhold store} def /texttop 51 store /textleft 3 store /cmacro {aqua 0.25 setgray (znhL7) stringmacro /xpos xpos 1.7 sub store /ypos ypos .1 sub def } def % left title /dmacro {black (pL1hz) stringmacro /xpos xpos 1.7 add store /ypos ypos .1 add def} def % normal text after centered title /fmacro % try and fake | {mark /gsave cvx /currentpoint cvx /moveto cvx 0.1 /setlinewidth cvx 0 0.65 /rlineto cvx /stroke cvx /grestore cvx ] cvx printlist exch 3 index exch put % stuff into gonzo printlist exch 1 add exch % increment gonzo list count } def } def setpagefonts % -2 50.5 (optional header here \274) cl %% Set document opening conventions. Note DOCVIEW limited. [/CropBox [0 0 520 620] % set the wierd size /PAGES pdfmark [ {Catalog} << /ViewerPreferences << /FitWindow true /CenterWindow true >> /PageLayout /OneColumn % continous /Pagemode /UseNone % no thumbs /View [/XYZ null null 1 ] % force 100% >> /PUT pdfmark %%%%%%%%%%%%%%%%% START DEMO ART (not in use) %%%%%%%%%%%%%%%% %%% Hand patching Info: % next available variable is /GS3 % transparency gstate is object 2 % contents stream is object 18 gets q /GS3 gs (xstuff) Q % be sure to q Q bracket to localize % resources stream is object 19 gets /GS3 2 0 R /transoverlay { % make a new graphics state [ /_objdef {newgsstate} /type /dict /OBJ pdfmark % fill the new overlay graphics state - See PDF manual for details [ {newgsstate} << /Type /ExtGState /ca 0.5 % fill transparency is 0.5 /CA 0.5 % stroke transparency is 0.5 /BM /Normal /AIS false /OP false /OPM 1 /op true >> /PUT pdfmark % start a Begin Picture graphics overlay subroutine... [ /BBox [0 0 1000 1000 ] /_objdef {overlaypix} /BP pdfmark % fill the Begin Picture graphics overlay Xobject subroutine... 0 0.5 1 setrgbcolor % on the aqua side of blue 4 4 6 6 rectfill % complete the Begin Picture graphics overlay Xobject... [ /EP pdfmark } def % Write a two squares program... /twosquares { gsave translate 1 0.5 0 setrgbcolor % red side of orange 2 2 6 6 rectfill % do background opaque box [ {overlaypix} /SP pdfmark % show foreground transparent box grestore} def % Distill the two squares program. Initially use a BARE Distiller Job % Options that has no compression, no embedded fonts, and little else save /snap1 exch store %%% transoverlay % create new objects %%% 14 17.5 twosquares snap1 restore %%%%%%%%%%%% END DEMO %%%%%%% %%%%%%%%%%%% PHOTO INSERTS %%%%%%%%%% % When photos are needed, they are inserted here. Comment out otherwise. %%%%%%%%% photo links %%%%%%%%% % combined autopos jpeg conversion and hotlink: /autofigure1 {save /af1 exch store xpos ypos yinc add translate 8.5 0.65 683 794 .025 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/hpexcb01.jpg) % url first (C:\\Documents and Settings\\don\\Desktop\\aarawpix\\hpexcb01.jpg) jpegimageprocwithlink af1 restore} store /autofigure2 {save /af2 exch store xpos ypos yinc add translate 8.5 -2 790 672 .020 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/tek40841.jpg) % url first (C:\\windows\\desktop\\aaraw_pix\\tek40841.jpg) jpegimageprocwithlink af2 restore} store /autofigure3 {save /af3 exch store xpos ypos yinc add translate 12 0.6 530 816 .018 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/sencri01.jpg) % url first (C:\\windows\\desktop\\aaraw_pix\\sencri01.jpg) jpegimageprocwithlink af3 restore} store /autofigure4 {save /af4 exch store xpos ypos yinc add translate 12 -0.4 422 612 .024 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/abspar01.jpg) % url first (C:\\windows\\desktop\\aaraw_pix\\abspar01.jpg) jpegimageprocwithlink af4 restore} store /jpegimageprocwithlink { % hoffset voffset hres vres save /snap2 exch def /infilename exch store % grab passed pix file /inurllink exch store % grab link filename /photoscale exch store /vpixels exch store /hpixels exch store translate % adjust position for final figure ??? inurllink setareaurl % autolink sizing /DeviceRGB setcolorspace % pick color model 0 0 translate % set page position hpixels vpixels scale % magnify unit square photoscale dup scale /infile infilename (r) file def % establish input read file /Data {infile /DCTDecode filter} def % define a data source << % start image dicationary /ImageType 1 % always one /Width hpixels % JPEG width in pixels /Height vpixels % JPEG height in pixels /ImageMatrix [hpixels 0 0 vpixels neg 0 vpixels ] /DataSource Data % proc to get filtered JPEG /BitsPerComponent 8 % color resolution /Decode [0 1 0 1 0 1] % per red book 4.10 >> image % call the image operator ypos snap2 restore /ypos exch def } def /setareaurl { % for auto include routine /cururlname exch store mark % start pdfmark /Rect [ 0 0 hpixels photoscale mul vpixels photoscale mul ] /Border [ 0 0 0] % [0 0 0 ] = none; [0 0 2] = debug /Color [ .7 0 0 ] /Action <> /Subtype /Link /ANN % annotation type pdfmark % call pdf operators } def %%%%%%%%%%% data for quantization figures %%%%%%% /raw [0.0198613 3.75812 0.0300583 0.968559 0.0400088 0.625545 0.0500071 0.473332 0.0598378 0.508493 0.0701048 0.618866 0.080067 0.574973 0.0900779 0.328987 0.0999211 0.358846 0.109939 0.13398 0.119912 0.183206 0.129936 0.374792 0.14006 0.286128 0.150091 0.206733 0.160075 0.190605 0.169949 0.196913 0.17999 0.136811 0.189984 0.223428 0.200178 0.130515 0.209919 0.279305 0.21986 0.179522 0.230087 0.167779 0.239816 0.127177 0.250051 0.18394 0.260079 0.22457 0.269779 0.120137 0.279989 0.142624 0.290027 0.124499 0.299737 0.111797 0.309994 0.123014 0.319982 0.268029 0.329976 0.207562 0.339971 0.0887317 0.349912 0.141557 0.359975 0.0943557 0.369923 0.0895733 0.379933 0.198241 0.389968 0.204985 0.399985 0.107935 0.409949 0.0945179 0.419974 0.125101 0.429965 0.0976423 0.440214 0.0904647 0.449999 0.108261 0.459981 0.0657491 0.470024 0.206909 0.479727 0.0390659 0.489996 0.0464662 0.50005 0.208427 0.509765 0.0436721 0.520046 0.0589122 0.53008 0.0933284 0.540058 0.122129 0.550131 0.108932 0.55981 0.0608129 0.570111 0.0552627 0.579854 0.0621947 0.590107 0.139442 0.59986 0.0498109 0.610232 0.103161 0.619883 0.129033 0.630016 0.0849617 0.640199 0.0601919 0.649749 0.0799222 0.660031 0.0541167 0.669983 0.113527 0.679712 0.0480973 0.690061 0.089419 0.700078 0.107595 0.709859 0.0710718 0.720131 0.041575 0.730196 0.123105 0.740089 0.0584097 0.749848 0.0861482 0.75993 0.0515622 0.769942 0.0761598 0.779974 0.118253 0.789996 0.0481484 0.799986 0.0874933 0.809957 0.0973124 0.820064 0.0534035 0.830362 0.025697 0.83973 0.0399598 0.850034 0.049165 0.859829 0.0851767 0.869827 0.0404494 0.880229 0.0435597 0.889938 0.0723645 0.899933 0.0190775 0.910168 0.0616833 0.919942 0.0725692 0.929991 0.0399983 0.940013 0.102806 0.950018 0.0518368 0.960034 0.0318331 0.970059 0.0823362 0.980036 0.0436783 0.989837 0.0463608 1.00013 0.0562829 ] def /ex54 [ 5.87906 19.9758 5.38078 23.2179 6.61461 22.45 6.48865 23.8991 7.79373 21.6975 7.66747 18.3412 7.16927 15.7147 7.0433 23.5588 7.89268 23.6885 6.44363 24.0582 6.31744 20.4902 5.81917 24.1383 7.16713 21.0382 6.66901 18.9723 6.54259 11.4618 6.04431 22.422 6.99837 23.9206 7.72186 17.6438 7.22366 19.559 7.0974 19.865 8.16101 21.0954 7.66296 21.6132 8.38593 23.3011 8.45734 21.8227 8.33099 20.4936 7.83295 23.6901 9.12148 21.6428 8.99521 24.1041 9.0123 22.5552 10.0761 24.016 9.94987 23.6423 9.4516 18.8 10.3011 18.3618 10.175 15.7533 9.67651 15.8403 10.7406 22.2248 11.2952 23.4363 8.38531 18.1067 9.44916 24.1021 8.95065 19.521 8.82462 16.3613 8.32649 22.8011 9.67415 22.9247 9.1758 23.1169 9.04961 18.7033 10.0041 21.3686 9.50554 20.3098 9.37965 23.1915 10.229 20.7535 9.73083 24.3928 10.7951 23.4553 10.6687 20.0753 10.1704 22.7069 10.9646 20.4496 10.8385 20.1683 11.4042 19.4907 12.0175 23.4256 11.5192 22.1005 12.5835 16.0818 12.4572 16.8864 11.9588 13.1062 12.809 19.7136 12.6826 18.5011 12.1842 20.9156 13.2483 19.5923 13.1218 24.0439 13.8034 21.8302 10.6676 23.761 10.8927 22.8588 11.957 21.8607 11.4587 19.2204 11.3322 17.3188 12.5117 19.7264 12.0132 20.9341 13.1763 23.3152 13.2472 20.7672 13.1206 23.1287 13.4724 23.3126 13.3461 23.9651 13.9117 18.537 13.8022 22.5502 14.2414 20.9416 14.4669 13.1742 13.1752 23.9257 13.6145 24.4108 13.8398 22.6699 ] store /ex54good [ 6.54259 11.4618 11.9588 13.1062 14.4669 13.1742 10.175 15.7533 9.67651 15.8403 10.0041 21.3686 ] store /ex54orig [ 9.88396 24.4257 ] store /ex54want [ 10 0 ] store /shook [ 0.00934937 1.51076 0.0210324 0.978672 0.0312886 0.477679 0.0406482 0.318167 0.0493669 0.337353 0.0617085 0.203131 0.0692016 0.259957 0.0798052 0.229666 0.0885358 0.271299 0.100559 0.1726 0.109939 0.13398 0.118677 0.119296 0.131049 0.187404 0.140698 0.134313 0.149444 0.129195 0.158846 0.106101 0.170589 0.0965049 0.179351 0.0914561 0.189653 0.129042 0.201417 0.0546426 0.210828 0.108576 0.218951 0.100261 0.230727 0.120773 0.241057 0.103841 0.24984 0.0973585 0.259094 0.114175 0.268537 0.0808775 0.281232 0.051974 0.289386 0.0641827 0.301193 0.0942731 0.310907 0.0954356 0.31907 0.0730116 0.330889 0.0677774 0.339699 0.0797174 0.350554 0.0727672 0.360616 0.0859002 0.369923 0.0895733 0.379679 0.0823565 0.391137 0.0758395 0.399965 0.0916116 0.411197 0.0716472 0.419389 0.052739 0.430883 0.0744991 0.441523 0.0643956 0.450642 0.0651337 0.461231 0.0500311 0.470357 0.0682797 0.479727 0.0390659 0.491163 0.0464662 0.500383 0.0701265 0.509765 0.0436721 0.520046 0.0589122 0.529436 0.0621049 0.540979 0.065531 0.549818 0.0659652 0.55981 0.0608129 0.570111 0.0552627 0.579854 0.0621947 0.589296 0.0497526 0.59986 0.0498109 0.610207 0.0454799 0.620493 0.0516502 0.630849 0.0588497 0.639051 0.034206 0.649639 0.0456603 0.660009 0.0522574 0.670628 0.0426991 0.679712 0.0480973 0.69034 0.0477716 0.699467 0.0308037 0.711012 0.0686215 0.720131 0.041575 0.729513 0.0498212 0.739846 0.0430787 0.750499 0.0405623 0.76086 0.0438831 0.770257 0.0497878 0.780553 0.0441616 0.789662 0.0457397 0.800267 0.0325654 0.809451 0.0440074 0.820078 0.0403837 0.830362 0.025697 0.840997 0.0332166 0.85014 0.0337785 0.860449 0.0360605 0.869889 0.015046 0.880467 0.0360463 0.890767 0.0317396 0.899933 0.0190775 0.910273 0.0316686 0.919661 0.0263476 0.929956 0.0388174 0.939357 0.032368 0.949701 0.027215 0.960034 0.0318331 0.970334 0.0351219 0.979745 0.0379512 0.990337 0.0386641 1.00065 0.0439439 ] store %%%%%%%%%%%%% ordinary tracking figures /figureoneauto { /figadvance 13 store save /snap2 exch store xpos 2 add ypos figadvance sub translate % /linestring 20000 string def figure3var snap2 restore /ypos ypos figadvance sub yinc sub % 7 add store % temp bug removal? } store /figure1aaa { save /snap1aaa exch store 11 32.6 translate % huh? % BIG GREEN A % ================================================================= % (C:\\windows\\desktop\\gonzo\\gonzo.ps) run % use internal gonzo % (A:\\gonzo.ps) run % use external gonzo % gonzo begin % ps.util.1 begin % nuisance begin gsave aqua 0.3 setgray font6 -3 5 (desired\ncharacter) cc 20.2 5 (best\npixel fit) cc grestore /font1 /Helvetica-Bold 60 gonzofont % 100 100 2 setgrid 0.12 dup scale 0 0 mt 80 pu 60 pr 80 pd closepath 0.75 1 0.75 setrgbcolor fill newpath 0 1 0 setrgbcolor 0 0 mt 80 pu 60 pr 80 pd closepath 0.8 setlinewidth stroke newpath line1 [{0 0 mt 80 u}10 6 ] xrpt [{0 0 mt 60 r}10 8 ] yrpt 0.4 dup dup setrgbcolor /font2 /Helvetica-Bold [90 0 0 112 0 0] gonzofont font2 30 0 (A) cc %%% second figure 85 0 translate % was 90 % character is 0.4 0.4 0.4 hardwired % background is 0.75 1 0.75 /adjgam { 4 mul floor cvi [0 0.33 0.66 1] exch get } store /makeshade { %adjgam /val exch store 1 val sub -0.35 mul 0.75 add 1 val sub -0.6 mul 1 add 1 val sub -0.35 mul 0.75 add setrgbcolor 0 0 mt 10 pu 10 pr 10 pd closepath fill 10 0 translate } store gsave 0 70 translate [ 0.999 0.999 0.100 0.100 0.999 0.999 ] { makeshade} forall -60 -10 translate [ 0.999 0.800 0.007 0.007 0.800 0.999 ] {makeshade} forall -60 -10 translate [ 0.999 0.559 0.189 0.189 0.559 0.999 ] {makeshade} forall -60 -10 translate [ 0.999 0.282 0.432 0.432 0.282 0.999 ]{makeshade} forall -60 -10 translate [ 0.969 0.037 0.632 0.632 0.037 0.969 ]{makeshade} forall -60 -10 translate [ 0.779 0.000 0.000 0.000 0.000 0.779 ]{makeshade} forall -60 -10 translate [ 0.464 0.144 0.649 0.649 0.144 0.464 ]{makeshade} forall -60 -10 translate [ 0.182 0.439 0.999 0.999 0.439 0.182 ]{makeshade} forall grestore 0 1 0 setrgbcolor 0 0 mt 80 pu 60 pr 80 pd closepath 0.8 setlinewidth stroke newpath line1 [{0 0 mt 80 u}10 6 ] xrpt [{0 0 mt 60 r}10 8 ] yrpt snap1aaa restore } store /figure1x { /circproc {gsave /arraynum exch store /circvalue exch store /circshade exch store translate newpath 0 0 0.8 0 360 arc /font1 /StoneSans-Bold 0.9 gonzofont /font2 /Helvetica-Bold 0.7 gonzofont gsave circshade setgray fill grestore line2 0.33 setgray stroke font1 0 -0.3 circvalue cc newpath black font2 0 -1.5 arraynum cc 0 0 ( ) cc % eliminate strange string reuse bug? grestore } store % 32 9 showgrid line1 [{0 0 mt 1 2 rlineto 1 -2 rlineto stroke} 4 8 ] xrpt [{1 2 mt 2 2 rlineto 2 -2 rlineto stroke} 8 4 ] xrpt [{3 4 mt 4 2 rlineto 4 -2 rlineto stroke} 16 2 ] xrpt 7 6 mt 8 2 rlineto 8 -2 rlineto stroke { [-null- (52) (51) (41) (50) (30) (31) (40) (21) (42) (10) (22) (02) (00) (20) (32) (01) (12) (11) (21)] } pop 0 8 0.85 ( ) (00) circproc 15 8 0.7 (52)(01) circproc 7 6 0.7 (51) (02) circproc 23 6 0.7 (41) (03) circproc 3 4 0.75 (50) (04) circproc 11 4 0.75 (30) (05) circproc 19 4 0.75 (31) (06) circproc 27 4 0.75 (40) (07) circproc 1 2 0.75 (21) (08) circproc 5 2 0.75 (42) (09) circproc 9 2 0.75 (10) (10) circproc 13 2 0.75 (22) (11) circproc 17 2 0.75 (02) (12) circproc 21 2 0.75 (00) (13) circproc 25 2 0.75 (20) (14) circproc 29 2 0.75 (32) (15) circproc 0 -.3 0.75 (01) (16) circproc 2 -.3 0.75 (12) (17) circproc 4 -.3 0.75 (11) (18) circproc 6 -.3 0.75 (21) (19) circproc 8 -.3 0.85 ( ) (20) circproc 10 -.3 0.85 ( ) (21) circproc 12 -.3 0.85 ( ) (22) circproc 14 -.3 0.85 ( ) (23) circproc 16 -.3 0.85 ( ) (24) circproc 18 -.3 0.85 ( ) (25) circproc 20 -.3 0.85 ( ) (26) circproc 22 -.3 0.85 ( ) (27) circproc 24 -.3 0.85 ( ) (28) circproc 26 -.3 0.85 ( ) (29) circproc 28 -.3 0.85 ( ) (30) circproc 30 -.3 0.85 ( ) (31) circproc font2 0 5.85 ((reserved)) cc 26.5 7.6 (xx = array address)cc 0 0 ( ) cc % get rid of string bug } store /figure1f { save /snap3 exch def /linestring 1000 string store 9 1 translate % position on page %%%%%%%%%%%%%%%%%%% /sdat [ 11.98 10.02 11.38 10.47 10.7 10.13 11.65 10.41 11.68 10.1 11.82 10.38 11.07 10.13 11.13 10.16 10.95 10.44 9.97 10.1 11.53 10.04 12.0 10.28 11.35 10.49 11.2 9.47 9.24 9.75 10.3 10.03 11.42 9.65 9.91 9.41 8.61 9.69 11.01 9.62 12.3 9.38 11.13 9.74 9.76 9.4 8.93 9.68 9.77 9.72 10.33 10.0 9.66 9.34 9.69 9.62 8.33 9.66 9.83 9.93 11.37 9.69 11.07 9.97 9.71 9.55 9.49 9.82 9.94 9.58 7.78 9.86 9.1 10.14 10.73 9.9 10.17 10.17 10.74 9.76 8.24 9.52 6.75 9.8 9.16 10.08 7.76 9.83 8.03 10.11 11.37 10.15 9.75 9.46 9.43 9.74 7.95 9.77 9.14 10.05 11.05 9.81 10.8 9.48 11.96 9.24 8.28 9.52 7.41 9.8 7.55 9.83 8.36 10.11 7.94 9.45 8.08 9.73 7.69 9.49 5.22 9.77 7.5 10.05 8.58 9.8 8.27 10.08 8.46 9.43 7.47 9.71 7.87 9.74 8.53 10.02 11.58 9.76 11.4 9.7 11.83 9.66 11.44 9.7 9.71 9.97 10.87 10.25 11.64 10.01 9.81 9.63 8.69 9.91 8.75 9.95 9.08 10.22 12.21 10.5 11.57 10.26 10.94 9.57 10.73 9.85 8.71 9.88 9.89 10.16 11.86 9.97 9.43 9.91 8.8 9.94 9.59 10.22 9.57 9.57 9.77 9.85 8.6 9.6 6.62 9.88 8.63 10.16 8.75 9.92 8.55 10.19 11.42 10.47 9.09 9.54 8.28 9.82 7.82 9.85 8.58 10.13 11.75 9.89 12.49 10.44 11.69 9.79 11.75 10.03 12.35 9.65 10.9 9.97 12.31 8.99 12.23 9.24 12.49 9.13 11.21 9.44 11.38 8.83 8.94 9.1 9.54 9.38 9.94 9.14 8.7 9.42 12.04 9.45 11.01 8.76 9.37 9.04 10.72 9.32 8.15 9.08 7.71 9.35 9.4 9.39 9.61 9.01 9.49 9.33 11.21 9.6 11.11 9.1 9.92 9.04 8.03 9.07 8.13 9.35 11.33 9.63 9.08 9.39 11.48 8.97 7.58 9.01 8.67 9.29 8.24 9.05 7.17 9.32 9.78 9.6 11.66 8.67 10.44 8.95 11.85 8.71 8.89 8.98 8.86 9.26 11.78 9.54 9.95 9.3 11.03 9.28 12.11 9.18 8.21 9.22 8.95 9.49 12.44 8.97 8.52 9.25 7.16 9.53 9.52 9.81 10.33 9.57 10.16 8.88 8.46 9.15 6.04 9.19 5.59 9.47 9.3 9.74 9.28 9.23 6.83 9.5 8.24 9.78 12.24 10.06 11.58 9.09 10.43 8.85 7.67 9.13 8.34 9.4 8.25 9.16 6.68 9.44 9.05 9.72 11.67 9.49 9.74 9.53 11.95 9.8 12.31 9.84 9.26 9.15 9.79 8.91 6.2 9.19 6.45 9.46 10.28 9.74 8.69 9.22 6.67 9.5 8.63 9.78 11.48 9.54 8.31 8.85 5.26 9.12 6.86 9.4 11.27 9.68 10.02 8.88 4.95 9.16 3.11 9.44 7.46 9.71 10.29 9.2 7.54 9.47 8.28 9.75 11.89 10.03 8.69 9.06 10.53 9.34 9.57 8.82 5.65 9.1 5.75 9.37 9.75 9.65 8.54 9.13 6.32 9.41 8.24 9.69 11.18 9.72 9.94 9.09 11.48 9.03 10.96 9.07 9.26 9.64 12.02 9.54 8.09 9.3 7.86 9.58 7.97 9.62 9.3 9.89 12.24 9.65 9.16 9.24 9.82 9.52 8.92 9.28 7.6 9.55 9.84 9.83 11.54 9.64 8.44 9.3 8.73 9.58 9.73 9.33 8.09 9.61 9.85 9.89 9.83 8.96 7.54 9.24 8.82 9.51 6.32 9.27 5.18 9.55 8.63 9.83 7.76 9.59 8.59 9.86 10.04 9.17 6.6 9.21 6.82 9.49 8.43 9.25 6.3 9.52 8.32 9.8 10.84 9.56 11.78 9.55 10.32 9.52 11.98 9.14 12.38 9.41 11.8 9.73 12.24 9.39 10.69 9.38 12.33 9.94 9.9 9.64 11.25 8.43 10.49 8.71 9.45 8.74 9.96 9.02 11.36 9.06 11.21 9.0 11.02 8.71 9.4 8.74 10.34 9.02 11.9 8.37 12.24 8.64 8.73 8.68 10.53 8.96 9.35 8.71 9.37 8.99 11.52 8.34 9.66 8.65 11.45 8.97 12.43 8.95 11.22 8.61 9.75 8.88 11.17 9.16 10.05 8.92 9.83 9.2 12.36 9.47 10.43 8.54 9.7 8.82 7.73 8.86 8.45 9.13 10.5 8.89 9.35 9.17 12.32 8.76 8.77 8.79 9.33 8.83 8.97 9.11 10.16 8.58 7.91 8.85 9.1 9.13 10.02 8.89 9.3 9.17 8.44 8.51 6.84 8.79 9.12 9.07 6.66 8.83 6.81 9.1 9.71 9.14 9.89 8.45 9.46 8.73 9.45 8.49 6.83 8.76 8.05 9.04 9.41 8.8 8.51 9.08 11.68 9.07 11.94 8.7 11.47 8.73 11.83 9.01 11.46 9.31 11.69 8.69 9.44 8.97 10.24 9.28 9.95 8.94 9.7 9.22 12.25 9.5 9.8 8.97 10.86 9.24 9.96 8.63 8.74 8.9 7.76 8.94 8.0 9.22 9.91 9.25 11.05 8.56 10.74 8.84 9.99 8.6 7.67 8.88 8.87 9.16 9.33 8.91 8.52 9.19 10.92 9.47 11.41 8.85 11.84 9.13 11.39 8.99 12.23 8.46 10.76 8.43 % patch dots follow 4.3 9.3 5 9.4 6.3 8.8 6.5 9.7 5.8 9.7 6 9.2 6 9.6 7.2 8.8 7.2 9 7.2 9.7 7.3 9.9 8 8.6 9 8.5 10.5 9.6 10.7 10 11 10.3 ] store % Actual dots plotted = 334 + patches. % 100 100 10 setgrid % only standalone 1.15 dup scale 10 10 showgrid 0.4 0.8 0.8 setrgbcolor 1 setlinecap 1 setlinejoin line3 0 0 mt 10 u 10 r 10 d 10 l 0.25 0.25 0.25 setrgbcolor gsave 0 0 mt 0 10 rlineto 10 0 rlineto 0 -10 rlineto closepath clip gsave -3.2 -0.8 translate 0.87 dup scale 0 2 sdat length 2 sub {/cposn exch store sdat cposn 1 add get sdat cposn get 1 0 0 setrgbcolor 0.2 setgray 0.9 settint 0.40 setgray mt dot } for grestore grestore /cstretch 0 store /sstretch 0.015 store black /font1 /Helvetica-Bold 0.9 gonzofont font1 5 -1.3 (amplitude) cc gsave -0.8 5 translate 90 rotate 0 0 (distortion) cc grestore ypos snap3 restore /ypos exch def } def %%%%%% /figure1 { /figadvance 10 store save /snap3 exch def /linestring 1000 string store %%%%%%%%%%%%%%%%%%% electronics begin bestgray -0.0 -2.6 translate % reposition on page % 0 0 10 setgrid already there % 33 14 showgrid /cstretch 0.02 def /sstretch 0.0 def /kern 0.1 def /yinc 1.0 def /red {0 settint} def /blue {0.67 settint} def /purple {0.75 settint} def /font0 /Helvetica-Bold [1.2 0 0 1 0 -0.2] gonzofont /font0 /Helvetica-bold [1 0 0 0.8 0 0 ] gonzofont /font1 /Helvetica 0.75 gonzofont /font4 /Helvetica 0.6 gonzofont /font3 /Helvetica-Bold 0.75 gonzofont /font2 /Helvetica-Oblique 0.75 gonzofont /font5 /Helvetica-Bold 1.1 gonzofont /font6 /Helvetica [2 0 0 1.4 0 0] gonzofont /font7 /Helvetica-Oblique 0.75 gonzofont /font8 /Symbol 0.75 gonzofont /font9 /Helvetica [.6 0 0 .6 -.15 .4] gonzofont /font- /Helvetica-Bold [0.4 0 0 0.55 0 0] gonzofont /kern 0.15 def /tabs [16.5] def /txtwide 29 def font1 /tabs [17.5] def font1 /yinc 0.9 def line1 bestgray black 22 6 mt 3 d 5 rx circ1 26 3 mt rarrow 21 6 mt 1 d 6 rx circ1 26 5 mt rarrow 20 6 mt 1.5 d 4 rx 2 ux 3 r circ1 26 6.5 mt rarrow 19 6 mt 2 d 5.5 rx 4 ux 2.5 r circ1 26 8 mt rarrow 17 10 mt 1 u 5 l 8 d 4 l circ1 9.5 3 mt rarrow % low priority 18 6 mt 1.5 d ground 17 6 mt 2.5 d 7 lx 1 u 2 l circ1 9.5 4.5 mt rarrow 16 6 mt 2 d 5.5 lx 2 u 2.5 l circ1 9.5 6 mt rarrow 15 6 mt 1.5 d 4 lx 3 u 3 l circ1 9.5 7.5 mt rarrow 14 6 mt 1 d 2.5 lx 4 u 3.5 l circ1 9.5 9 mt rarrow 21 10 mt 2 ux 3 r 2 d 3 r circ1 26 13 mt rarrow 20 10 mt 2.5 u 4.5 r 1 d 2.5 r circ1 26 11.5 mt rarrow 19 10 mt 3 u 8 r circ1 26 10 mt rarrow 18 10 mt 1.5 u circ1 % +5v 16 10 mt 3 ux circ1 16 12.3 mt darrow 15 10 mt 2 ux 7 l circ1 9.5 12 mt rarrow 14 10 mt 1.5 ux 2.5 l 1 d 3.5 l circ1 9.5 10.5 mt rarrow beige 14 6 moveto 18 (MS28D-05X) (IN1 IN0 XIN IN6 +5V /DA /DB /DC NC) (IN2 IN3 IN4 IN5 GND DA DB DC SYNC) dipdraw font4 22 10.65 (NC) cc font1 18 12 (+5V) cc font1 /overstrikeht 0.55 store 27.7 13 0.3 sub (Delta "A" complement) cl 27.7 11.5 0.3 sub (Delta "B" complement) cl 27.7 10 0.3 sub (Delta "C" complement) cl 27.7 8 0.3 sub (Delta "A" true output) cl 27.7 6.5 0.3 sub (Delta "B" true output) cl 27.7 5 0.3 sub (Delta "C" true output) cl 27.7 3 0.3 sub (Zero degrees sync) cl 16 14.7 (10 MHz per 60 Hz) cc 16 13.8 (input clock ref) cc 7.3 2.7 (high ~|jOR|j~ 0-100 amp bit 6) cr 7.3 4.2 (high ~|jOR|j~ 0-100 amp bit 5) cr 7.3 5.7 (high ~|jOR|j~ 0-100 amp bit 4) cr 7.3 7.2 (slew up ~|jOR|j~ 0-100 amp bit 3) cr 7.3 8.7 (slew down ~|jOR|j~ 0-100 amp bit 2) cr 7.3 10.2 (step up ~|jOR|j~ 0-100 amp bit 1) cr 7.3 11.7 (step down ~|jOR|j~ 0-100 amp bit 0) cr end ypos snap3 restore /ypos exch def } def %%%%%%%%%%%%%% /figure2 { /figadvance 18 store save /snap3 exch def /linestring 1000 string store %%%%%%%%%%%%%%%%%%% electronics begin bestgray line1 0 -1 translate % reposition on page % 0 0 10 setgrid already there % 33 14 showgrid /onecoil { 0 0 mt 1 pr 8 hcoil 0.9 r} store /delta {gsave translate gsave onecoil grestore gsave 60 rotate onecoil grestore gsave 4 6.928 translate -60 rotate onecoil grestore 0 0 mt circ1 4 7 mt circ1 8 0 mt circ1 grestore } store /box35 {gsave /callout exch store translate 0 -1.5 mt 2.5 pl 3 pu 5 pr 3 pd closepath gsave 0.8 setgray fill grestore gsave 0.33 setgray line3 stroke grestore black 0 0.1 callout cc grestore} store /font1 /Helvetica 0.8 gonzofont /font2 /Helvetica-Bold 1 gonzofont /hbd {gsave translate 0 2.5 mt 5 d ground 0 2.5 mt circ1 /yinc 0.9 store 0 0 mt 3 l 6 r 0 0 (half bridge\ndriver) box35 grestore }store font1 2 3 mt 3 l circ1 1 3 mt rarrow 4 3 mt 5 r 2 d 13 r 2 u 6 7 mt 7 l circ1 1 7 mt rarrow 10 11 mt 11 l circ1 1 11 mt rarrow 14 11 mt 4 r 1 d 11 7 mt 1 r 4 d 2 r 14 3 delta 4.5 3 hbd 8 7 hbd 11.5 11 hbd font2 -2.3 2.6 (DC) cc -2.3 6.6 (DA) cc -2.3 10.6 (DB) cc 14.5 7 (a) cc 21.4 7 (b) cc 18 1.7 (c) cc 3.5 5.3 (+v) cc 6.8 9.3 (+v) cc 10.4 13.3 (+v) cc 13.5 1.7 (TA) cc 23.3 1.7 (TC) cc 18 11.5 (TB) cc end ypos snap3 restore /ypos exch def } def %%%%%%% core defs for magsin plots %%%%%%% core defs for magsin plots /coredefs { /shakendelta28 [ [ [868 0 0 1730 0 0 0 868] 0.000000 0.0000000 3472 ] % shortened [ [103 1242 151 63 211 1001 698 3] 0.0439439 1.000650 3472 ] ] def /aa mark shakendelta28 {0 get 0 get 2 mul} forall ] store % double a /bb mark shakendelta28 {0 get 1 get} forall ] store /cc mark shakendelta28 {0 get 2 get} forall ] store /dd mark shakendelta28 {0 get 3 get} forall ] store /ee mark shakendelta28 {0 get 4 get} forall ] store /ff mark shakendelta28 {0 get 5 get} forall ] store /gg mark shakendelta28 {0 get 6 get} forall ] store /hh mark shakendelta28 {0 get 7 get 2 mul } forall ] store % double h % aa == bb == cc == dd == ee == ff == gg == hh == /amplitude 53 store /delaypattern [ (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) (aa)(bb)(cc)(dd)(ee)(ff)(gg) (hh)(gg)(ff)(ee)(dd)(cc)(bb) ] store /portpattern [ <2B> <07> <2B><2B> <2B> <2B> pop <07> <2B><69> <69><2B><69> <2B><69><2B> <07> <2B><69> <69><45> <07> <45><69><45> <69><45><69> <69><45> pop <07> <45> <45> <45><45> <07> <45> <64> <07> <86><86> <86> <86> pop <07> <86> <86> <86><86> <07> <86> ] store % 100 100 10 setgrid % 30 60 showgrid /hscale 30 3472 12 mul div store /vscale 4 store /phasea {gsave translate /port 0 store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (10000000) exch mergestr 100 string cvs % dereference? dup length 1 sub port sub get 48 sub /state exch store delaypattern posn get cvn load amplitude get /stall exch store currentpoint exch pop cvi /nowat exch store nowat 0 eq state 0 ne and {0 vscale rlineto} if nowat 0 ne state 0 eq and {0 vscale neg rlineto} if stall hscale mul 0 rlineto } for stroke grestore} store %%%%%%%%% /phaseb {gsave translate /port 1 store /prev false store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub port sub get 48 sub /state exch store delaypattern posn get cvn load amplitude get /stall exch store currentpoint exch pop cvi /nowat exch store nowat 0 eq state 0 ne and {0 vscale rlineto} if nowat 0 ne state 0 eq and {0 vscale neg rlineto} if stall hscale mul 0 rlineto } for stroke grestore} store %%%%%%%%% /phasec {gsave translate /port 2 store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub port sub get 48 sub /state exch store delaypattern posn get cvn load amplitude get /stall exch store currentpoint exch pop cvi /nowat exch store nowat 0 eq state 0 ne and {0 vscale rlineto} if nowat 0 ne state 0 eq and {0 vscale neg rlineto} if stall hscale mul 0 rlineto } for stroke grestore} store /halfwave {gsave translate /port 3 store line1 1 0 0 setrgbcolor 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub port sub get 48 sub cvi /state exch store delaypattern posn get cvn load amplitude get /stall exch store currentpoint exch pop cvi /nowat exch store % state == % nowat == % stall == nowat 0 eq state 0 ne and {0 vscale rlineto} if nowat 0 ne state 0 eq and {0 vscale neg rlineto} if stall hscale mul 0 rlineto % currentpoint == == % (\n) print flush } for stroke grestore} store %%%%%%%%%%%% /AminusC {gsave translate /Cport 2 store /Aport 0 store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Cport sub get 48 sub cvi 2 div /Cstate exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Aport sub get 48 sub cvi 2 div /Astate exch store /nustate Astate Cstate sub store delaypattern posn get cvn load amplitude get /stall exch store currentpoint pop nustate vscale mul lineto stall hscale mul 0 rlineto % currentpoint == == % (\n) print flush } for stroke grestore} store %%%%%%%%%%% /BminusA {gsave translate /Bport 1 store /Aport 0 store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Aport sub get 48 sub cvi 2 div /Astate exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Bport sub get 48 sub cvi 2 div /Bstate exch store /nustate Bstate Astate sub store delaypattern posn get cvn load amplitude get /stall exch store currentpoint pop nustate vscale mul lineto stall hscale mul 0 rlineto % currentpoint == == % (\n) print flush } for stroke grestore} store %%%%%%%%%%% /CminusB {gsave translate /Cport 2 store /Bport 1 store line1 0 0 mt 0 1 portpattern length 1 sub {/posn exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Bport sub get 48 sub cvi 2 div /Bstate exch store portpattern posn get 0 get 2 12 string cvrs (00000000) exch mergestr dup length 1 sub Cport sub get 48 sub cvi 2 div /Cstate exch store /nustate Cstate Bstate sub store delaypattern posn get cvn load amplitude get /stall exch store currentpoint pop nustate vscale mul lineto stall hscale mul 0 rlineto } for stroke grestore} store } def %%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%% /figure3 {/figadvance 10 store save /snap3 exch def /linestring 1000 string store %%%%%%%%%%%%%%%%%%% electronics begin bestgray line1 coredefs -3.8 -1.8 translate % position on page % 30 12 showgrid /vscale 3 store 1 0 1 setrgbcolor 1 1 1 setrgbcolor % nasty bug dont know why dribbles down 0 10.3 phaseb 1 0 1 setrgbcolor 0 9 phasea 0 0 phaseb 0 4.5 phasec 30 0 mt 3 u % patch end black /font2 /Helvetica-Bold 1 gonzofont -1 1 (DC) cr % we have a cc conflict!!!! -1 5.5 (DB) cr -1 10 (DA) cr % halfwave % AminusC % BminusA % CminusB end ypos snap3 restore /ypos exch def } def %%%%%%%%%%%%%%%%%%%%%%% /figure4 {/figadvance 15 store save /snap3 exch def /linestring 1000 string store %%%%%%%%%%%%%%%%%%% electronics begin bestgray line1 coredefs -3 -0.5 translate % position on page % 30 12 showgrid /vscale 4 store %0 9 phasea 1 0 0 setrgbcolor 30 0 mt 3 u % patch end %0 0 phaseb %0 4.5 phasec 1 0 1 setrgbcolor 0 9.2 2 add AminusC 0 0.2 BminusA 0 4.7 1 add CminusB black /font2 /Helvetica-Bold 1 gonzofont /overstrikeht 0.85 store -1 0 (DC - DA) cr % we have a cc conflict!!!! -1 4.5 1 add (DB - DC) cr -1 9 2 add (DA - DB) cr % halfwave % AminusC % BminusA % CminusB end ypos snap3 restore /ypos exch def } def /figure5 { save /snap3 exch def /linestring 1000 string store %%%%%%%%%%%%%%%%%%% electronics begin /circ1b {gsave currentpoint newpath 0.20 0 360 arc % whitefill gsave beige 0.88 setgray fill grestore black line1 stroke grestore} def %for circle bestgray line1 coredefs -4.5 -1 translate % position on page % 30 12 showgrid /font2 /Helvetica-Bold 1 gonzofont /overstrikeht 0.70 store /yinc 1.2 store /anet {gsave translate 0 6 mt 1.5 r 6 d 1.5 l circ1b 0 6 mt circ1b 1.5 1.5 vresistor 1.5 4.5 vresistor 1.5 3 mt dot 1.5 3 mt 1.5 r circ1b font2 -0.7 5.5 (DA) cr % no cc here! -0.7 -0.5 (D|oB|o) cr font1 3.8 3.5 (phase a\noutput) cl grestore } store /bnet {gsave translate 0 6 mt 1.5 r 6 d 1.5 l circ1b 0 6 mt circ1b 1.5 1.5 vresistor 1.5 4.5 vresistor 1.5 3 mt dot 1.5 3 mt 1.5 r circ1b font2 -0.7 5.5 (DB) cr % no cc here! -0.7 -0.5 (D|oC|o) cr font1 3.8 3.5 (phase b\noutput) cl grestore } store /cnet {gsave translate 0 6 mt 1.5 r 6 d 1.5 l circ1b 0 6 mt circ1b 1.5 1.5 vresistor 1.5 4.5 vresistor 1.5 3 mt dot 1.5 3 mt 1.5 r circ1b font2 -0.7 5.5 (DC) cr % no cc here! -0.7 -0.5 (D|oA|o) cr font1 3.8 3.5 (phase c\noutput) cl grestore } store -2 0 mt 10.7 pu 33.2 pr 10.7 pd closepath 0.88 setgray fill black 1.5 3 anet 12 3 bnet 22.5 3 cnet font1 9.5 0.8 (All resistors 2.2K.) cl end ypos snap3 restore /ypos exch def } def /figureoneauto { /figadvance 17 store save /snap1a exch store xpos 8 add ypos figadvance sub translate beige figure3var snap1a restore /ypos ypos figadvance sub yinc sub store } store /figuretwoauto { /figadvance 13.5 store save /snap2a exch store xpos 8 add ypos figadvance sub translate beige % figure2 figure4var snap2a restore /ypos ypos figadvance sub yinc sub store } store /figurethreeauto { /figadvance 11 store save /snap3a exch store xpos 8 add ypos figadvance sub translate beige figure3 snap3a restore /ypos ypos figadvance sub yinc sub store } store /figurethreeautox { save /snap3ax exch store beige 0 1000 translate figure3 snap3ax restore } store /figurefourauto { /figadvance 13 store save /snap4a exch store xpos 8 add ypos figadvance sub translate beige figure4 snap4a restore /ypos ypos figadvance sub yinc sub store } store /figurefiveauto { /figadvance 10 store save /snap5a exch store xpos 8 add ypos figadvance sub translate beige figure5 snap5a restore /ypos ypos figadvance sub yinc sub store } store /figure2x { 0.50 settint /font0 /StoneSans-Bold 6 gonzofont font0 0 1 1 setrgbcolor 10 3 (54) cc 20 25 showgrid line3 0 1 1 setrgbcolor [{-0.5 0 mt 20.5 r} 10 3] yrpt [{0 -0.5 mt 25.5 u} 10 3] xrpt 0 25 mt 20 r black 0 0 0 setrgbcolor 0 2 ex54 length 2 sub {/posn2 exch store ex54 posn2 get ex54 posn2 1 add get moveto dot} for 1 0 1 setrgbcolor 0 2 ex54good length 2 sub {/posn2 exch store ex54good posn2 get ex54good posn2 1 add get moveto dot} for 1 0.5 0 setrgbcolor ex54want 0 get ex54want 1 get mt dot 1 0 0 setrgbcolor ex54orig 0 get ex54orig 1 get mt dot /font1 /StoneSans-Bold 0.9 gonzofont font1 0.3 0.3 0.3 setrgbcolor 0 -1.5 (0.535) cc 10 -1.5 (0.540) cc 20 -1.5 (0.545) cc -0.9 0 0.3 sub (0.00%) cr -0.9 10 0.3 sub(0.05%) cr -0.9 20 0.3 sub (0.10%) cr % 11.55 18.2 (= raw quant) cl % 11.55 17.2 (= best neighbor) cl /font2 /StoneSans-Bold 1.1 gonzofont font1 10 -2.7 (Amplitude) cc gsave -5.2 10 translate 90 rotate 0 0 (Unfiltered THD 2|j-|j22)cc grestore /yinc 1.2 store 24.3 11.5 (Nearby\nquantized\nAmplitude 54\noptions) cc } store %%%%%%%%% figures for fun with fields %%%%% /emptyfield {save /mtsnap exch store gsave translate showblank { 0 0 mt fieldhi pu fieldwi pr fieldhi pd closepath aqua 0.85 setgray fill} if black 0.3 setlinewidth 0 -3.5 mt fieldhi 3 add u -0.5 0 mt fieldwi 1 add r fieldwi -3.5 mt fieldhi 3 add u /cstretch 0 store /sstretch 0 store /kern 1 store /font- /Symbol 8.5 gonzofont /font1 /Helvetica 8.5 gonzofont font- black 0 -13(|1(|jx|j=|-|j0|j)) cc fieldwi -13 (|1(|jx|j=|j|-p|j)) cc fieldwi 2 div fieldhi 4 add (|-f|1|j=|j1000|j|jsin|j(|jx|j) volts) cc fieldwi 2 div -13 (|1zero volts) cc gsave -5 fieldhi 2 div translate 90 rotate 0 0 (|1zero volts) cc grestore gsave fieldwi 12 add fieldhi 2 div translate 90 rotate 0 0 (|1zero volts) cc grestore grestore mtsnap restore} store /field [ [0 0.0 % shortened .0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 0.0 0.0 0.0 0 3.06152e-14 6.12303e-14 9.18455e-14 1.22461e-13] ] store /adjtint { 1000 sub abs 1000 div 0.66667 mul } store /plotfield {/sf exch store gsave translate sf dup scale field length /vsize exch store field 0 get length /hsize exch store 0 1 vsize 1 sub { /vpos exch store 0 1 hsize 1 sub { /hpos exch store vpos hpos moveto 1 pd 1 pr 1 pu closepath field vpos get hpos get adjtint 0.7 1 sethsbcolor fill } for % each horizontal pixel } for % each row grestore } store /w {setlinewidth} store /n {newpath} store /m {moveto} store /l {lineto} store /S {stroke} store /sc {setrgbcolor} store /equipot { 0.149994 w n 100 216 m 107 216 l 108 212.951 l 109 204.968 l { % shortened 104.988 208.47 l 103.99 208.411 l 102.991 208.366 l 101.991 208.337 l 100.991 208.322 l } pop S } store /grad { % shortened n 140 215 m 337.619 193.998 l 338.618 193.951 l 339.617 193.919 l S } store /figure1 { /fieldhi 117 store /fieldwi 241 store /showblank true store gsave 0.1 dup scale -35 5 emptyfield grestore} store /figure2 { -.5 -12 translate % adjust to page /showgrid {gsave ggray /vblocks exch def /hblocks exch def thingridlines setlinewidth aqua 0 1 1 setrgbcolor [{0 0 moveto 0 vblocks rlineto stroke} 1 hblocks 1 add] xrpt [{0 0 moveto hblocks 0 rlineto stroke} 1 vblocks 1 add] yrpt fatterborder { gsave newpath 0 0.96 blocksize div dtransform round idtransform setlinewidth pop 2 setlinecap 0 0 moveto hblocks 0 rlineto 0 vblocks rlineto hblocks neg 0 rlineto closepath stroke grestore} if fat5 { gsave newpath 0 0.48 blocksize div dtransform round idtransform setlinewidth pop mark {5 0 moveto 0 vblocks rlineto stroke} 5 hblocks 5 div cvi] xrpt mark {0 5 moveto hblocks 0 rlineto stroke} 5 vblocks 5 div cvi] yrpt grestore} if fatter10 { gsave newpath 0 0.96 blocksize div dtransform round idtransform setlinewidth pop mark {10 0 moveto 0 vblocks rlineto stroke} 10 hblocks 10 div cvi] xrpt mark {0 10 moveto hblocks 0 rlineto stroke} 10 vblocks 10 div cvi] yrpt grestore} if grestore} def 0 0 mt 20 pu 20 pr 20 pd closepath 0.5 1 1 setrgbcolor fill 0 1 0 setrgbcolor black 20 20 showgrid line3 0 0 1 setrgbcolor { 6 3 mt -2 10 rlineto 5 4 3 rlineto 4 -3 rlineto -2 -8 rlineto -2 -4 rlineto closepath stroke} pop line1 black -1 10 mt 22 r 12 -1 mt 22 u { line1 12 2 mt 12 u 12 14 mt 5 2.5 rlineto % right side -1 -11 rlineto 12 2 lineto stroke 12 14 mt -10 1.5 rlineto % left side 2 -10 rlineto 12 2 lineto stroke 2 15.5 mt % rear top 6 1.5 rlineto 17 16.5 lineto stroke } pop % by the panel 4 5.5 mt 2 15.5 lineto 12 14 lineto 12 2 lineto closepath 0.8 0.8 1 setrgbcolor fill 12 2 mt 12 14 lineto 17 16.5 lineto 16 5.5 lineto closepath 0.65 0.65 1 setrgbcolor fill 2 15.5 mt % top panel 8 17 lineto 17 16.5 lineto 12 14 lineto closepath 0.53 0.53 1 setrgbcolor fill 1 0 0 setrgbcolor % red vectors line1 3.1 10 mt 1.22 20 lineto stroke 3.1 10 mt 3.1 20 lineto stroke 16.45 10 mt 16.42 20 lineto stroke 16.45 10 mt 17.3 20 lineto stroke black /cstretch 0 store /sstretch 0 store /font1 /StoneSans 0.9 gonzofont font1 /yinc 1 store -2.5 10.3 (tilt\naxis) cc 17.7 0.7 (image) cc 9.7 4.5(subject) cc 3.1 20 mt dot 1.22 20 mt dot gsave 3.1 0.3 add 20.8 translate gsave 90 rotate 0 0 (newtopleft) cl grestore grestore gsave 1.2 0.3 add 20.8 translate gsave 90 rotate 0 0 (oldtopleft) cl grestore grestore 17.3 20 mt dot 16.42 20 mt dot gsave 17.5 0.3 add 20.8 translate gsave 90 rotate 0 0 (oldtopright) cl grestore grestore gsave 16.25 0.3 add 20.8 translate gsave 90 rotate 0 0 (newtopright) cl grestore grestore 12 22.5 (neutral\naxis) cc } store /figure3 { /fieldhi 117 store /fieldwi 241 store gsave 0.1 dup scale -35 5 1 plotfield -100 -100 translate -35 5 translate equipot grestore /showblank false store gsave 0.1 dup scale -35 5 emptyfield grestore} store /figure4 { /fieldhi 117 store /fieldwi 241 store gsave 0.1 dup scale -35 5 1 plotfield -100 -100 translate -35 5 translate equipot grad grestore /showblank false store gsave 0.1 dup scale -35 5 emptyfield grestore} store %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /burpwide 29.5 store /burplebox3 {save /burp1 exch store xpos ypos translate -1 .2 mt 3.5 yinc mul .4 add pd burpwide pr 3.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox2 {save /burp1 exch store xpos ypos translate -1 .2 mt 2.5 yinc mul .4 add pd burpwide pr 2.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox2.5 {save /burp1 exch store xpos ypos translate -1 .2 mt 3 yinc mul .4 add pd burpwide pr 3 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox4 {save /burp1 exch store xpos ypos translate -1 .2 mt 4.5 yinc mul .4 add pd burpwide pr 4.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox4.5 {save /burp1 exch store xpos ypos translate -1 .2 mt 5 yinc mul .4 add pd burpwide pr 5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox5w {save /burp1 exch store xpos ypos translate -1 .2 mt 5.5 yinc mul .4 add pd burpwide pr 5.5 yinc mul .4 add pu closepath 0.9 setgray fill true {special5 } if burp1 restore } def /burpcom {save /burpx exch store /bht exch store save /burp1 exch store xpos ypos translate -1 .2 mt bht yinc mul .4 add pd burpwide pr bht yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore} store /burpwidew 32 store /burpcomw {save /burpx exch store /bht exch store save /burp1 exch store xpos 1 sub ypos translate 0 .2 mt bht yinc mul .4 add pd burpwidew pr bht yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore} store /burplebox3.5 {4 burpcom} store /burplebox5 {5.5 burpcom} store /burplebox5.5 {6 burpcom} store /burplebox6 {6.5 burpcom} store /burplebox6.5 {7 burpcom} store /burplebox7 {7.5 burpcom} store /burplebox7.5 {8 burpcom} store /burplebox8 {8.5 burpcom} store /burplebox8.5 {9 burpcom} store /burplebox9 {9.5 burpcom} store /burplebox9.5 {10 burpcom} store /burplebox10 {10.5 burpcom} store /burplebox10.5 {11 burpcom} store /burplebox11 {11.5 burpcom} store /burplebox11.5 {12 burpcom} store /burplebox12 {12.5 burpcom} store /burplebox11w {11.5 burpcomw} store /burplebox12.5 {13 burpcom} store /burplebox13 {13.5 burpcom} store /burplebox13.5 {14 burpcom} store /burplebox14 {14.5 burpcom} store /burplebox14.5 {15 burpcom} store /burplebox15{15.5 burpcom} store /burplebox15.5{16 burpcom} store /burplebox16 {16.5 burpcom} store /burplebox16.5 {17 burpcom} store /burplebox18 {18.5 burpcom} store /burplebox18.5 {19 burpcom} store /burplebox19 {19.5 burpcom} store /burplebox21.5 {22 burpcom} store /burplebox22{22.5 burpcom} store /burplebox24{24.5 burpcom} store /burplebox25{25.5 burpcom} store /burplebox25.5{26 burpcom} store /burplebox27{27.5 burpcom} store /burplebox28 {28.5 burpcom} store /burplebox28.5 {29 burpcom} store /burplebox34 {34.5 burpcom} store /burplebox38 {38.5 burpcom} store /burplebox38.5{39 burpcom} store /burplebox40{40.5 burpcom} store /burplebox40.5{41 burpcom} store /burplebox41.5{42 burpcom} store /burplebox42 {42.5 burpcom} store /burplebox42.5{43 burpcom} store % nearly a full page /burplebox43 {43.5 burpcom} store /burplebox34w{34.5 burpcomw} store /burplebox34.5w{35 burpcomw} store /burplebox38w{38.5 burpcomw} store /burplebox38.5w{39 burpcomw} store /burplebox40w{40.5 burpcomw} store /burplebox17 {save /burp1 exch store xpos ypos translate -1 .2 mt 17.5 yinc mul .4 add pd burpwide pr 17.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox20 {save /burp1 exch store xpos ypos translate -1 .2 mt 20.5 yinc mul .4 add pd burpwide pr 20.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox23 {save /burp1 exch store xpos ypos translate -1 .2 mt 23.5 yinc mul .4 add pd burpwide pr 23.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox26.5 {save /burp1 exch store xpos ypos translate -1 .2 mt 27 yinc mul .4 add pd burpwide pr 27 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox30 {save /burp1 exch store xpos ypos translate -1 .2 mt 30.5 yinc mul .4 add pd burpwide pr 30.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def /burplebox36 {save /burp1 exch store xpos ypos translate -1 .2 mt 36.5 yinc mul .4 add pd burpwide pr 36.5 yinc mul .4 add pu closepath 0.9 setgray fill burp1 restore } def %%%%%%%%%%% figure 1 routine % autopositions on box6 %%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%% TWO PATTERNS %%%%%%%%%%%%%% /ivoryrndcolor [230 230 205 40] store % random pattern colors [red blue green variance ] /magentarndcolor [230 100 230 120]store /makepatternstrings { [230 210 190 80] buildpixels magentarndcolor /accentpatstring exch store ivoryrndcolor buildpixels makeimagestring /bodypatstring exch store } store /burppatstrings { ivoryrndcolor buildpixels makeimagestring /bodypatstring exch store magentarndcolor buildpixels makeimagestring /accentpatstring exch store } store /DeviceRGB setcolorspace % pick color model /hpixels 50 store % size of pattern image /vpixels 50 store /issize hpixels vpixels mul store % makestring converts a stack top array into a string... /makestring {dup length string dup /NullEncode filter 3 -1 roll {1 index exch write} forall pop} def % /buildpixels makes three nearby colors given [r b g texture] all 0-255 integers /buildpixels {aload pop /texture exch store /b0 exch store /g0 exch store /r0 exch store 123 srand /r1 r0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /g1 g0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /b1 b0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /r2 r0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /g2 g0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /b2 b0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /r3 r0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /g3 g0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store /b3 b0 texture random texture 2 div sub add cvi dup 255 ge {pop 255}if dup 0 lt {pop 0} if store } store % /makeimagestring creates a sting usable for a pattern image /makeimagestring { 12345 srand % make repeatable /iarray mark issize { r1 g1 b1} repeat ] store % fill all with color 1 issize 2 div cvi { iarray issize % fill half with color 2 random 3 mul cvi [ r2 g2 b2 ] putinterval} repeat issize 2 div cvi { iarray issize % fill third with color 3 random 3 mul cvi [ r3 g3 b3 ] putinterval} repeat iarray makestring } store % /rndimage shows the random string as a patternable image /bodyrandimage { gsave 5 dup scale << % start image dicationary /ImageType 1 % always one /Width hpixels % width in pixels /Height vpixels % height in pixels /ImageMatrix [hpixels 0 0 vpixels neg 0 vpixels ] /DataSource bodypatstring % proc to get string data /BitsPerComponent 8 % color resolution /Decode [0 1 0 1 0 1] % per red book 4.10 >> image % call the image grestore } def /accentrandimage { gsave 5 dup scale << % start image dicationary /ImageType 1 % always one /Width hpixels % width in pixels /Height vpixels % height in pixels /ImageMatrix [hpixels 0 0 vpixels neg 0 vpixels ] /DataSource accentpatstring % proc to get string data /BitsPerComponent 8 % color resolution /Decode [0 1 0 1 0 1] % per red book 4.10 >> image % call the image grestore } def % using a separate pattern dictionary for each pattern... /bodypatdict << /PatternType 1 % Tiling pattern /PaintType 1 % Colored /TilingType 1 /BBox [0 0 50 50] /XStep 5 /YStep 5 /PaintProc { begin bodyrandimage end} >> store /accentpatdict << /PatternType 1 % Tiling pattern /PaintType 1 % Colored /TilingType 1 /BBox [0 0 50 50] /XStep 5 /YStep 5 /PaintProc { begin accentrandimage end} >> store /burpbackmain { save /snapbb exch store save /snapb exch store % show the body background bodypatdict matrix % Identity matrix makepattern % Instantiate the pattern /bodypat exch def 4 0 % for the actual slide size 12 8 /Pattern setcolorspace bodypat setcolor rectfill % Fill rectangle with pattern snapb restore 4 0 12 8 line1 black rectstroke save /snapy exch store % show the accent accentpatdict matrix % Identity matrix makepattern % Instantiate the pattern /accentpat exch def 18.5 0 12 8 4 copy /Pattern setcolorspace accentpat setcolor rectfill % Fill rectangle with pattern snapy restore 18.5 0 12 8 line1 black rectstroke snapbb restore } store /figure3x {save /snap3 exch store translate % 34 8 showgrid makepatternstrings burppatstrings % burpbackstrings burpbackmain snap3 restore } store %%%%%%%%%%%%%%% end figure3 %%%%%%%%%%%% first special plot /special1code { /a01 [ 11.98757334830098 % p1 delay 0.02494857340377088 % p1 width 11.96309297293453 % p2 delay 0.04880748072357122 % p2 width 11.940266741737353 % p3 delay 0.07053366579209097 % p3 width 11.920110003436285 % p4 delay 0.08917718733052737 % p4 width 11.903448622759931 % p5 delay 0.10392320715383363 % p5 width 11.890997400038934 % p6 delay 0.1141272527930397 % p6 width 11.883303463712295 % p7 delay 0.11934332976518647 % p7 width 5.940346750117669 % quadrant delay ] store /a10 [ 11.870255884662251 % p1 delay 0.24926326067621396 % p1 width 11.627261913532986 % p2 delay 0.48772075225425126 % p2 width 11.401006709297277 % p3 delay 0.7050052291468631 % p3 width 11.201126478014806 % p4 delay 0.8916211348287959 % p4 width 11.036121661040383 % p5 delay 1.0393583630906704 % p5 width 10.912994009526542 % p6 delay 1.1416713778561558 % p6 width 10.836964879593466 % p7 delay 1.1939991529573461 % p7 width 5.405629193521989 % quadrant delay ] store /a20 [ 11.730827315951456 % p1 delay 0.4971341380973975 % p1 width 11.247686685343746 % p2 delay 0.9732376712143491 % p2 width 10.798693242131715 % p3 delay 1.407947044520391 % p3 width 10.402477789378082 % p4 delay 1.78228682672421 % p4 width 10.075528131993294 % p5 delay 2.079475909290011 % p5 width 9.831551570148512 % p6 delay 2.285806430413743 % p6 width 9.680871958761386 % p7 delay 2.391516582063389 % p7 width 4.8149587039683155 % quadrant delay ] store /a30 [ 11.582072392748948 % p1 delay 0.7421737945018947 % p1 width 10.862633911787377 % p2 delay 1.454218311923288 % p2 width 10.194732255409651 % p3 delay 2.106545777255711 % p3 width 9.605233324537401 % p4 delay 2.6708278536717955 % p4 width 9.118304754762583 % p5 delay 3.1210612368032926 % p5 width 8.754459346379754 % p6 delay 3.435090920436508 % p6 width 8.529472562792705 % p7 delay 3.5965061939786693 % p7 width 4.226667363010421 % quadrant delay ] store /a40 [ 11.424050411047465 % p1 delay 0.9828418379051129 % p1 width 10.473248533619292 % p2 delay 1.9280479848577236 % p2 width 9.590640663430097 % p3 delay 2.7980351182823426 % p3 width 8.810545720192863 % p4 delay 3.555566231331163 % p4 width 8.164652806450142 % p5 delay 4.164668715768244 % p5 width 7.680713770893433 % p6 delay 4.592711162444033 % p6 width 7.380758970713202 % p7 delay 4.813962276129942 % p7 width 3.6395557969349425 % quadrant delay ] store /a50 [ 11.25647168216318 % p1 delay 1.2174139856738683 % p1 width 10.080431345631026 % p2 delay 2.391612373063623 % p2 width 8.987846411116894 % p3 delay 3.4787553647023585 % p3 width 8.01966536065963 % p4 delay 4.433803253978574 % p4 width 7.214999377113287 % p5 delay 5.210430981795014 % p5 width 6.609527274825396 % p6 delay 5.762766698554145 % p6 width 6.232831441964791 % p7 delay 6.050997667516469 % p7 width 3.0524467812417413 % quadrant delay ] store /a53 [ 11.204229246524123 % p1 delay 1.2863028469519246 % p1 width 9.962015674530373 % p2 delay 2.528117843985992 % p2 width 8.807469507353026 % p3 delay 3.680145761308111 % p3 width 7.783358489290968 % p4 delay 4.695379940110421 % p4 width 6.930993065963889 % p5 delay 5.5244810879620445 % p5 width 6.288586696196958 % p6 delay 6.117000009644471 % p6 width 5.888323429144677 % p7 delay 6.427466502066167 % p7 width 2.876129898966852 % quadrant delay ] store /a60 [ 11.078495962518918 % p1 delay 1.4438411449625086 % p1 width 9.684772040454877 % p2 delay 2.840939034126027 % p2 width 8.38774096372643 % p3 delay 4.143446978421139 % p3 width 7.234097294409224 % p4 delay 5.300789342760972 % p4 width 6.270187484640822 % p5 delay 6.2573120579578045 % p5 width 5.540415121300725 % p6 delay 6.9509377594411745 % p6 width 5.083782352079723 % p7 delay 7.31917029639942 % p7 width 2.4640721668002356 % quadrant delay ] store /a70 [ 10.888278735987464 % p1 delay 1.6594599780251222 % p1 width 9.286332677429444 % p2 delay 3.270497867115676 % p2 width 7.791694139706859 % p3 delay 4.783840563470704 % p3 width 6.455843532587245 % p4 delay 6.147367771354908 % p4 width 5.331869368850619 % p5 delay 7.300805550943892 % p5 width 4.473484564450537 % p6 delay 8.165497800155037 % p6 width 3.9315873351224724 % p7 delay 8.640550109600042 % p7 width 1.8728900051999772 % quadrant delay ] store /a80 [ 10.681702836852158 % p1 delay 1.8602538062958054 % p1 width 8.88398269670934 % p2 delay 3.6714981402848607 % p2 width 7.200946234572324 % p3 delay 5.385275030570618 % p3 width 5.687867904890517 % p4 delay 6.9536645196485765 % p4 width 4.403487202517624 % p5 delay 8.324602905316311 % p5 width 3.4104122823979494 % p6 delay 9.417450259887687 % p6 width 2.774084338047487 % p7 delay 10.068107274017336 % p7 width 1.2766645679914034 % quadrant delay ] store /a90 [ 10.447373907519674 % p1 delay 2.038123534960869 % p1 width 8.472609797490058 % p2 delay 4.0258541900581655 % p2 width 6.615791805649657 % p3 delay 5.91534811864263 % p3 width 4.935247854465985 % p4 delay 7.666864442425741 % p4 width 3.4934960493166684 % p5 delay 9.260584158941057 % p5 width 2.358772151850779 % p6 delay 10.696787617357046 % p6 width 1.6101420251774101 % p7 delay 11.792019752288254 % p7 width 0.6709845938560051 % quadrant delay ] store /a95 [ 10.307313139895288 % p1 delay 2.111222840209404 % p1 width 8.256837177571334 % p2 delay 4.169598534647832 % p2 width 6.323664766096179 % p3 delay 6.124919743159786 % p3 width 4.567759372280754 % p4 delay 7.93736307227887 % p4 width 3.052826978493542 % p5 delay 9.604367560734132 % p5 width 1.8471062124079367 % p6 delay 11.250122874450298 % p6 width 1.0294512420668695 % p7 delay 13.056647531415762 % p7 width 0.36079895429200803 % quadrant delay ] store /a96 [ 10.275153279505902 % p1 delay 2.1233556309882146 % p1 width 8.2115482104066 % p2 delay 4.1930336081984905 % p2 width 6.264803529331843 % p3 delay 6.157765833137692 % p3 width 4.495281237426013 % p4 delay 7.976346292010689 % p4 width 2.9669207635656676 % p5 delay 9.646432050857882 % p5 width 1.7477032094150075 % p6 delay 11.320166050312238 % p6 width 0.9148247359680965 % p7 delay 13.409077457751365 % p7 width 0.2975881111242984 % quadrant delay ] store /a97 [ 10.240457024341477 % p1 delay 2.134077471317074 % p1 width 8.164867772841955 % p2 delay 4.213452442998779 % p2 width 6.205523779081837 % p3 delay 6.185452328837567 % p3 width 4.423234605472523 % p4 delay 8.006618220218015 % p4 width 2.8821971876470442 % p5 delay 9.672069264487952 % p5 width 1.6500883956263123 % p6 delay 11.355113654260407 % p6 width 0.8016574526230471 % p7 delay 13.831443290493283 % p7 width 0.23374710975272705 % quadrant delay ] store /a98 [ 10.201940773921007 % p1 delay 2.1427535621580062 % p1 width 8.1160304405589 % p2 delay 4.229503836724113 % p2 width 6.145502859365315 % p3 delay 6.205687104545131 % p3 width 4.351688442224891 % p4 delay 8.024338941005154 % p4 width 2.7990882078968866 % p5 delay 9.67371438320096 % p5 width 1.555079224439453 % p6 delay 11.330237907918856 % p6 width 0.69116413541866 % p7 delay 14.364207461243552 % p7 width 0.169062719379113 % quadrant delay ] store /a99 [ 10.156863627959598 % p1 delay 2.1480428640811766 % p1 width 8.06339164056924 % p2 delay 4.238341714779558 % p2 width 6.0840316757476 % p3 delay 6.213675963725404 % p3 width 4.280754974385665 % p4 delay 8.02161284750413 % p4 width 2.718452103604484 % p5 delay 9.636460505287125 % p5 width 1.4642999953711353 % p6 delay 11.197329413972475 % p6 width 0.5860923925256714 % p7 delay 15.087472750976061 % p7 width 0.10317752951067405 % quadrant delay ] store /a100 [ 10.097664622565073 % p1 delay 2.146284244870163 % p1 width 8.002396397096308 % p2 delay 4.23222417093767 % p2 width 6.019120165289753 % p3 delay 6.1964902984829 % p3 width 4.21068681625524 % p4 delay 7.977592739007122 % p4 width 2.6425485752095525 % p5 delay 9.523271990574841 % p5 width 1.3819874635530311 % p6 delay 10.855567612314722 % p6 width 0.4941631819604595 % p7 delay 16.184573443763554 % p7 width 0.03542827811961047 % quadrant delay ] store /range [ (01) (10) (20) (30) (40) (50) (53) (60) (70) (80) (90) (95)(96)(97) (98)(99)(100) ] store /procit1 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 13 get 2.5 mul lineto } def /procit2 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 11 get 2.5 mul lineto } def /procit3 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 9 get 2.5 mul lineto } def /procit4 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 7 get 2.5 mul lineto } def /procit5 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 5 get 2.5 mul lineto } def /procit6 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 3 get 2.5 mul lineto } def /procit7 { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 1 get 2.5 mul lineto } def /procit1d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 12 get 2.5 mul lineto } def /procit2d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 10 get 2.5 mul lineto } def /procit3d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 8 get 2.5 mul lineto } def /procit4d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 6 get 2.5 mul lineto } def /procit5d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 4 get 2.5 mul lineto } def /procit6d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 2 get 2.5 mul lineto } def /procit7d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 0 get 2.5 mul lineto } def /procit8d { dup cvi /curval exch store (a)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 14 get 2.5 mul lineto } def % 40 100 10 setgrid 40 40 showgrid line1 0 30 mt range {procit7d} forall 40 0 lineto 0 0 lineto closepath 0 settint 0.8 setgray fill 0 30 mt range {procit6d} forall 40 0 lineto 0 0 lineto closepath 0.1 settint 0.8 setgray fill 0 30 mt range {procit5d} forall 40 0 lineto 0 0 lineto closepath 0.2 settint 0.8 setgray fill 0 30 mt range {procit4d} forall 40 0 lineto 0 0 lineto closepath 0.27 settint 0.8 setgray fill 0 30 mt range {procit3d} forall 40 0 lineto 0 0 lineto closepath 0.43 settint 0.8 setgray fill 0 30 mt range {procit2d} forall 40 0 lineto 0 0 lineto closepath 0.5 settint 0.8 setgray fill 0 30 mt range {procit1d} forall 40 0 lineto 0 0 lineto closepath 0.6 settint 0.8 setgray fill 0 15 mt range {procit8d} forall 40 0 lineto 0 0 lineto closepath 0.7 settint 0.8 setgray fill 0 0 mt range {procit1} forall 40 0 lineto closepath 0.6 settint 0.6 setgray fill 0 0 mt range {procit2} forall 40 0 lineto closepath 0.5 settint 0.6 setgray fill 0 0 mt range {procit3} forall 40 0 lineto closepath 0.43 settint 0.6 setgray fill 0 0 mt range {procit4} forall 40 0 lineto closepath 0.27 settint 0.6 setgray fill 0 0 mt range {procit5} forall 40 0 lineto closepath 0.2 settint 0.6 setgray fill 0 0 mt range {procit6} forall 40 0 lineto closepath 0.1 settint 0.6 setgray fill 0 0 mt range {procit7} forall 40 0 lineto closepath 0 settint 0.6 setgray fill black 0 0 mt range {procit1} forall stroke 0 0 mt range {procit2} forall stroke 0 0 mt range {procit3} forall stroke 0 0 mt range {procit4} forall stroke 0 0 mt range {procit5} forall stroke 0 0 mt range {procit6} forall stroke 0 0 mt range {procit7} forall stroke 0 30 mt range {procit1d} forall 0 30 mt range {procit2d} forall 0 30 mt range {procit3d} forall stroke 0 30 mt range {procit4d} forall stroke 0 30 mt range {procit5d} forall stroke 0 30 mt range {procit6d} forall stroke 0 30 mt range {procit7d} forall stroke 0 15 mt range {procit8d} forall stroke 0.3 0.3 0.3 setrgbcolor line3 1 setlinecap 1 setlinejoin 0 0 mt 40 u 40 r 40 d 40 l [{ 0 0 mt 0.4 l} 10 5 ] yrpt [{ 40 0 mt 0.4 r} 10 5 ] yrpt [{ 0 0 mt 0.4 d} 10 5 ] xrpt [{ 0 40 mt 0.4 u} 10 5 ] xrpt /cstretch 0.02 store /sstretch 0 store /font0 /StoneSans-Bold 1.5 gonzofont /font1 /StoneSans-Bold 1.2 gonzofont /font2 /StoneSans-Bold 1 gonzofont /font: /StoneSans-Bold [0.6 0 0 0.6 0 0.6] gonzofont /font; /StoneSans-Bold [1.5 0 0 1.5 0 0.2] gonzofont /yinc 2 store font0 20 43.7 (BEST EFFICIENCY N |;=|0 28\nMAGIC SINEWAVE) cc font1 /yinc 1.5 store 0 -2.2 (0.0) cc 20 -2.2 (0.5) cc 40 -2.2 (1.0)cc 20 -4.3 (AMPLITUDE) cc 41 -0.5 (0) cl 41 9.5 (4) cl 41 19.5 (8) cl 41 29.5 (12) cl 41 39.5 (16) cl 45.5 21 (DELAY\nTIME IN\nDEGREES) cc font2 26.5 1.2 (PULSE WIDTHS) cc 1.5 17 (PULSE DELAYS) cl 2.6 32.6 (0|:o) cc 27.4 32.6 (90|:o) cc % generate actual magic sinewave /makemagic {gsave translate 0.25 dup scale line3 /ht 17 store /dht 6 store 0 setlinecap 0 setlinejoin dht setlinewidth 0 0 mt a50 0 get pr 0 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add 0 mt a50 2 get pr 0.1 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add 0 mt a50 4 get pr 0.2 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add 0 mt a50 6 get pr 0.3 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add 0 mt a50 8 get pr 0.4 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add 0 mt a50 10 get pr 0.5 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add 0 mt a50 12 get pr 0.6 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add a50 12 get add a50 13 get add 0 mt a50 14 get pr 0.7 settint 0.8 setgray stroke %% pulses a50 0 get 0 mt ht pu 0 a50 1 get pr ht pd closepath 0 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add 0 mt ht pu 0 a50 3 get pr ht pd closepath 0.1 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add 0 mt ht pu 0 a50 5 get pr ht pd closepath 0.2 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add 0 mt ht pu 0 a50 7 get pr ht pd closepath 0.3 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add 0 mt ht pu 0 a50 9 get pr ht pd closepath 0.4 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add 0 mt ht pu 0 a50 11 get pr ht pd closepath 0.5 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add a50 12 get add 0 mt ht pu 0 a50 13 get pr ht pd closepath 0.6 settint 0.6 setgray fill 1 setlinecap 1 setlinejoin black 0 0 mt a50 0 get 0 rlineto 0 ht pu a50 1 get 0 rlineto 0 ht pd a50 2 get 0 rlineto 0 ht pu a50 3 get 0 rlineto 0 ht pd a50 4 get 0 rlineto 0 ht pu a50 5 get 0 rlineto 0 ht pd a50 6 get 0 rlineto 0 ht pu a50 7 get 0 rlineto 0 ht pd a50 8 get 0 rlineto 0 ht pu a50 9 get 0 rlineto 0 ht pd a50 10 get 0 rlineto 0 ht pu a50 11 get 0 rlineto 0 ht pd a50 12 get 0 rlineto 0 ht pu a50 13 get 0 rlineto 0 ht pd a50 14 get 0 rlineto 0.45 setlinewidth stroke grestore} def 3.5 33 makemagic } store % end special1code definition %%%%%%%%%%% special2 code /special2code { /ad01 [ 7.434338157133027 % delay a=60-p5e 0.11880195485247924 % delay b=p5e-p5s 0.019577960879085587 % delay c=p1e-p1s 14.855161666700834 % delay d=p2s-p1e 0.021983040440492374 % delay e=p2e-p2s 0.0911673899925809 % delay f=p3s-p2e 0.0353778304366692 % delay g=p3e-p3s 7.4235919995647634 % delay h=30-p3e ] store /ad10 [ 6.840486668588909 % delay a=60-p5e 1.1877031146444991 % delay b=p5e-p5s 0.19606479817654332 % delay c=p1e-p1s 13.542825252098737 % delay d=p2s-p1e 0.1524725715290529 % delay e=p2e-p2s 0.9104569599226266 % delay f=p3s-p2e 0.4224088615298953 % delay g=p3e-p3s 6.7475817735097365 % delay h=30-p3e ] store /ad20 [ 6.179615738852249 % delay a=60-p5e 2.368314508230462 % delay b=p5e-p5s 0.39486570406405263 % delay c=p1e-p1s 12.090328683781834 % delay d=p2s-p1e 0.2773208755122525 % delay e=p2e-p2s 1.8107046591154443 % delay f=p3s-p2e 0.8802494355140809 % delay g=p3e-p3s 5.998600394929625 % delay h=30-p3e ] store /ad30 [ 5.51798715656065 % delay a=60-p5e 3.537987411554724 % delay b=p5e-p5s 0.5996610353231375 % delay c=p1e-p1s 10.6414917563349 % delay d=p2s-p1e 0.378916570008613 % delay e=p2e-p2s 2.6949373104326213 % delay f=p3s-p2e 1.3768763200109077 % delay g=p3e-p3s 5.252142439774445 % delay h=30-p3e ] store /ad40 [ 4.8560795807034935 % delay a=60-p5e 4.692317283738298 % delay b=p5e-p5s 0.8138114048538583 % delay c=p1e-p1s 9.195452323744191 % delay d=p2s-p1e 0.46036801366636126 % delay e=p2e-p2s 3.5594981265840886 % delay f=p3s-p2e 1.9150363136688284 % delay g=p3e-p3s 4.50743695304088 % delay h=30-p3e ] store /ad50 [ 4.194298075500072 % delay a=60-p5e 5.825866502969745 % delay b=p5e-p5s 1.0408488460292488 % delay c=p1e-p1s 7.751463747608284 % delay d=p2s-p1e 0.5238895562340744 % delay e=p2e-p2s 4.403346953313516 % delay f=p3s-p2e 2.496487356236706 % delay g=p3e-p3s 3.7637989621083534 % delay h=30-p3e ] store /ad53 [ 3.995843046736013 % delay a=60-p5e 6.160868086216446 % delay b=p5e-p5s 1.112006440311525 % delay c=p1e-p1s 7.318567062952312 % delay d=p2s-p1e 0.5397256759732585 % delay e=p2e-p2s 4.652707315620958 % delay f=p3s-p2e 2.679463155973238 % delay g=p3e-p3s 3.5408192162162493 % delay h=30-p3e ] store /ad60 [ 3.5330039078836606 % delay a=60-p5e 6.9314513603008905 % delay b=p5e-p5s 1.2842465239317846 % delay c=p1e-p1s 6.308872401421397 % delay d=p2s-p1e 0.5713975364200223 % delay e=p2e-p2s 5.228837780084575 % delay f=p3s-p2e 3.1216051264200075 % delay g=p3e-p3s 3.0205853635376627 % delay h=30-p3e ] store /ad70 [ 2.8725257224432425 % delay a=60-p5e 7.998916501222098 % delay b=p5e-p5s 1.5460427838912807 % delay c=p1e-p1s 4.8671218102361 % delay d=p2s-p1e 0.6062046544537196 % delay e=p2e-p2s 6.042997615507133 % delay f=p3s-p2e 3.789041064453741 % delay g=p3e-p3s 2.2771498477926854 % delay h=30-p3e ] store /ad80 [ 2.2131268407607223 % delay a=60-p5e 9.012727944067371 % delay b=p5e-p5s 1.8200962344110607 % delay c=p1e-p1s 3.4258327180993433 % delay d=p2s-p1e 0.6400219482894229 % delay e=p2e-p2s 6.85987852874419 % delay f=p3s-p2e 4.495547368289273 % delay g=p3e-p3s 1.532768417338616 % delay h=30-p3e ] store /ad90 [ 1.55474755544018 % delay a=60-p5e 9.946227643338275 % delay b=p5e-p5s 2.048752785780998 % delay c=p1e-p1s 1.9853102905593687 % delay d=p2s-p1e 0.736140589142309 % delay e=p2e-p2s 7.705915111477708 % delay f=p3s-p2e 5.236535369142075 % delay g=p3e-p3s 0.7863706551190859 % delay h=30-p3e ] store /ad95 [ 1.225355348586767 % delay a=60-p5e 10.367111550363887 % delay b=p5e-p5s 2.0303138224619843 % delay c=p1e-p1s 1.2665437513423114 % delay d=p2s-p1e 0.9241283097125574 % delay e=p2e-p2s 8.155346335065047 % delay f=p3s-p2e 5.619630049711802 % delay g=p3e-p3s 0.4115708327556433 % delay h=30-p3e ] store /ad98 [ 1.026684367555248 % delay a=60-p5e 10.596415552349142 % delay b=p5e-p5s 1.807508982542501 % delay c=p1e-p1s 0.837605401539733 % delay d=p2s-p1e 1.2493523058395936 % delay e=p2e-p2s 8.441202830348274 % delay f=p3s-p2e 5.855882255842914 % delay g=p3e-p3s 0.18534830398259316 % delay h=30-p3e ] store /ad100 [ 0.8921862350266565 % delay a=60-p5e 10.732271751681054 % delay b=p5e-p5s 1.3169014782635031 % delay c=p1e-p1s 0.5554591355065241 % delay d=p2s-p1e 1.8052854865738012 % delay e=p2e-p2s 8.644568525896716 % delay f=p3s-p2e 6.020358566571353 % delay g=p3e-p3s 0.032968820480391514 % delay h=30-p3e ] store /range [ (01) (10) (20) (30) (40) (50) (53) (60) (70) (80) (90) (95) (98)(100) ] store /procit1 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 1 get 2.5 mul lineto } def /procit2 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 2 get 2.5 mul lineto } def /procit3 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 4 get 2.5 mul lineto } def /procit4 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 5 get 2.5 mul lineto } def /procit5 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 6 get 2.5 mul lineto } def /procit6 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 3 get 2.5 mul lineto } def /procit7 { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 1 get 2.5 mul lineto } def /procit1d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 0 get 2.5 mul lineto } def /procit2d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 3 get 2.5 mul lineto } def /procit3d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 7 get 2.5 mul lineto } def /procit4d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 6 get 2.5 mul lineto } def /procit5d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 4 get 2.5 mul lineto } def /procit6d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 2 get 2.5 mul lineto } def /procit7d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 0 get 2.5 mul lineto } def /procit8d { dup cvi /curval exch store (ad)exch mergestr cvn /curdat exch store curval 2.5 div curdat cvx exec 14 get 2.5 mul lineto } def % 40 100 10 setgrid 40 40 showgrid line1 % delays 0 37.5 mt range {procit2d} forall 40 0 lineto 0 0 lineto closepath 0.15 settint 0.8 setgray fill 0 18.75 mt range {procit1d} forall 40 0 lineto 0 0 lineto closepath 0 settint 0.8 setgray fill 0 18.75 mt range {procit3d} forall 40 0 lineto 0 0 lineto closepath 0.3 settint 0.8 setgray fill % pulses 0 0 mt range {procit1} forall 40 0 lineto 0 0 lineto closepath 0.0 settint 0.6 setgray fill 0 0 mt range {procit4} forall 40 0 lineto 0 0 lineto closepath 0.5 settint 0.6 setgray fill 0 0 mt range {procit5} forall 40 0 lineto 0 0 lineto closepath 0.6 settint 0.6 setgray fill 0 0 mt range {procit2} forall 40 0 lineto 0 0 lineto closepath 0.15 settint 0.6 setgray fill 0 0 mt range {procit3} forall 40 0 lineto 0 0 lineto closepath 0.3 settint 0.6 setgray fill black line1 0 18.75 mt range {procit1d} forall stroke 0 37.5 mt range {procit2d} forall stroke 0 18.75 mt range {procit3d} forall stroke stroke % width outlines 0 0 mt range {procit1} forall stroke 0 0 mt range {procit2} forall stroke 0 0 mt range {procit3} forall stroke 0 0 mt range {procit4} forall stroke 0 0 mt range {procit5} forall stroke 0.3 0.3 0.3 setrgbcolor line3 1 setlinecap 1 setlinejoin 0 0 mt 40 u 40 r 40 d 40 l [{ 0 0 mt 0.4 l} 10 5 ] yrpt [{ 40 0 mt 0.4 r} 10 5 ] yrpt [{ 0 0 mt 0.4 d} 10 5 ] xrpt [{ 0 40 mt 0.4 u} 10 5 ] xrpt /cstretch 0.02 store /sstretch 0 store /font0 /StoneSans-Bold 1.5 gonzofont /font1 /StoneSans-Bold 1.2 gonzofont /font2 /StoneSans-Bold 1 gonzofont /font: /StoneSans-Bold [0.6 0 0 0.6 0 0.6] gonzofont /font; /StoneSans-Bold [1.5 0 0 1.5 0 0.2] gonzofont /yinc 2 store font0 20 45 (DELTA FRIENDLY N |;=|0 28\nMAGIC SINEWAVE) cc font1 /yinc 1.5 store 0 -2.2 (0.0) cc 20 -2.2 (0.5) cc 40 -2.2 (1.0)cc 20 -4.3 (AMPLITUDE) cc 41 -0.5 (0) cl 41 9.5 (4) cl 41 19.5 (8) cl 41 29.5 (12) cl 41 39.5 (16) cl 46.5 21 (DELAY\nTIME IN\nDEGREES) cc font2 23.5 4.7 (PULSE WIDTHS) cc 1.5 22.5 (PULSE DELAYS) cl % generate actual magic sinewave /makemagicold {gsave translate 0.25 dup scale line3 /ht 12 store /dht 6 store 0 setlinecap 0 setlinejoin dht setlinewidth 0 0 mt a50 0 get pr 0 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add 0 mt a50 2 get pr 0.1 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add 0 mt a50 4 get pr 0.2 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add 0 mt a50 6 get pr 0.3 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add 0 mt a50 8 get pr 0.4 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add 0 mt a50 10 get pr 0.5 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add 0 mt a50 12 get pr 0.6 settint 0.8 setgray stroke 0 a50 0 get add a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add a50 12 get add a50 13 get add 0 mt a50 14 get pr 0.7 settint 0.8 setgray stroke %% pulses a50 0 get 0 mt ht pu 0 a50 1 get pr ht pd closepath 0 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add 0 mt ht pu 0 a50 3 get pr ht pd closepath 0.1 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add 0 mt ht pu 0 a50 5 get pr ht pd closepath 0.2 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add 0 mt ht pu 0 a50 7 get pr ht pd closepath 0.3 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add 0 mt ht pu 0 a50 9 get pr ht pd closepath 0.4 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add 0 mt ht pu 0 a50 11 get pr ht pd closepath 0.5 settint 0.6 setgray fill a50 0 get a50 1 get add a50 2 get add a50 3 get add a50 4 get add a50 5 get add a50 6 get add a50 7 get add a50 8 get add a50 9 get add a50 10 get add a50 11 get add a50 12 get add 0 mt ht pu 0 a50 13 get pr ht pd closepath 0.6 settint 0.6 setgray fill 1 setlinecap 1 setlinejoin black 0 0 mt a50 0 get 0 rlineto 0 ht pu a50 1 get 0 rlineto 0 ht pd a50 2 get 0 rlineto 0 ht pu a50 3 get 0 rlineto 0 ht pd a50 4 get 0 rlineto 0 ht pu a50 5 get 0 rlineto 0 ht pd a50 6 get 0 rlineto 0 ht pu a50 7 get 0 rlineto 0 ht pd a50 8 get 0 rlineto 0 ht pu a50 9 get 0 rlineto 0 ht pd a50 10 get 0 rlineto 0 ht pu a50 11 get 0 rlineto 0 ht pd a50 12 get 0 rlineto 0 ht pu a50 13 get 0 rlineto 0 ht pd a50 14 get 0 rlineto 0.45 setlinewidth stroke grestore} def /makemagic {gsave translate 0.8 dup scale line3 /ht 3 store /dht 1.5 store 0 setlinecap 0 setlinejoin dht setlinewidth 0 0 mt ad70 0 get pr 0 settint 0.8 setgray stroke ad70 0 get ad70 1 get add ad70 2 get add 0 mt ad70 3 get pr 0.15 settint 0.8 setgray stroke ad70 0 get ad70 1 get add ad70 2 get add ad70 3 get add ad70 4 get add ad70 5 get add ad70 6 get add 0 mt ad70 7 get pr 0.3 settint 0.8 setgray stroke % pulses ad70 0 get 0 mt ht 2 mul pu ad70 1 get pr ht 2 mul pd closepath 0 settint 0.6 setgray fill ad70 0 get ad70 1 get add 0 mt ht 2 mul pu ad70 2 get pr ht 2 mul pd closepath 0.15 settint 0.6 setgray fill ad70 0 get ad70 1 get add ad70 2 get add ad70 3 get add 0 mt ht 2 mul pu ad70 4 get pr ht 2 mul pd closepath 0.30 settint 0.6 setgray fill ad70 0 get ad70 1 get add ad70 2 get add ad70 3 get add ad70 4 get add 0 mt ht 2 mul pu ad70 5 get pr ht 2 mul pd closepath 0.5 settint 0.6 setgray fill ad70 0 get ad70 1 get add ad70 2 get add ad70 3 get add ad70 4 get add ad70 5 get add 0 mt ht 2 mul pu ad70 6 get pr ht 2 mul pd closepath 0.6 settint 0.6 setgray fill % outlines black line1 1 setlinecap 1 setlinejoin 0 0 mt ad70 0 get pr ht pu ad70 1 get pr ht pd ht pu ad70 2 get pr ht pd ad70 3 get pr ht pu ad70 4 get pr ht pd ht pu ad70 5 get pr ht pd ht pu ad70 6 get pr ht pd ad70 7 get pr stroke 0 0 mt ad70 0 get pr ht 2 mul pu ad70 1 get ad70 2 get add pr ht 2 mul pd ad70 3 get pr ht 2 mul pu ad70 4 get ad70 5 get add ad70 6 get add pr ht 2 mul pd stroke % p3 poker 17.8 -0.45 mt 1.65 -2.5 rlineto black line1 stroke 11.5 -0.45 mt -1.65 -2.5 rlineto black line1 stroke grestore } def 12 31 makemagic font2 11 30.5 (0|:o) cc 37.5 30.5 (30|:o) cc 28.5 28.3 (p2) cc 18.9 28.3 (p1) cc 18 31.8 (p5) cc 28.8 31.8 (p4) cc 32.7 31.8 (p3) cc 18 34.2 (p6) cc 30.2 34.2 (p7) cc } store % end special 2 def % ---------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % //// REVISED DIPDRAW PROC ///// electronics begin % dipdraw - draws a dip integrated circuit. (old code to be improved) % Enter with currentpoint set to pin 1 and scale % set so that 1.0 = distance between pins. Then % do a numpins-(name)-(hipins)-(lopins) dipdraw % Pin callouts preceeded by / will be complemented. % main dipdraw entry: /dipdraw { save /dipsnap exch def /hipins exch def /lopins exch def /chipname exch def /numpins exch def mark 0 0 0 0 0 0 0 0 0 0 0 0 % temp patch /howlong {numpins 2 div cvi 1 add} def /howhigh {4 numpins 36 ge {1 add} if} def /stub {howhigh 1.4 sub 2 div} def % internal service subs start here: /pinproc {numpins 2 div cvi{newpath 0 cpos 0.37 0 360 arc gsave 1 setgray fill grestore 0.067 setlinewidth stroke pin# 5 string cvs dup stringwidth pop 2 div neg cpos 0.2 sub moveto show 1 0 translate /pin# pin# dir add def} repeat } def /stretchprint { dup stringwidth pop 2 div neg exch length 1 sub stretch mul 2 div sub 0 moveto callout (/) anchorsearch true eq {currentpoint exch stretch add exch moveto pop dup /callout exch def stringwidth pop callout length 1 sub stretch mul add /barwide exch def 0.033 setlinewidth gsave currentpoint 0.55 add moveto barwide 0 rlineto stroke grestore} if stretch 0 callout ashow pop} def /pincallouts{0 vpos translate {workstring ( ) search true eq {/callout exch def pop /workstring exch def callout stretchprint 1 0 translate}{dup /callout exch def stretchprint exit } ifelse}loop} def % actual dipdraw process starts here: % ........ the outline: gsave 1 setlinecap 1 setlinejoin currentpoint translate newpath -1 howhigh 2 div 0.7 -90 90 arc 0 stub rlineto howlong 0 rlineto 0 howhigh neg rlineto howlong neg 0 rlineto closepath gsave grayshade setgray fill grestore grayshade dup 1 ne {0.33}{0} ifelse setgray 0.36 setlinewidth stroke newpath -.55 .45 0.15 0 360 arc fill black % ........ pin circles and numbers: /Helvetica-Bold findfont [0.4 0 0 0.55 0 0] makefont setfont gsave /pin# 1 def /dir 1 def /cpos 0 def pinproc grestore gsave /pin# numpins def /dir -1 def /cpos howhigh def pinproc grestore % pin callouts: /Helvetica findfont [0.35 0 0 0.6 0 0] makefont setfont /stretch 0.033 def gsave /workstring hipins def /vpos 0.6 def pincallouts grestore gsave /workstring lopins def /vpos howhigh 1.05 sub def pincallouts grestore % device number: grayshade 1 ne {0.33}{0} ifelse setgray /Helvetica-Bold findfont [1.4 0 0 1 0 0] makefont setfont /stretch 0.05 def gsave numpins 2 div 1 sub 2 div howhigh 2 div 0.33 sub translate chipname dup /callout exch def stretchprint grestore black % end cleanup: grestore grestore cleartomark dipsnap restore} def end % get out of electronics? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /special1 {save /s1snap exch store 4.5 2.5 translate 0.8 dup scale special1code s1snap restore} store /special2 {save /s1snap exch store 4.5 17 translate 0.8 dup scale special2code s1snap restore} store /special5 {gsave 4 -5.85 translate line1 black 0.3 0 mt 0.3 l 5.2 u 0.3 r 13.2 0 mt 0.3 r 5.2 u 0.3 l 15.3 0 mt 0.3 l 5.2 u 0.3 r 18.3 0 mt 0.3 r 5.2 u 0.3 l grestore } store /xkernon {/kernsave kern store /kern 0.18 store } def /xkernoff {/kern kernsave store} def /pagenum 1 store /startnewpage { black beige 0.35 setgray 21 -2.5 (|3\320|j|j) ggnum 10 string cvs mergestr (|j.|j) mergestr pagenum 10 string cvs mergestr (|j|j\320) mergestr cc aqua showpage %% start next page /pagenum pagenum 1 add store 50 50 10 setgrid % create grid setpagefonts font1 textleft texttop } def /su {surl font6} store /to {tinton1 font6} store /tx {tintoff font1} store /tabs [7 20] store /overstrikeht 0.52 store %%%% glyph module /font: /Symbol 1.5 gonzofont /font+ /Helvetica [0.9 0 0 0.85 0 0.6] gonzofont /font= /Helvetica 1.5 gonzofont /glyphx1 { mark /glyphx1exec cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } store /glyphx1exec {gsave currentpoint 0.31 add translate 0 setgray font: 0 0.6 moveto (\266j) show 0 -1.3 moveto (\266) show font= (x) show line2 0 0.1 mt 1.8 r grestore} store /glyphy1 { mark /glyphy1exec cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } store /glyphy1exec {gsave currentpoint 0.31 add translate 0 setgray font: 0 0.6 moveto (\266j) show 0 -1.3 moveto (\266) show font= (y) show line2 0 0.1 mt 1.8 r grestore} store /glyphz1 { mark /glyphz1exec cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } store /glyphz1exec {gsave currentpoint 0.31 add translate 0 setgray font: 0 0.6 moveto (\266j) show 0 -1.3 moveto (\266) show font= (z) show line2 0 0.1 mt 1.8 r grestore} store /glyphx2 { mark /glyphx2exec cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } store /glyphx2exec {gsave currentpoint 0.31 add translate 0 setgray font: 0 0.6 moveto (\266) show font+ (2) show font: (j) show 0 -1.4 moveto (\266) show font= (x) show font+ (2) show line2 0 0.1 mt 1.8 r grestore} store /glyphy2 { mark /glyphy2exec cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } store /glyphy2exec {gsave currentpoint 0.31 add translate 0 setgray font: 0 0.6 moveto (\266) show font+ (2) show font: (j) show 0 -1.4 moveto (\266) show font= (y) show font+ (2) show line2 0 0.1 mt 1.8 r grestore} store /glyphz2 { mark /glyphz2exec cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } store /glyphz2exec {gsave currentpoint 0.31 add translate 0 setgray font: 0 0.6 moveto (\266) show font+ (2) show font: (j) show 0 -1.4 moveto (\266) show font= (z) show font+ (2) show line2 0 0.1 mt 1.8 r grestore} store /lateblack { mark 1 0 0.7 /setrgbcolor cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } store /lateburple { mark 0.5 0 1 /setrgbcolor cvx ] cvx printlist exch 3 index exch % stuff into gonzo printlist put exch 1 add exch % increment gonzo list count } store %%%%%%%%%%%%% /autofigure2 {save /af2 exch store xpos ypos yinc add translate 6.5 -2 250 243 .070 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/reels01.jpg) % url first (C:\\Documents and Settings\\don\\Desktop\\gurugrams\\zzimages\\reelsx01.jpg) jpegimageprocwithlink af2 restore} store %%%%%%%%%%%%%% % "a" sample figure /figure1 { 1.5 -11 translate 0.6 dup scale % 50 30 showgrid /font0 /MyriadPro-Bold [ 38.69 0 0 59.3 -0.6 0 ] gonzofont font0 0.5 0.5 0.5 setrgbcolor 0 0 (A) cl 0.75 0 0 setrgbcolor line2 0 0 mt 40 pu 24 pr 40 pd closepath stroke line1 [{ 0 0 mt 24 r} 5 8 ] yrpt [{0 0 mt 40 u } 4 6 ] xrpt 0 0 0.75 setrgbcolor gsave 4 25 translate 6 { [{0.5 0.5 mt dot} 0.57 6] xrpt 0 0.8 translate } repeat grestore } store %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% %%%%%%%%%% temporary fixed figures for ellipses - use dynamic for others /figure1fixed { save /figsnap1 exch store 3.5 -28.2 translate % 50 50 10 setgrid % 30 30 showgrid /yinc 1 store /cstretch 0.015 store /sstretch 0.015 store /su {surl font6} store /to {tinton1 font6} store /tx {tintoff font1} store /tintoff {mark 0 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1 {mark 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /font1 /Helvetica 0.85 gonzofont /font6 /Helvetica-Bold 0.8 gonzofont font1 1 27.5 mt 19.5 pu 32 pr 19.5 pd closepath gsave 0 1 1 setrgbcolor 0.92 setgray fill grestore newpath black 5 45 (Here is a cubic spline shown in its |/to graph space|/tx \274) cl %%%%%%%%%%%%%% % start cut save /figsnapaa exch store 12.5 34.2 0.2 sub translate gsave 0 0 mt 10 pu 10 pr 10 pd closepath 0 1 1 setrgbcolor 1 setgray fill grestore 0.11 settint 10 10 showgrid 0.37 setgray gsave line2 1 setlinecap 0 0 mt 10 pu 10 pr 10 pd closepath stroke grestore 2 3 mt dot 8 4 mt dot 3 7.5 mt dot 7 7 mt dot 2 3 mt 3 7.5 7 7 8 4 curveto line2 stroke line1 2 3 mt 3 7.5 lineto stroke 7 7 mt 8 4 lineto stroke black /yinc 0.8 store /font9 /Helvetica 0.65 gonzofont /font3 /Helvetica-Oblique 0.65 gonzofont /font4 /Helvetica-Oblique [0.5 0 0 0.5 0 -.2] gonzofont /font8 /Helvetica-Bold 0.65 gonzofont font9 0.5 settint black -5.3 7 (The |/to |8first|/tx |9influence point sets the direction and the enthusiasm that the spline |/to |8leaves|/tx |9the |/to |8initial|/tx |9 point on the curve.) cc 15 7 (The |/to |8second|/tx |9influence point sets the direction and the enthuasiasm that the spline |/to |8enters|/tx |9the |/to |8final|/tx |9point on the curve.) cc /yinc 0.8 store 2 1.85 (initial\npoint) cc 8 2.85 (final\npoint) cc 3 9 (influence\npoint #1) cc 7 8.5 (influence\npoint #2) cc 0.12 settint 0.34 setgray 2.5 3 ((|3x|40|3, |3y|40|3)) cl 2.5 7.2 ((|3x|41|3, |3y|41|3)) cr 7.5 6.8 ((|3x|42|3, |3y|42|3)) cl 7.5 3.8 ((|3x|43|3, |3y|43|3)) cr figsnapaa restore black /tabs [3 6.5 14 ] store /kern 0.1 store /yinc 1 store /font1 /Helvetica 0.85 gonzofont /font2 /Helvetica-Oblique 0.85 gonzofont /font3 /Helvetica [.65 0 0 .65 0.1 .4] gonzofont /font4 /Helvetica 0.65 gonzofont /font5 /Helvetica-Bold 0.6 gonzofont /font7 /Helvetica 0.8 gonzofont /font8 /Helvetica [.65 0 0 .65 0.1 -.3] gonzofont /font6 /Helvetica-Bold 0.8 gonzofont font1 0 -0.4 translate 5 32.5 (Here is how a cubic spline appears in its |/to equation space|/tx \274 |tx = |7A|2t|33|1 + |7B|2t|32|1 + |7C|2t|1 + |7D|1 |ty = |7E|2t|33|1 + |7F|2t|32|1 + |7G|2t|1 + |7H ) cl /yinc 0.8 store 19.5 30.9 (|4t (for time) always goes from |/to |5zero|/tx |4at the |/to |5initial|1|/tx |4point |4 to a |/to |5one|/tx |4at the |/to |5final|/tx |4point.) cl figsnap1 restore } store /figure2fixed { save /figsnap2 exch store 3 14 translate % 50 50 10 setgrid % 30 30 showgrid /yinc 1 store /cstretch 0.015 store /sstretch 0.015 store /su {surl font6} store /to {tinton1 font6} store /tx {tintoff font1} store /tintoff {mark 0 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1 {mark 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /font1 /Helvetica 0.85 gonzofont /font2 /Helvetica-Oblique 0.85 gonzofont /font3 /Helvetica [.65 0 0 .65 0.1 .4] gonzofont /font4 /Helvetica 0.65 gonzofont /font5 /Helvetica-Bold 0.6 gonzofont /font7 /Helvetica 0.8 gonzofont /font8 /Helvetica [.65 0 0 .65 0.1 -.3] gonzofont /font6 /Helvetica-Bold 0.8 gonzofont font1 1 17.7 mt 19 pu 32 pr 19 pd closepath gsave 0 1 1 setrgbcolor 0.92 setgray fill grestore newpath 2 0 translate black /tabs [3 6.5 14 ] store /kern 0.1 store /yinc 1 store /yinc 1 store 3 34.5 (|1This is a faster "cube free" form of the |/to equation space|/tx math\274 |h |t|tx = (((|j|7A|2t|1|j) + |7B|j)|j|2t|1 + |7C|j)|j|2t|1 + |7D |t|ty = (((|j|7E|2t|1|j) + |7F|j)|j|2t|1 + |7G|j)|j|2t|1 + |7H How to get from |/to graph space|/tx to |/to equation space|/tx \274 |h |tA = |2x|1|83|1 - 3|2x|82|1 + 3|2x|81|1 - |2x|80|1 |t|tE = |2y|1|k|83|1 - 3|2y|k|82|1 + 3|2y|k|81|1 - |2y|k|80|1 |tB = 3|2x|82|1 - 6|2x|81|1 + 3|2x|80|1 |t|tF = 3|2y|k|82|1 -6 |2y|k|81|1 + 3|2y|k|80|1 |tC = 3|2x|81|1 - 3|2x|80|1 |t|tG = 3|2y|k|81|1 - 3|2y|k|80|1 |tD = |2x|80|1 |t|tH = |2y|k|80|1 How to get from |/to equation space|/tx to |/to graph space|/tx \274 |h |t|2x|80|7 = D |t|t|2y|k|80|7 = H |t|2x|81|7 = D + C|j/|j3 |t|t|2y|81|7 = H + G|j/|j3 |t|2x|82|7 = D + 2C|j/|j3 + B|j/|j3 |t|t|2y|82|7 = H + 2G|j/|j3 + F|j/|j3 |t|2x|83|7 = D + C + B + A |t|t|2y|83|7 = H + G + F + E ) cl figsnap2 restore } store %%%%%%%%%%%%%%%%%% /figure3var { save /figsnap1 exch store -10.5 -28.3 translate % 50 50 10 setgrid % 30 30 showgrid /yinc 1 store /cstretch 0.015 store /sstretch 0.015 store /su {surl font6} store /to {tinton1 font6} store /tx {tintoff font1} store /tintoff {mark 0 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /tinton1 {mark 0.25 /setgray cvx] cvx printlist exch 3 index exch put exch 1 add exch} def /font1 /Helvetica 0.85 gonzofont /font6 /Helvetica-Bold 0.8 gonzofont font1 aqua 11.5 27.5 mt 17.5 pu 17.5 pr 17.5 pd closepath gsave 0 1 1 setrgbcolor 0.92 setgray fill grestore newpath black %%%%%%%%%%%%%% % start cut save /figsnapaa exch store 12.5 28.7 translate 1.5 dup scale gsave 0 0 mt 10 pu 10 pr 10 pd closepath 0 1 1 setrgbcolor 1 setgray fill grestore 0.11 settint 10 10 showgrid 0.37 setgray gsave line2 1 setlinecap 0 0 mt 10 pu 10 pr 10 pd closepath stroke grestore 2 2 mt dot 8 8 mt dot 5.3 2 mt dot 8 4.7 mt dot 2 2 mt 5.3 2 8 4.7 8 8 curveto line2 stroke line1 2 2 mt 3.3 r 8 8 mt 3.3 d black /yinc 0.8 store /font9 /Helvetica 0.65 gonzofont /font3 /Helvetica-Oblique 0.80 gonzofont /font4 /Helvetica-Oblique [0.5 0 0 0.5 0 -.2] gonzofont /font8 /Helvetica-Bold 0.65 gonzofont font9 0.5 settint black /yinc 0.8 store /kern 0.05 store font6 2 2.5 ((|j0,|j0|j)) cc 8 8.5 ((|j1,|j1|j)) cc 5.6 1.7 ((|j|3x|k|4|j1|1,|j0|j)) cl 8 3.7 ((|j1,|j|3y|k|k|41|6|j)) cc figsnapaa restore figsnap1 restore } store /figure4var { save /figsnap4 exch store 8.5 6.8 translate 0.9 dup scale % 50 50 10 setgrid % 30 20 showgrid % 15 10 translate /magic 0.55228475 0.000225 2 mul sub store /drawellipse {2 div /yrad exch store 2 div /xrad exch store /xmag xrad magic mul store /ymag yrad magic mul store xrad neg 0 moveto xrad neg ymag % left up xmag neg yrad 0 yrad curveto xmag yrad % right down xrad ymag xrad 0 curveto xrad ymag neg % right further down xmag yrad neg 0 yrad neg curveto xmag neg yrad neg xrad neg ymag neg xrad neg 0 curveto } store %%%%%%%%%%%%%%%%%% /tuscan {.56 0 .27 setrgbcolor} store /offwhite {0.95 0.9 0.85 setrgbcolor} store tuscan 21 15.5 drawellipse % ourside ring 0.3 setlinewidth stroke 20 14.5 drawellipse % main body gsave fill grestore gsave clip newpath offwhite /adj -2 pop -1 store gsave 0 14.5 adj 2 div add translate 40 adj 3 mul add 25 adj add drawellipse fill grestore gsave 0 -14.5 adj 2 div sub translate 40 adj 3 mul add 25 adj add drawellipse fill grestore grestore tuscan stroke tuscan 15.8 10.9 drawellipse stroke -15 -10 translate % 30 20 showgrid figsnap4 restore } store %%%%%%%%%%% %%%%%%%%%%% /font; /Helvetica [0.7 0 0 0.7 0 0.4] gonzofont font1 /font- /Symbol 0.85 gonzofont aqua 0.33 setgray font0 /narrowx {/txtwide txtwide 8.5 sub store} store /widenx {/txtwide txtwide 8.5 add store} store 20 47.3 0.7 add % 1 sub (The |j|jMath |j|jBehind) cc 20 45.3 0.7 add % 1 sub (Bezier |j|jCubic |j|jSplines) cc black font2 textleft 43 0.3 add % this one only need |h below (|/aqua |/staytint1 |3Don Lancaster Synergetics, Box 809, Thatcher, AZ 85552 copyright c2005 as |/surl |6GuruGram|1|/gurgrm01 |/tinton1 |658. |/surl http://www.tinaja.com|/tinaja |/surl don@tinaja.com|/maildon (928) 428-4073 |/aqua |/black |a|0B|b|1|jezier |/su Cubic Splines|1|/cubic01 are an excellent and preferred method to draw the smooth continuous curves often found in typography, |/su CAD/CAM|1|/santa01 , and graphics in general. |h Among their many advantages is a |/to very sparse data set|/tx allowing a mere |/to eight|/tx values (or four |/to x,y|/tx points) to |/to completely|/tx define a full and carefully controlled and device independent curve. Many tutorials and examples are now present in our |/su Cubic Spline|1|/cubic01 Library. A brief and useful intro |/su appears here|1|/hack62 . |h While the underlying math behind Bezier cubic splines is amazingly simple, its derivation seems to be quite hard to find. So, what I thought we'd do here is find out exactly |/to where the funny numbers relating cubic spline power coefficients |/to and control points come from.|/tx |h Let us once again begin by excerpting some key |/to Bezier Cubic Spline properties|/tx from our |/su HACK62.PDF|1|/hack62 tutorial\274 |/figure1fixed ) cl startnewpage (|/figure2fixed |h You can easily take these numbers on faith and prove that they work. But to truly understand cubic splines, we need to take a closer look to see exactly |/to where|/tx all those strange "threes" and "sixes" really come from. |h In general, we can relate |/to any|/tx four |/to x|/tx control point variables to |/to any|/tx four |/to A-D|/tx cubic power coefficients. And similarly for |/to y|/tx . The trick is to find a |/to useful|/tx relationship between the two. And that is what Bezier Cubic Splines are fundamentally all about. And where some really sneaky math comes in. |h It turns out there is a special class of math operators that are known as |/su Basis|/basis.pdf |/su Functions|1|/basis.pdf . Some of these are also called |/su Bernstein Polynomials|1|/bernstein \274 |6|/shiftin |/aqua |/burplebox4 |/staytint1 |h A Bernstein Polynomial of order three is exactly what you need to relate Bezier control points to cubic spline coefficients. |h |1|/shiftout |/burple |/black |h So, how do we create a Basis Function of order three? Start off with\274 |6|/shiftin |/burple |/burplebox2 |/staytint1 |h 1 = 1 |h |1|/shiftout |/burple |/black |h \274 and then make this rather bizarre transformation to it\274 |6|/shiftin |/burple |/burplebox2 |/staytint1 |h (1 - t) + t = 1 |h |1|/shiftout |/aqua |/black |h ) cl /plotnormalbasis { save /pnb exch store gsave 9.2 19.5 translate 20 10 showgrid beige 0.5 setgray 0 10 moveto 0 0.01 1 {/tt exch store tt 20 mul 1 tt sub dup dup mul mul 10 mul lineto } for line3 stroke 0 0 moveto 0 0.01 1 {/tt exch store %% (1-t)^2 *3t tt 20 mul 1 tt sub dup mul tt mul 3 mul 10 mul lineto } for line3 stroke 0 0 moveto 0 0.01 1 {/tt exch store tt 20 mul 1 tt sub tt dup mul mul 3 mul 10 mul lineto } for line3 stroke 0 0 moveto 0 0.01 1 {/tt exch store tt 20 mul tt dup dup mul mul 10 mul lineto } for line3 stroke aqua 0.30 setgray 1 setlinecap line3 -0.5 0 mt 21 r 0 -0.5 mt 11 u 20 -0.5 mt 11 u 10 0 mt 0.5 d 20 0 mt 0.5 d 0 10 mt -0.5 0 rlineto stroke % variable reuse of "l" blows up here? font3 line1 2.1 9 ((B0)) cc 6.667 5 ((B1)) cc 13.333 5 ((B2)) cc 17.7 9 ((B3)) cc 0 -1.5 (t|j=|j0) cc 10 -1.5 (t|j=|j0.5) cc 20 -1.5 (t|j=|j1.0) cc -1.5 -0.3 (0.0) cc -1.5 9.7 (1.0) cc grestore aqua pnb restore } def /font9 /StoneSans-Bold [0.65 0 0 0.65 0 -0.3] gonzofont startnewpage (You often might restrict |/to t|/tx (or "time") to values from |/to 0|/tx to |/to 1|/tx . To create most |/to any|/tx group of Bernstein Polynomial Basis Functions, |/to you simply raise both sides of this |/to equation to a desired power|/tx . And then separate terms of interest. |h Our crucial cubic Bernstein polynomial is\274 |6|/shiftin |/burple |/burplebox9 |/staytint1 |h Thus\274 ((1 - t) + t)|8|j3|6 = 1 |h Expands to\274 |h (1 - t)|8|j3|6 + 3t(1-t)|8|j2|6 + 3t|8|j2|6(1 - t) + t|8|j3|6 = 1 |h Whose terms can be redefined as\274 |h B0(t) + B1(t) + B2(t) + B3(t) = 1 |h |1|/shiftout |/aqua |/black |h It is |/to very|/tx interesting to plot these cubic basis functions\274 |/plotnormalbasis For any given |/to t|/tx , the four basis functions will |/to exactly|/tx sum to give the |/to x|/tx value for that |/to t|/tx . Which leads to this crucially important Bezier Cubic Spline equation\274 |6|/shiftin |/burple |/burplebox2 |/staytint1 |h x(t) = x|90|6B0(t) + x|91|6B1(t) + x|92|6B2(t) + x|93|6B3(t) |h |1|/shiftout |/aqua |/black |h \274 and the corresponding |/to y(t)|/tx equivalent \274 |6|/shiftin |/burple |/burplebox2 |/staytint1 |h y(t) = y|90|6B0(t) + y|91|6B1(t) + y|92|6B2(t) + y|93|6B3(t) |h |1|/shiftout |/aqua |/black |h We can immediately see that initial point |/to x|90|/tx sets the |/to start|/tx of the curve and that final point |/to x|93|/tx sets the |/to end|/tx point for us. And that |/to x|91|/tx will have its strongest (but not total) influence |/to exactly|/tx at |/to t = 1/3|/tx . Similarly, |/to x|92|1|/tx will be strongest at |/to t = 2/3|/tx . |h ) cl startnewpage /tabs [12.5] store (|c And |jthe |jmagic |jderivation |j is\274 |d The |/to x|/tx equation deriving the underlying Cubic Spline math is simply\274 |6|/shiftin |/burple |/burplebox2 |/staytint1 |h x|90|6B0(t) + x|91|6B1(t) + x|92|6B2(t) + x|93|6B3(t) = At|83|6 + Bt|82|6 + Ct + D |h |1|/shiftout |/aqua |/black |h Along with its |/to y|/tx equivalent\274 |6|/shiftin |/burple |/burplebox2 |/staytint1 |h y|90|6B0(t) + y|91|6B1(t) + y|92|6B2(t) + y|93|6B3(t) = Et|83|6 + Ft|82|6 + Gt + H |h |1|/shiftout |/aqua |/black |h Since the powers of |/to t|/tx have to vary over a 0 to 1 region, |/to these two expressions |/to can be equal only if the constant coefficients for each power of t match.|/tx \274 |6|/shiftin |/burple |/burplebox6.5 |/staytint1 |h x|93|6B3(t) = x|93|6t|83|6 |t= x|93|6t|83 |6 |h x|92|6B2(t) = x|92|6(3t|82|6(1-t)) |t= -3x|92|6t|83|6 + 3x|92|6t|82|6 |h x|91|6B1(t) = x|91|6(3t(1-t)|82|6) |t= 3x|91|6t|83|6 - 6x|91|6t|82|6 + 3x|91|6t |h x|90|6B0(t) = x|90|6(1-t)|83|6 |t= -x|90|6t|83|6 + 3x|90|6t|82|6 - 3x|90|6t + x|90|6 |h |1|/shiftout |/aqua |/black |h Now, "think vertically" and regroup to get\274 |6|/shiftin |/burple |/burplebox6.5 |/staytint1 |h A = x|93|6 - 3x|92|6 + 3x|91|6 - x|90|6 |h B = 3x|92|6 - 6x|91|6 + 3x|90|6 |h C = 3x|91|6 - 3x|90|6 |h D = x|90|6 |h |1|/shiftout |/aqua |/black |h And similarly for |/to y|/tx \274 |6|/shiftin |/burple |/burplebox6.5 |/staytint1 |h E = y|93|6 - 3y|92|6 + 3y|91|6 - y|90|6 |h F = 3y|92|6 - 6y|91|6 + 3y|90|6 |h G = 3y|91|6 - 3y|90|6 |h H = y|90|6 |h |1|/shiftout |/aqua |/black |h ) cl /snakebox {save /snakesnap exch store 12 18.5 translate % 15 12 showgrid 0 5 mt 11 12 lineto 4 pd % left side 0 0 lineto closepath 0.2 1 1 setrgbcolor fill 0 0 mt 11 8 lineto 4 pr % bottom 5 0 lineto closepath 0 0.8 0.8 setrgbcolor fill line1 0 0 mt 5 pu 5 pr 5 pd 5 pl % l variable apparently reused!! 0.6 1 1 setrgbcolor fill 11 8 mt 4 pu 4 pr 4 pd 4 pl 0.6 1 1 setrgbcolor fill 1 0.6 0.2 setrgbcolor line3 1 1 mt 17 9 -6 -2 14 11 curveto stroke black /font1 /Helvetica 0.8 gonzofont font1 15.5 10 (y) cc 13 12.3 (x) cc 4.8 8.5 (t) cc /kern 0.1 store 6 -0.2 (t|j=|j0) cl 15.5 7.8 (t|j=|j1) cl snakesnap restore} store startnewpage (We've already seen that |/to x|90|6,|jy|90|6|/tx sets the start of the curve and |/to x|93|6,|jy|93|6|/tx the end. We've also seen that influence point |/to x|91|6,|jy|91|6|/tx sets the |/to enthusiasm|/tx or |/to tension|/tx that peaks at |/to t = 1/3|/tx . And that |/to x|92|6,|jy|92|6|/tx sets the |/to enthusiasm|/tx or |/to tension|/tx that peaks at |/to t = 2/3|/tx . |h There are several ways of getting at the initial and final slopes of the final curve. By definition |/to C|/tx will be the initial slope of the |/to x|/tx versus |/to t|/tx curve and will also equal |/to 3x|91|6 - 3x|90|6|/tx . On our |/to x|/tx versus |/to y|/tx curve, the slope will be |/to (y|91|6 - y|90|6)/(x|91|6 - x|90|6)|/tx . |h Thus, the |/to x|91|6,|jy|91|6|/tx influence point will set the |/to initial|/tx slope of the |/to x-y|/tx cubic spline curve. And the |/to x|92|6,|jy|92|6|/tx influence point will similarly set the |/to final|/tx slope. |h |c The |j"Snake |jin |jthe |jBox" |d It is important to remember that Bezier cubic splines |/to independently|/tx relate |/to x|/tx and |/to y|/tx to a new |/to parametric|/tx variable |/to t|/tx . Which varies from |/to 0|/tx to |/to 1|/tx from the beginning to the end of the curve. Thus, your final two dimensional |/to x-y|/tx plot is really one view of a three dimensional |/to x-y-t|/tx plot. One good way to visualize this is to think of your parametric curve as a |/to snake in a box|/tx \274 |/snakebox |h |h You look into the |/to end|/tx of the box to see how |/to x |/tx varies with |/to y|/tx . And into the |/to top|/tx or |/to side|/tx of the box to see the variation versus |/to t|/tx . |h In general, the relationship between |/to x|/tx and |/to t|/tx will be non-obvious, with |/to t|/tx changing |/to faster|/tx along the "more bent" portions of the curve. In addition, finding |/to t(x)|/tx given |/to x(t)|/tx is non trivial. And finding |/to y|/tx given |/to x|/tx involves first finding |/to t|/tx . And really gets ugly fast because there can be multiple |/to y|/tx values for a given |/to x|/tx in a looped spline. |h |c For |jMore |jHelp |d Additional info on cubic splines can be found on our |/su Cubic Spline|1|/cubic01 library page. As are many dozens of examples of Bezier cubic spline techniques. |h Additional consulting services are available per our |/su Infopack|1|/info01 services and on a contract or an hourly basis. Additional |/su GuruGrams|1|/gurgrm01 are found |/su here|1|/gurgrm01 . |h Further |/surl |6GuruGrams|1|/gurgrm01 await your ongoing support as a |/surl |6Synergetics Partner|1|/advt01 . ) cl startnewpage %%%%%%%%%%%%%%%%%%%% % EOF