%!PS % A Review of some Image Pixel Interpolation Algirithms % ===================================================== % by Don Lancaster GG #83 PIXINTPL.PSL /ggnum 83 store % Copyright c 2007 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. % Many routines removed and cleaned at #58 %%%%%%%%%%% 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 % zzz keep for search marker % dictionary method << % gg83 /pixintp1.pdf (http://www.tinaja.com/psutils/pixintp1.pdf) /pixintp1.psl (http://www.tinaja.com/psutils/pixintp1.psl) /pixintpl.pdf (http://www.tinaja.com/glib/pixintpl.pdf) /pixintpl.psl (http://www.tinaja.com/glib/pixintpl.psl) /wikipedia (http://en.wikipedia.org/wiki/Main_Page) /wikilin (http://en.wikipedia.org/wiki/Bilinear_interpolation) /wikicub (http://en.wikipedia.org/wiki/Bicubic) % gg82 /muse111.pdf (http://www.tinaja.com/glib/muse111.pdf) /pdfanim.pdf (http://www.tinaja.com/glib/pdfanim.pdf) /falseclr.psl (http://www.tinaja.com/glib/falseclr.psl) /dodgebur.pdf (http://www.tinaja.com/glib/dodgebur.pdf) % gg81 /htmlfordummiesbook (http://www.amazon.com/exec/obidos/ISBN=0764589172/donlancastersgurA/) /htmldefinitiveguidebook (http://www.amazon.com/exec/obidos/ISBN=0596527322/donlancastersgurA/) % gg80 /kearney (http://www.cs.uiowa.edu/~kearney/pubs/CurvesAndSufacesClosestPoint.pdf) /cmindist.psl (http://www.tinaja.com/glib/cmindist.psl) /piecewise (http://delivery.acm.org/10.1145/810000/801153/p229-plass.pdf?key1=801153&key2=0010608811&coll=GUIDE&dl=&CFID=15151515&CFTOKEN=6184618) /nubzlen1.pdf (http://www.tinaja.com/glib/nubzlen1.pdf) /nubz4pts1.pdf (http://www.tinaja.com/glib/nubz4pts1.pdf) % entered during gg79 /gonzotut.pdf (http://www.tinaja.com/glib/gonzotut.pdf) /gonzotut.psl (http://www.tinaja.com/glib/gonzotut.psl) /bookcvr1.pdf (http://www.tinaja.com/glib/bookcvr1.pdf) /swingtlt.pdf (http://www.tinaja.com/glib/swingtlt.pdf) /curvetr2.pdf (http://www.tinaja.com/psutils/curvetr2.pdf) /curvetr2.psl (http://www.tinaja.com/psutils/curvetr2.psl) /blanksusa (http://www.blanksusa.com) /gonzotut.psl (http://www.tinaja.com/glib/gonzotut.psl) /ps8dprp1.pdf (http://www.tinaja.com/glib/ps8dprp1.pdf) /pdfedit1.pdf (/http://www.tinaja.com/glib/pdfedit1.pdf) % entered during gg78 /enhebay6.psl (http://www.tinaja.com/glib/enhebay6.psl) /enhebay6.pdf (http://www.tinaja.com/glib/enhebay6.pdf) /slashdot (http://www.slashdot.org) /blackrangelodge (http://www.blackrangelodge.com/) /kijiji (http://www.phoenix.kijiji.com) /aznews (http://www.usnpl.com/aznews.html) /azschools (http://www.ade.state.az.us/schools/schools/districts.asp) /azcounties (http://www.az.gov/webapp/portal/displaycontent.jsp?name=county) /aztowns( http://www.azleague.org/index.cfm?fuseaction=about.cities) /natuniv (http://www.utexas.edu/world/univ/state/) /natcc (http://www.50states.com/college/arizona.htm) /barbiecollect (http://www.barbiecollector.com/shop/dept.aspx?deptid=2&shelfid=02&view=all) /googlebarbie (http://www.google.com/search?q=barbie+doll&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official) /wikibarbie (http://en.wikipedia.org/wiki/Barbie) /countyourassests (http://www.soldyourway.com/) /christies (http://www.christies.com/home_page/home_page.asp) /sothebys (http://www.sothebys.com) /franklinmint (http://en.wikipedia.org/wiki/Franklin_Mint) /klausbarbie (http://en.wikipedia.org/wiki/Klaus_Barbie) /enhebay5.pdf (http://www.tinaja.com/glib/enhebay5.pdf) /whtnu06 (http://www.tinaja.com/whtnu07.asp) /whtnu07 (http://www.tinaja.com/whtnu07.asp) % entered during gg77 /fastmsol.pdf (http://www.tinaja.com/glib/fastmsol.pdf) % entered during gg76 /ieeefp (http://en.wikipedia.org/wiki/IEEE_754) /ps8dprpt.psl (http://www.tinaja.com/psutils/ps8dprpt.psl) % entered during gg75 /pstrans2.pdf (http://www.tinaja.com/glib/pstrans2.pdf) /ghostscript (http://pages.cs.wisc.edu/~ghost/doc/AFPL/index.htm) /PLRM (http://www.adobe.com/products/postscript/pdfs/PLRM.pdf) /pdfref (http://www.adobe.com/devnet/pdf/pdf_reference.html) % entered during gg 74 /ebaymktsearch (http://pages.ebay.com/marketplace%5Fresearch/) /ebaystat.psl (http://www.tinaja.com/glib/ebaystat.psl) /ebayadvsearch (http://search.ebay.com/ws/search/AdvSearch?sofindtype=13&_trksid=m37) /ebaystatservice (http://www.medved.net/cgi-bin/cal.exe?EIND) % entered during gg 73 /bridge701.psl (http://www.tinaja.com/magsn_5/bridge701.psl) /bridge701.pdf (http://www.tinaja.com/magsn_5/bridge701.pdf) /demo28a (http://www.tinaja.com/demo28a.asp) /gaussjordan (http://en.wikipedia.org/wiki/Gauss-Jordan_elimination) /sinseries (http://www.ucl.ac.uk/Mathematics/geomath/level2/series/ser11.html) /newtonmethod (http://en.wikipedia.org/wiki/Newton's_method) /trigidentity (http://www.sosmath.com/trig/Trig5/trig5/trig5.html) /demo28a.asp (http://www.tinaja.com/demo28a.asp) % entered during gg 71 /detmssol.pdf (http://www.tinaja.com/glib/detmssol.pdf) /detmssol.psl (http://www.tinaja.com/glib/detmssol.psl) /alvinpile (http://www.tinaja.com/glib/enhebay2.pdf) % duplicate name /dilbert (http://www.dilbert.com) /putty (http://www.putty.nl) /legible1.pdf (http://www.tinaja.com/glib/legible1.pdf) /muse144.pdf (http://www.tinaja.com/glib/muse144.pdf) /webcolr.pdf (http://www.tinaja.com/psutils/webcolor.pdf) /ifilter (http://www.adobe.com/support/downloads/detail.jsp?ftpID=2611) /drmsbiz1 (http://reform.house.gov/UploadedFiles/MG%20Williams%20July%2025%20Testimony.pdf) /drmsbiz2 (http://www.gao.gov/new.items/d05277.pdf) /drmsclosed (http://www.drms.dla.mil/A76/transitionsitelistrevised.pdf) /drmsmap (http://www.drms.dla.mil/meo/routemap.htm) /drms (http://www.drms.dla.mil/) /enhebay4.pdf (http://www.tinaja.com/glib/enhebay4.pdf) % entered during gg 70 /insidegame (http://www.amazon.com/exec/obidos/ISBN%3D1585006246/donlancastersgurA/002-8267096-8078436) /auctionbytes (http://www.auctionbytes.com) /texasauctionlaw (Texas auction law: http://www.license.state.tx.us/auc/auction.htm) /shermananti (http://www.gamingip.com/Statutes/ShermanAct/ST-Sherman1-4.html) /mainantique (http://www.antiquedigest.com/articles/auclaw.htm) /finex1 (http://www.tinaja.com/images/bargs/pwrssrx3.jpg) /knockback.psl (http://www.tinaja.com/psutils/knockback.psl) /krylondull (http://www.krylon.com/main/product_template.cfm?levelid=5&sub_levelid=8&productid=1822&content=product_details) /adeptaabb (http://www.tinaja.com/images/bargs/araabbb.jpg) /bonnette (http://www.bonnetteauctions.com/) /walmartauctionsignup (mailto://Joan.Ramsey@Wal-Mart.com) /walmartauction (http://walmartstores.com/GlobalWMStoresWeb/navigate.do?catg=504&contId=49) /ucc (http://www.law.cornell.edu/ucc/) /whtnu06 (http://www.tinaja.com/whtnu06.asp) % entered during gg69 /wikicat (http://en.wikipedia.org/wiki/Catenary) /bezcat.psl (http://www.tinaja.com/glib/bezcat.psl) /nubz4pts1.pdf (http://www.tinaja.com/glib/nubz4pts1.pdf) % entered during gg68 /nobodydog (http://www.unc.edu/depts/jomc/academics/dri/idog.html) /kaizen (http://en.wikipedia.org/wiki/Kaizen) /circuitcellar (http://www.circuitcellar.com/guru/) /makemag (http://www.makezine.com/) /adamsadventures (http://www.msadams.com/downloads.htm) /linux (http://www.linux.org/) /opensource (http://www.opensource.org/) /craigslist (http://phoenix.craigslist.org/) /autotrader (http://www.autotrader.com/) /lulu (http://www.lulu.com/) /bookmarket (http://www.bookmarket.com/ondemand.html) /burgerking (http://www.bk.com) /newtek (http://www.newtek.com) /memsnet (http://www.memsnet.org/) /muse131.pdf (http://www.tinaja.com/glib/muse131.pdf) /muse120.pdf (http://www.tinaja.com/glib/muse120.pdf) /supercap (http://www.sciencemag.org/cgi/content/abstract/313/5794/1760?maxtoshow=&HITS=10&hits=10&RESULTFORMAT=&fulltext=carbon+pore+sizes&searchid=1&FIRSTINDEX=0&resourcetype=HWCIT) /quantumdots (http://www.google.com/search?q=%22quantum+dots%22+solar&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:en-US:official) /datasheetarchive (http://www.datasheetarchive.com/chipPhotos/photosA.html) /googleearth (http://www.earth.google.com) /toystory (http://us.imdb.com/title/tt0114709/) /robotmovie (http://us.imdb.com/title/tt0358082/) /cars (http://us.imdb.com/title/tt0317219/) /netflix (http://www.netflix.com/) /blockbuster (http://www.blockbuster.com/online/) % entered during gg67 /puzz01.psl (http://www.tinaja.com/psutils/puzz01.psl) /alphamet1 ( http://www.tkcs-collins.com/truman/alphamet/alphamet.shtml) /alphamet2 (http://www.tkcs-collins.com/truman/alphamet/alpha_gen.shtml) /alphamet3 (http://users.aol.com/s6sj7gt/mikealp.htm) /msinexec.pdf (http://www.tinaja.com/glib/msinexec.pdf) /paradigm.pdf (http://www.tinaja.com/glib/paradigm.pdf) % entered during gg66 /thunderbird (http://www.thunderbird.com) /spysweeper (http://www.webroot.com/consumer/products/spysweeper/?rc=1651) /norton (http://www.symantec.com/index.htm) /pestpatrol (http://www.pestpatrol.com/) /firefox (http://www.firefox.com) /sciencemag (http://www.sciencemag.org/) /worldfact (http://www.cia.gov/cia/publications/factbook/) /internetdog (http://www.unc.edu/depts/jomc/academics/dri/idog.html) /zipcode (http://www.usps.com/ncsc/lookups/lookup_zip+4.html) /weather (http://www.weather.com/) /thomasreg (http://www.thomasregister.com/) /topozone (http://www.topozone.com/) /yahoostock (http://finance.yahoo.com/) /reversephone (http://www.reversephonedirectory.com/) /uspto (http://www.uspto.gov/patft/index.html) /msnbc (http://www.msnbc.com/) /imdb (http://us.imdb.com/) /loanamort (http://www.hsh.com/calc-amort.html) /kellybook (http://www.kbb.com/) /googlemaps (http://maps.google.com/) /newyorker (http://www.newyorker.com/) /currexch (http://www.xe.net/ucc/) /chemele (http://www.chemicalelements.com) /cnn (http://www.cnn.com) /areacodes (http://decoder.americom.com/cgi-bin/decoder.cgi) /tinajaoffsite (http://www.tinaja.com#offsite) /tinajaengines (http://www.tinja.com#engines) /walmart (http://www.walmart.com) /rssbook (http://www.amazon.com/exec/obidos/ISBN%3D0764588486/donlancastersgurA/002-5434897-4181636) /webwb01 (http://www.tinaja.com/webwb01.asp) /weblib01 (http://www.tinaja.com/weblib01.asp) /validator (http://rss.scripting.com/) /webbooks (http://www.tinaja.com/books/bkwbmast.asp) /dreamweaver (http://www.adobe.com/products/dreamweaver/) /golive (http://www.adobe.com/products/golive/) /frontpage (http://office.microsoft.com/en-us/FX010858021033.aspx) /htmlbooks (http://www.tinaja.com/books/bkhtml.asp) /htmldummybook (http://www.amazon.com/exec/obidos/ISBN=0764507230/donlancastersgurA/) /naa (http://www.auctioneers.org) /histolog.pdf (http://www.tinaja.com/glib/histolog.pdf) /analogeb.pdf (http://www.tinaja.com/glib/analogeb.pdf) /enhebay3.pdf (http://www.tinaja.com/glib/enhebay3.pdf) /ipswitch (http://www.ipswitch.com/Products/WS_FTP) /networksolutions (http://www.networksolutions.com) /whois (http://www.networksolutions.com/cgi-bin/whois/whois) % entered furing gg65 msexec summary /picpro (http://www.tinaja.com/glib/mspicpro.pdf) /fourier (http://www.tinaja.com/glib/muse90.pdf) % entered during GG64 log log graphs /pdfrm1 (http://partners.adobe.com/public/developer/en/acrobat/sdk/pdf/pdf_creation_apis_and_specs/pdfmarkReference.pdf) /loglog01.psl (http://www.tinaja.com/psutils/loglog01.psl) /loglog01.pdf (http://www.tinaja.com/glair/loglog01.pdf) /bookcvr1.psl (http://www.tinaja.com/psutils/bookcvr1.psl) /bookcvr1.pdf (http://www.tinaja.com/glair/bookcvr1.pdf) % entered during gg 63 two phase magic sinewaves /numschip.pdf (http://www.tinaja.com/glib/numschip.pdf) /mspicpro.pdf (http://www.tinaja.com/glib/mspicpro.pdf) % entered during gg 62 enhance III /analogeb.pdf (http://www.tinaja.com/glib/analogeb.pdf) /rss (http://www.tinaja.com/whtnu.xml) /oreproptable (http://www.tinaja.com/whtnu05.asp#rogue3) /javascriptslideshow (http://www.codelifter.com/main/javascript/slideshow4.html) /logrptx2.psl (http://www.tinaja.com/psutils/logrptx2.psl) % entered during GG61 /jpg2pdf.pdf (http://www.tinaja.com/glib/jpg2pdf.pdf) /barcodeonline (http://www.raise-the-bar.co.uk/cgi-bin/webbarcodegen.pl) /barcodegen (http://www.terryburton.co.uk/barcodewriter/) /barcodetutorial (http://www.barcode-us.com/info_center/bookinfo.htm) /isbn (http://www.isbn.org/standards/home/index.asp) /bookcovr.psl (http://www.tinaja.com/glib/bookcovr.psl) /bookcovr.pdf (http://www.tinaja.com/glib/bookcovr.pdf) /begstuff (http://www.tinaja.com/post01.asp#begstuff) /ghostscript (http://www.cs.wisc.edu/~ghost/) /bod01 (http://www.tinaja.com/bod01.asp) % entered during GG 60 /bezlenjf.pdf (http://www.tinaja.com/glib/bezlenjf.pdf) /bzlnsub1.psl (http://www.tinaja.com/psutils/bzlnsub1.psl) /cubemath.pdf (http://www.tinaja.com/glib/cubemath.pdf) % entered during GG 59 /imbz4p01.psl (http://www.tinaja.com/psutils/imbz4p01.psl) /cubemath.pdf (http://www.tinaja.com/glib/cubemath.pdf) /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) /swingtlt.pdf (http://www.tinaja.com/glib/swingt01.pdf) /swingt01.psl (http://www.tinaja.com/glib/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.psl) /rebound1.pdf (http://www.tinaja.com/glib/rebound1.pdf) /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) /muse153 (http://www.tinaja.com/glib/muse153.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/blat01.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) /oldfuzzybez (http://www.tinaja.com/text/fuzzybez.html) /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) % dead /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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% page manager /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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % //// 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? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Burplebox routines /burpwide 29.5 store /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 { /burplebox1 {1.5 burpcom} store /burplebox1.5 {2 burpcom} store /burplebox2 {2.5 burpcom} store /burplebox2.5 {3 burpcom} store /burplebox3 {3.5 burpcom} store /burplebox3.5 {4 burpcom} store /burplebox4 {4.5 burpcom} store /burplebox4.5 {5 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 /burplebox17 {17.5 burpcom} store /burplebox17.5 {18 burpcom} store /burplebox18 {18.5 burpcom} store /burplebox18.5 {19 burpcom} store /burplebox19 {19.5 burpcom} store /burplebox19.5 {20 burpcom} store /burplebox20 {20.5 burpcom} store /burplebox21.5 {22 burpcom} store /burplebox22{22.5 burpcom} store /burplebox22.5 {23 burpcom} store /burplebox23 {23.5 burpcom} store /burplebox23.5 {24 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 /burplebox30 {30.5 burpcom} store /burplebox31 {31.5 burpcom} store /burplebox31.5 {32 burpcom} store /burplebox33.5 {34 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 } pop 1 1 50 {cvi /size exch store % make all the burpleboxes (burplebox) size 20 string cvs mergestr cvn mark size 0.5 add /burpcom cvx ] cvx store (burplebox) size 0.5 add 20 string cvs mergestr cvn mark size 1 add /burpcom cvx ] cvx store } for /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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % New sequence of auto positioning figures... % combined autopos jpeg conversion and hotlink: /autoimageandlink1 {save /af1 exch store xpos ypos yinc add translate 6.3 -14.1 684 384 .033 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/cabsvid1.jpg) % url first % (http://www.tinaja.com/images/bargs/ce47u25v.jpg) % url first (C:\\Documents and Settings\\don\\Desktop\\gurugrams\\78_ebayskill_VI\\cabsvid1.jpg) jpegimageprocwithlink af1 restore} store /autoimageandlink2 {save /af2 exch store xpos ypos yinc add translate 18 -11.8 684 487 .022 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/ce47u25v.jpg) % url first (C:\\Documents and Settings\\don\\Desktop\\gurugrams\\70_ebayskill_iv\\ce47u25v.jpg) jpegimageprocwithlink af2 restore} store /autoimageandlink3 {save /af1 exch store xpos ypos yinc add translate 1 -12 684 487 .022 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/pwrssrx3x.bmp) % url first (C:\\Documents and Settings\\don\\Desktop\\gurugrams\\70_ebayskill_iv\\origpwri.jpg) jpegimageprocwithlink af1 restore} store /autoimageandlink4 {save /af2 exch store xpos ypos yinc add translate 18 -12 -1.5 add 684 487 .022 % xpos ypos xres yres pixscale (http://www.tinaja.com/images/bargs/pwrssrx3.bmp) % url first (C:\\Documents and Settings\\don\\Desktop\\gurugrams\\70_ebayskill_iv\\finpwri.jpg) jpegimageprocwithlink af2 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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%% ordinary tracking figures /autofig1 { /figadvance 10 store save /snap1 exch store xpos 2 add ypos figadvance sub translate figure1 snap1 restore /ypos ypos figadvance sub yinc sub store } store /autofig2 { /figadvance 13 store save /snap2 exch store xpos 2 add ypos figadvance sub translate figure2 snap2 restore /ypos ypos figadvance sub yinc sub store } store /autofig3 { /figadvance 13 store save /snap22 exch store xpos 2 add ypos figadvance sub translate figure3 snap22 restore /ypos ypos figadvance sub yinc sub store } store /autofig4 { /figadvance 13 store save /snap2 exch store xpos 2 add ypos figadvance sub translate figure4 snap2 restore /ypos ypos figadvance sub yinc sub store } store %%%%%%%%%%%%%%% fixed position figures here %%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% begin current gg figures removed many previous %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % figure1 for gg83 /figure1 { save /snap3 exch store 9.5 -3.3 translate % position in box 1.2 dup scale %%% this is a gray box with five interpolation points in it 0 0 mt 10 pu 10 pr 10 pd closepath 1 0.7 0.5 setrgbcolor fill /bdot { gsave 1.75 dup scale dot grestore} store black line1 0 0 mt 10 u 10 r 10 d 10 l 2 2 mt bdot 2 8 mt bdot 8 2 mt bdot 8 8 mt bdot /cstretch 0.015 store /sstretch 0.015 store /font1 /Helvetica 0.85 gonzofont font1 black 2 2.7 (p(0,0)) cc 2 6.7 (p(0,1)) cc 8 2.7 (p(1,0)) cc 8 6.7 (p(1,1)) cc 1 0 0 setrgbcolor 4 4 mt bdot 4 4.7 (new p(x,y)) cc snap3 restore } store % end figure 3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % figure2 for gg83 /figure2 { save /snap3 exch store -4 -19.5 translate % position in box 0.8 dup scale /nicerainbowdatapatchedx [ [0.0 0.71 1.0] [0.002668 0.712655 1.0] [0.006003 0.715973 1.0] [0.00867101 0.718628 1.0] [0.012006 0.721946 1.0] [0.015341 0.725265 1.0] [0.018009 0.727919 1.0] [0.021344 0.731238 1.0] [0.024012 0.733893 1.0] [0.027347 0.737211 1.0] [0.030015 0.739866 1.0] % color 10 [0.03335 0.743184 1.0] [0.036018 0.745839 1.0] [0.039353 0.749157 1.0] [0.042021 0.751812 1.0] [0.045356 0.75513 1.0] [0.048024 0.757785 1.0] [0.050692 0.76044 1.0] [0.054027 0.763758 1.0] [0.056695 0.766413 1.0] % color 20 [0.06003 0.769731 1.0] [0.062698 0.772386 1.0] [0.066033 0.775705 1.0] [0.068701 0.778359 1.0] [0.072036 0.781678 1.0] [0.074704 0.784332 1.0] [0.078039 0.787651 1.0] [0.080707 0.790305 1.0] [0.084042 0.793624 1.0] [0.08671 0.796279 1.0] [0.090045 0.799597 1.0] [0.09338 0.802915 1.0] [0.096048 0.80557 1.0] [0.099383 0.808889 1.0] [0.102051 0.811543 1.0] [0.105386 0.814862 1.0] [0.107387 0.816853 1.0] [0.110722 0.820171 1.0] [0.112056 0.821498 1.0] [0.115391 0.824817 1.0] [0.116058 0.825481 1.0] [0.119393 0.828799 1.0] [0.119393 0.828799 1.0] [0.122728 0.832117 1.0] [0.122061 0.831454 1.0] [0.125396 0.834772 1.0] [0.124062 0.833445 1.0] [0.127397 0.836763 1.0] [0.125396 0.834772 1.0] [0.128731 0.83809 1.0] [0.12673 0.836099 1.0] [0.130065 0.839418 1.0] [0.128064 0.837427 1.0] [0.131399 0.840745 1.0] [0.129398 0.838754 1.0] [0.132733 0.842073 1.0] [0.131113 0.840461 1.0] [0.134448 0.843779 1.0] [0.133209 0.842547 1.0] [0.136544 0.845865 1.0] [0.135687 0.845012 1.0] [0.139022 0.84833 1.0] [0.138545 0.847856 1.0] [0.14188 0.851174 1.0] [0.141785 0.85108 1.0] [0.14512 0.854398 1.0] [0.145406 0.854682 1.0] [0.148741 0.858001 1.0] [0.149408 0.858665 1.0] [0.152743 0.861983 1.0] [0.15341 0.862647 1.0] [0.156745 0.865965 1.0] [0.157412 0.866629 1.0] [0.160747 0.869947 1.0] [0.161414 0.870611 1.0] [0.164749 0.873929 1.0] [0.165416 0.874593 1.0] [0.168751 0.877911 1.0] [0.169418 0.878575 1.0] [0.172753 0.881893 1.0] [0.17342 0.882557 1.0] [0.176755 0.885875 1.0] [0.177422 0.886539 1.0] [0.180757 0.889858 1.0] [0.181424 0.890521 1.0] [0.184759 0.89384 1.0] [0.185426 0.894503 1.0] [0.188761 0.897822 1.0] [0.189428 0.898485 1.0] [0.192763 0.901804 1.0] [0.193239 0.902278 1.0] [0.196574 0.905596 1.0] [0.197241 0.90626 1.0] [0.200576 0.909578 1.0] [0.201243 0.910242 1.0] [0.204578 0.91356 1.0] [0.206579 0.915551 1.0] [0.209914 0.91887 1.0] [0.214678 0.92361 1.0] [0.218013 0.926929 1.0] [0.225541 0.995372 1.0] [0.228876 0.991897 1.0] [0.238691 0.98167 1.0] [0.242026 0.978194 1.0] [0.254317 0.965385 1.0] [0.257652 1.0 1.0] [0.271183 1.0 1.0] [0.274518 1.0 1.0] [0.289478 0.928746 1.0] [0.292813 0.925271 1.0] [0.307868 0.909582 1.0] [0.311203 0.906107 1.0] [0.324924 0.891809 1.0] [0.328259 0.888334 1.0] [0.340551 0.875525 1.0] [0.343886 0.872049 1.0] [0.35452 0.860968 1.0] [0.357855 0.857493 1.0] [0.366831 0.84814 1.0] [0.370166 0.844664 1.0] [0.378341 0.836145 1.0] [0.381676 0.83267 1.0] [0.389051 0.824984 1.0] [0.392386 0.821509 1.0] [0.398961 0.814658 1.0] [0.402296 0.811182 1.0] [0.40807 0.805165 1.0] [0.411405 0.80169 1.0] [0.416474 0.796408 1.0] [0.419809 0.792932 1.0] [0.424879 0.78765 1.0] [0.428214 0.784175 1.0] [0.433283 0.778892 1.0] [0.436618 0.775417 1.0 0.01 sub ] [0.441782 0.770035 1.0 0.02 sub ] [0.445117 0.76656 1.0 0.03 sub ] [0.450187 0.761278 1.0 0.04 sub ] [0.453522 0.757802 1.0 0.05 sub ] [0.458591 0.75252 1.0 0.06 sub ] [0.461926 0.749045 1.0 0.07 sub ] [0.466995 0.743762 1.0 0.08 sub ] [0.47033 0.740287 1.0 0.09 sub ] [0.475552 0.734846 1.0 0.10 sub ] [0.478887 0.73137 1.0 0.11 sub ] [0.484061 0.725979 1.0 0.12 sub ] [0.487396 0.722503 1.0 0.125 sub ] [0.492589 0.717092 1.0 0.13 sub ] [0.495924 0.713617 1.0 0.125 sub ] [0.501041 0.708285 1.0 0.12 sub ] [0.504376 0.704809 1.0 0.11 sub ] [0.509511 0.699457 1.0 0.10 sub ] [0.512846 0.695982 1.0 0.09 sub] [0.518001 0.69061 1.0 0.08 sub ] [0.521336 0.687135 1.0 0.07 sub ] [0.526606 0.681644 1.0 0.06 sub ] [0.529941 0.678169 1.0 0.05 sub ] [0.534591 0.673323 1.0 0.04 sub ] [0.537926 0.669848 1.0 0.02 sub ] [0.542252 0.66534 1.0 0.01 sub ] [0.545587 0.661865 1.0 0.00 sub ] [0.549522 0.657764 1.0 0.00 sub ] [0.552857 0.654289 1.0] [0.556401 0.650595 1.0] [0.559736 0.64712 1.0] [0.562986 0.643734 1.0] [0.566321 0.640259 1.0] [0.56916 0.6373 1.0] [0.572495 0.633824 1.0] [0.574839 0.631382 1.0] [0.578174 0.627906 1.0] [0.580604 0.625374 1.0] [0.583939 0.621899 1.0] [0.586359 0.619377 1.0] [0.589694 0.615902 1.0] [0.592153 0.61334 1.0] [0.595488 0.609865 1.0] [0.597936 0.607313 1.0] [0.601271 0.603838 1.0] [0.603711 0.601296 1.0] [0.607046 0.59782 1.0] [0.609495 0.595269 1.0] [0.61283 0.591793 1.0] [0.615278 0.589242 1.0] [0.618613 0.585766 1.0] [0.621062 0.583214 1.0] [0.624397 0.579739 1.0] [0.626846 0.577187 1.0] [0.630181 0.573712 1.0] [0.632582 0.57121 1.0] [0.635917 0.567735 1.0] [0.638319 0.565232 1.0] [0.641654 0.561757 1.0] [0.644055 0.559255 1.0] [0.64739 0.55578 1.0] [0.649791 0.553277 1.0] [0.653126 0.549802 1.0] [0.655527 0.5473 1.0] [0.658862 0.543825 1.0] [0.661263 0.541322 1.0] [0.664598 0.537847 1.0] [0.667 0.535345 1.0] ] store /data [ [0.60 0.60 0.48 0.24 0.60 0.60] [0.60 0.60 0.48 0.24 0.60 0.60] [0.00 0.00 0.36 0.12 0.48 0.48] [0.24 0.24 0.48 0.60 0.12 0.12] [0.12 0.12 0.24 0.48 0.36 0.36] [0.12 0.12 0.24 0.48 0.36 0.36] ] store /xbox 0 def % temporary before loop /ybox 2 def 1 1 3 {/xbox exch store 1 1 3 {/ybox exch store 0 0.1 1 { /xres exch store 0 0.1 1 {/yres exch store xres round yres round 2 mul add cvi [ {data ybox get xbox get} % lower left {data ybox get xbox 1 add get} % lower right {data ybox 1 add get xbox get} % upper left {data ybox 1 add get xbox 1 add get} % upper right ] exch get exec 200 mul .667 div floor cvi nicerainbowdatapatchedx exch get aload pop sethsbcolor xres 10 mul xbox 10 mul add yres 10 mul ybox 10 mul add mt 1 pr 1 pu 1 pl closepath fill } for } for } for } for black 40 40 mt dot 40 10 mt dot 40 20 mt dot 40 30 mt dot 10 40 mt dot 10 10 mt dot 10 20 mt dot 10 30 mt dot 20 40 mt dot 20 10 mt dot 20 20 mt dot 20 30 mt dot 30 40 mt dot 30 10 mt dot 30 20 mt dot 30 30 mt dot snap3 restore } store % end figure 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % figure3 for gg83 /figure3 { save /snap3 exch store -5.5 -19.3 translate % position in box 0.8 dup scale /nicerainbowdatapatchedx [ [0.0 0.71 1.0] [0.002668 0.712655 1.0] [0.006003 0.715973 1.0] [0.00867101 0.718628 1.0] [0.012006 0.721946 1.0] [0.015341 0.725265 1.0] [0.018009 0.727919 1.0] [0.021344 0.731238 1.0] [0.024012 0.733893 1.0] [0.027347 0.737211 1.0] [0.030015 0.739866 1.0] % color 10 [0.03335 0.743184 1.0] [0.036018 0.745839 1.0] [0.039353 0.749157 1.0] [0.042021 0.751812 1.0] [0.045356 0.75513 1.0] [0.048024 0.757785 1.0] [0.050692 0.76044 1.0] [0.054027 0.763758 1.0] [0.056695 0.766413 1.0] % color 20 [0.06003 0.769731 1.0] [0.062698 0.772386 1.0] [0.066033 0.775705 1.0] [0.068701 0.778359 1.0] [0.072036 0.781678 1.0] [0.074704 0.784332 1.0] [0.078039 0.787651 1.0] [0.080707 0.790305 1.0] [0.084042 0.793624 1.0] [0.08671 0.796279 1.0] [0.090045 0.799597 1.0] [0.09338 0.802915 1.0] [0.096048 0.80557 1.0] [0.099383 0.808889 1.0] [0.102051 0.811543 1.0] [0.105386 0.814862 1.0] [0.107387 0.816853 1.0] [0.110722 0.820171 1.0] [0.112056 0.821498 1.0] [0.115391 0.824817 1.0] [0.116058 0.825481 1.0] [0.119393 0.828799 1.0] [0.119393 0.828799 1.0] [0.122728 0.832117 1.0] [0.122061 0.831454 1.0] [0.125396 0.834772 1.0] [0.124062 0.833445 1.0] [0.127397 0.836763 1.0] [0.125396 0.834772 1.0] [0.128731 0.83809 1.0] [0.12673 0.836099 1.0] [0.130065 0.839418 1.0] [0.128064 0.837427 1.0] [0.131399 0.840745 1.0] [0.129398 0.838754 1.0] [0.132733 0.842073 1.0] [0.131113 0.840461 1.0] [0.134448 0.843779 1.0] [0.133209 0.842547 1.0] [0.136544 0.845865 1.0] [0.135687 0.845012 1.0] [0.139022 0.84833 1.0] [0.138545 0.847856 1.0] [0.14188 0.851174 1.0] [0.141785 0.85108 1.0] [0.14512 0.854398 1.0] [0.145406 0.854682 1.0] [0.148741 0.858001 1.0] [0.149408 0.858665 1.0] [0.152743 0.861983 1.0] [0.15341 0.862647 1.0] [0.156745 0.865965 1.0] [0.157412 0.866629 1.0] [0.160747 0.869947 1.0] [0.161414 0.870611 1.0] [0.164749 0.873929 1.0] [0.165416 0.874593 1.0] [0.168751 0.877911 1.0] [0.169418 0.878575 1.0] [0.172753 0.881893 1.0] [0.17342 0.882557 1.0] [0.176755 0.885875 1.0] [0.177422 0.886539 1.0] [0.180757 0.889858 1.0] [0.181424 0.890521 1.0] [0.184759 0.89384 1.0] [0.185426 0.894503 1.0] [0.188761 0.897822 1.0] [0.189428 0.898485 1.0] [0.192763 0.901804 1.0] [0.193239 0.902278 1.0] [0.196574 0.905596 1.0] [0.197241 0.90626 1.0] [0.200576 0.909578 1.0] [0.201243 0.910242 1.0] [0.204578 0.91356 1.0] [0.206579 0.915551 1.0] [0.209914 0.91887 1.0] [0.214678 0.92361 1.0] [0.218013 0.926929 1.0] [0.225541 0.995372 1.0] [0.228876 0.991897 1.0] [0.238691 0.98167 1.0] [0.242026 0.978194 1.0] [0.254317 0.965385 1.0] [0.257652 1.0 1.0] [0.271183 1.0 1.0] [0.274518 1.0 1.0] [0.289478 0.928746 1.0] [0.292813 0.925271 1.0] [0.307868 0.909582 1.0] [0.311203 0.906107 1.0] [0.324924 0.891809 1.0] [0.328259 0.888334 1.0] [0.340551 0.875525 1.0] [0.343886 0.872049 1.0] [0.35452 0.860968 1.0] [0.357855 0.857493 1.0] [0.366831 0.84814 1.0] [0.370166 0.844664 1.0] [0.378341 0.836145 1.0] [0.381676 0.83267 1.0] [0.389051 0.824984 1.0] [0.392386 0.821509 1.0] [0.398961 0.814658 1.0] [0.402296 0.811182 1.0] [0.40807 0.805165 1.0] [0.411405 0.80169 1.0] [0.416474 0.796408 1.0] [0.419809 0.792932 1.0] [0.424879 0.78765 1.0] [0.428214 0.784175 1.0] [0.433283 0.778892 1.0] [0.436618 0.775417 1.0 0.01 sub ] [0.441782 0.770035 1.0 0.02 sub ] [0.445117 0.76656 1.0 0.03 sub ] [0.450187 0.761278 1.0 0.04 sub ] [0.453522 0.757802 1.0 0.05 sub ] [0.458591 0.75252 1.0 0.06 sub ] [0.461926 0.749045 1.0 0.07 sub ] [0.466995 0.743762 1.0 0.08 sub ] [0.47033 0.740287 1.0 0.09 sub ] [0.475552 0.734846 1.0 0.10 sub ] [0.478887 0.73137 1.0 0.11 sub ] [0.484061 0.725979 1.0 0.12 sub ] [0.487396 0.722503 1.0 0.125 sub ] [0.492589 0.717092 1.0 0.13 sub ] [0.495924 0.713617 1.0 0.125 sub ] [0.501041 0.708285 1.0 0.12 sub ] [0.504376 0.704809 1.0 0.11 sub ] [0.509511 0.699457 1.0 0.10 sub ] [0.512846 0.695982 1.0 0.09 sub] [0.518001 0.69061 1.0 0.08 sub ] [0.521336 0.687135 1.0 0.07 sub ] [0.526606 0.681644 1.0 0.06 sub ] [0.529941 0.678169 1.0 0.05 sub ] [0.534591 0.673323 1.0 0.04 sub ] [0.537926 0.669848 1.0 0.02 sub ] [0.542252 0.66534 1.0 0.01 sub ] [0.545587 0.661865 1.0 0.00 sub ] [0.549522 0.657764 1.0 0.00 sub ] [0.552857 0.654289 1.0] [0.556401 0.650595 1.0] [0.559736 0.64712 1.0] [0.562986 0.643734 1.0] [0.566321 0.640259 1.0] [0.56916 0.6373 1.0] [0.572495 0.633824 1.0] [0.574839 0.631382 1.0] [0.578174 0.627906 1.0] [0.580604 0.625374 1.0] [0.583939 0.621899 1.0] [0.586359 0.619377 1.0] [0.589694 0.615902 1.0] [0.592153 0.61334 1.0] [0.595488 0.609865 1.0] [0.597936 0.607313 1.0] [0.601271 0.603838 1.0] [0.603711 0.601296 1.0] [0.607046 0.59782 1.0] [0.609495 0.595269 1.0] [0.61283 0.591793 1.0] [0.615278 0.589242 1.0] [0.618613 0.585766 1.0] [0.621062 0.583214 1.0] [0.624397 0.579739 1.0] [0.626846 0.577187 1.0] [0.630181 0.573712 1.0] [0.632582 0.57121 1.0] [0.635917 0.567735 1.0] [0.638319 0.565232 1.0] [0.641654 0.561757 1.0] [0.644055 0.559255 1.0] [0.64739 0.55578 1.0] [0.649791 0.553277 1.0] [0.653126 0.549802 1.0] [0.655527 0.5473 1.0] [0.658862 0.543825 1.0] [0.661263 0.541322 1.0] [0.664598 0.537847 1.0] [0.667 0.535345 1.0] ] store /data [ [0.60 0.60 0.48 0.24 0.60 0.60] [0.60 0.60 0.48 0.24 0.60 0.60] [0.00 0.00 0.36 0.12 0.48 0.48] [0.24 0.24 0.48 0.60 0.12 0.12] [0.12 0.12 0.24 0.48 0.36 0.36] [0.12 0.12 0.24 0.48 0.36 0.36] ] store %% hundred step bilineal /hundredsq { 1 1 3 {/xbox exch store 1 1 3 {/ybox exch store 0 0.03 1 {/xx exch store 0 0.03 1 {/yy exch store data ybox get xbox get % lower left 1 xx sub 1 yy sub mul mul data ybox get xbox 1 add get % lower right 1 yy sub xx mul mul data ybox 1 add get xbox get % upper left 1 xx sub yy mul mul data ybox 1 add get xbox 1 add get % upper right xx mul yy mul add add add 200 mul .667 div floor cvi nicerainbowdatapatchedx exch get aload pop sethsbcolor xbox xx add 10 mul ybox yy add 10 mul mt .3 pu .3 pr .3 pd closepath fill }for }for } for } for } store hundredsq black 40 40 mt dot 40 10 mt dot 40 20 mt dot 40 30 mt dot 10 40 mt dot 10 10 mt dot 10 20 mt dot 10 30 mt dot 20 40 mt dot 20 10 mt dot 20 20 mt dot 20 30 mt dot 30 40 mt dot 30 10 mt dot 30 20 mt dot 30 30 mt dot snap3 restore } store % end figure 3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % figure4 for gg83 /figure4 { save /snap3 exch store -5.5 -19.3 translate % position in box 0.8 dup scale /nicerainbowdatapatchedx [ [0.0 0.71 1.0] [0.002668 0.712655 1.0] [0.006003 0.715973 1.0] [0.00867101 0.718628 1.0] [0.012006 0.721946 1.0] [0.015341 0.725265 1.0] [0.018009 0.727919 1.0] [0.021344 0.731238 1.0] [0.024012 0.733893 1.0] [0.027347 0.737211 1.0] [0.030015 0.739866 1.0] % color 10 [0.03335 0.743184 1.0] [0.036018 0.745839 1.0] [0.039353 0.749157 1.0] [0.042021 0.751812 1.0] [0.045356 0.75513 1.0] [0.048024 0.757785 1.0] [0.050692 0.76044 1.0] [0.054027 0.763758 1.0] [0.056695 0.766413 1.0] % color 20 [0.06003 0.769731 1.0] [0.062698 0.772386 1.0] [0.066033 0.775705 1.0] [0.068701 0.778359 1.0] [0.072036 0.781678 1.0] [0.074704 0.784332 1.0] [0.078039 0.787651 1.0] [0.080707 0.790305 1.0] [0.084042 0.793624 1.0] [0.08671 0.796279 1.0] [0.090045 0.799597 1.0] [0.09338 0.802915 1.0] [0.096048 0.80557 1.0] [0.099383 0.808889 1.0] [0.102051 0.811543 1.0] [0.105386 0.814862 1.0] [0.107387 0.816853 1.0] [0.110722 0.820171 1.0] [0.112056 0.821498 1.0] [0.115391 0.824817 1.0] [0.116058 0.825481 1.0] [0.119393 0.828799 1.0] [0.119393 0.828799 1.0] [0.122728 0.832117 1.0] [0.122061 0.831454 1.0] [0.125396 0.834772 1.0] [0.124062 0.833445 1.0] [0.127397 0.836763 1.0] [0.125396 0.834772 1.0] [0.128731 0.83809 1.0] [0.12673 0.836099 1.0] [0.130065 0.839418 1.0] [0.128064 0.837427 1.0] [0.131399 0.840745 1.0] [0.129398 0.838754 1.0] [0.132733 0.842073 1.0] [0.131113 0.840461 1.0] [0.134448 0.843779 1.0] [0.133209 0.842547 1.0] [0.136544 0.845865 1.0] [0.135687 0.845012 1.0] [0.139022 0.84833 1.0] [0.138545 0.847856 1.0] [0.14188 0.851174 1.0] [0.141785 0.85108 1.0] [0.14512 0.854398 1.0] [0.145406 0.854682 1.0] [0.148741 0.858001 1.0] [0.149408 0.858665 1.0] [0.152743 0.861983 1.0] [0.15341 0.862647 1.0] [0.156745 0.865965 1.0] [0.157412 0.866629 1.0] [0.160747 0.869947 1.0] [0.161414 0.870611 1.0] [0.164749 0.873929 1.0] [0.165416 0.874593 1.0] [0.168751 0.877911 1.0] [0.169418 0.878575 1.0] [0.172753 0.881893 1.0] [0.17342 0.882557 1.0] [0.176755 0.885875 1.0] [0.177422 0.886539 1.0] [0.180757 0.889858 1.0] [0.181424 0.890521 1.0] [0.184759 0.89384 1.0] [0.185426 0.894503 1.0] [0.188761 0.897822 1.0] [0.189428 0.898485 1.0] [0.192763 0.901804 1.0] [0.193239 0.902278 1.0] [0.196574 0.905596 1.0] [0.197241 0.90626 1.0] [0.200576 0.909578 1.0] [0.201243 0.910242 1.0] [0.204578 0.91356 1.0] [0.206579 0.915551 1.0] [0.209914 0.91887 1.0] [0.214678 0.92361 1.0] [0.218013 0.926929 1.0] [0.225541 0.995372 1.0] [0.228876 0.991897 1.0] [0.238691 0.98167 1.0] [0.242026 0.978194 1.0] [0.254317 0.965385 1.0] [0.257652 1.0 1.0] [0.271183 1.0 1.0] [0.274518 1.0 1.0] [0.289478 0.928746 1.0] [0.292813 0.925271 1.0] [0.307868 0.909582 1.0] [0.311203 0.906107 1.0] [0.324924 0.891809 1.0] [0.328259 0.888334 1.0] [0.340551 0.875525 1.0] [0.343886 0.872049 1.0] [0.35452 0.860968 1.0] [0.357855 0.857493 1.0] [0.366831 0.84814 1.0] [0.370166 0.844664 1.0] [0.378341 0.836145 1.0] [0.381676 0.83267 1.0] [0.389051 0.824984 1.0] [0.392386 0.821509 1.0] [0.398961 0.814658 1.0] [0.402296 0.811182 1.0] [0.40807 0.805165 1.0] [0.411405 0.80169 1.0] [0.416474 0.796408 1.0] [0.419809 0.792932 1.0] [0.424879 0.78765 1.0] [0.428214 0.784175 1.0] [0.433283 0.778892 1.0] [0.436618 0.775417 1.0 0.01 sub ] [0.441782 0.770035 1.0 0.02 sub ] [0.445117 0.76656 1.0 0.03 sub ] [0.450187 0.761278 1.0 0.04 sub ] [0.453522 0.757802 1.0 0.05 sub ] [0.458591 0.75252 1.0 0.06 sub ] [0.461926 0.749045 1.0 0.07 sub ] [0.466995 0.743762 1.0 0.08 sub ] [0.47033 0.740287 1.0 0.09 sub ] [0.475552 0.734846 1.0 0.10 sub ] [0.478887 0.73137 1.0 0.11 sub ] [0.484061 0.725979 1.0 0.12 sub ] [0.487396 0.722503 1.0 0.125 sub ] [0.492589 0.717092 1.0 0.13 sub ] [0.495924 0.713617 1.0 0.125 sub ] [0.501041 0.708285 1.0 0.12 sub ] [0.504376 0.704809 1.0 0.11 sub ] [0.509511 0.699457 1.0 0.10 sub ] [0.512846 0.695982 1.0 0.09 sub] [0.518001 0.69061 1.0 0.08 sub ] [0.521336 0.687135 1.0 0.07 sub ] [0.526606 0.681644 1.0 0.06 sub ] [0.529941 0.678169 1.0 0.05 sub ] [0.534591 0.673323 1.0 0.04 sub ] [0.537926 0.669848 1.0 0.02 sub ] [0.542252 0.66534 1.0 0.01 sub ] [0.545587 0.661865 1.0 0.00 sub ] [0.549522 0.657764 1.0 0.00 sub ] [0.552857 0.654289 1.0] [0.556401 0.650595 1.0] [0.559736 0.64712 1.0] [0.562986 0.643734 1.0] [0.566321 0.640259 1.0] [0.56916 0.6373 1.0] [0.572495 0.633824 1.0] [0.574839 0.631382 1.0] [0.578174 0.627906 1.0] [0.580604 0.625374 1.0] [0.583939 0.621899 1.0] [0.586359 0.619377 1.0] [0.589694 0.615902 1.0] [0.592153 0.61334 1.0] [0.595488 0.609865 1.0] [0.597936 0.607313 1.0] [0.601271 0.603838 1.0] [0.603711 0.601296 1.0] [0.607046 0.59782 1.0] [0.609495 0.595269 1.0] [0.61283 0.591793 1.0] [0.615278 0.589242 1.0] [0.618613 0.585766 1.0] [0.621062 0.583214 1.0] [0.624397 0.579739 1.0] [0.626846 0.577187 1.0] [0.630181 0.573712 1.0] [0.632582 0.57121 1.0] [0.635917 0.567735 1.0] [0.638319 0.565232 1.0] [0.641654 0.561757 1.0] [0.644055 0.559255 1.0] [0.64739 0.55578 1.0] [0.649791 0.553277 1.0] [0.653126 0.549802 1.0] [0.655527 0.5473 1.0] [0.658862 0.543825 1.0] [0.661263 0.541322 1.0] [0.664598 0.537847 1.0] [0.667 0.535345 1.0] ] store /datax [ [0.60 0.60 0.48 0.24 0.60 0.60] [0.60 0.60 0.48 0.24 0.60 0.60] [0.00 0.00 0.36 0.12 0.48 0.48] [0.24 0.24 0.48 0.60 0.12 0.12] [0.12 0.12 0.24 0.48 0.36 0.36] [0.12 0.12 0.24 0.48 0.36 0.36] ] store % data grabbing routines /grabdata { % preget gets are probably faster /w0 datax yi get xi get store % these evaluate data /w1 datax yi get xi 1 add get store /w2 datax yi 1 add get xi get store /w3 datax yi 1 add get xi 1 add get store /x0 datax yi get xi 1 add get datax yi get xi 1 sub get sub 2 div store /x1 datax yi get xi 2 add get datax yi get xi get sub 2 div store /x2 datax yi 1 add get xi 1 add get datax yi get xi 1 add get sub 2 div store /x3 datax yi 2 add get xi get datax yi 1 add get xi get sub 2 div store /y0 datax yi 1 add get xi get datax yi 1 sub get xi get sub 2 div store /y1 datax yi 1 add get xi 1 add get datax yi 1 sub get xi 1 add get sub 2 div store /y2 datax yi 2 add get xi get datax yi get xi get sub 2 div store /y3 datax yi 2 add get xi 1 add get datax yi get xi 1 add get sub 2 div store /z0 x0 y0 mul store % this may be wrong. /z1 x1 y1 mul store /z2 x2 y2 mul store /z3 x3 y3 mul store false {/z0 0 store % temp defeat /z1 0 store /z2 0 store /z3 0 store } if } bind store % try fewer gets... /grabdata { % preget gets are probably faster /w0 datax yi get xi get store % these evaluate data /w1 datax yi get xi 1 add get store /w2 datax yi 1 add get xi get store /w3 datax yi 1 add get xi 1 add get store /x0 % datax yi get xi 1 add get w1 datax yi get xi 1 sub get sub 2 div store /x1 datax yi get xi 2 add get % datax yi get xi get w0 sub 2 div store /x2 % datax yi 1 add get xi 1 add get w3 datax yi 1 add get xi 1 sub get sub 2 div store /x3 datax yi 1 add get xi 2 add get % datax yi 1 add get xi get w2 sub 2 div store /y0 % datax yi 1 add get xi get w2 datax yi 1 sub get xi get sub 2 div store /y1 % datax yi 1 add get xi 1 add get w3 datax yi 1 sub get xi 1 add get sub 2 div store /y2 datax yi 2 add get xi get % datax yi get xi get w0 sub 2 div store /y3 datax yi 2 add get xi 1 add get % datax yi get xi 1 add get w1 sub 2 div store /z0 x0 y0 mul store % this may be wrong. /z1 x1 y1 mul store /z2 x2 y2 mul store /z3 x3 y3 mul store false {/z0 0 store % temp defeat /z1 0 store /z2 0 store /z3 0 store } if } bind store % coefficient def routines /findacoeffs { /a00 w0 store /a01 y0 store /a02 w0 -3 mul w2 3 mul add y0 -2 mul add y2 sub store /a03 w0 2 mul w2 -2 mul add y0 add y2 add store /a10 x0 store /a11 z0 store /a12 x0 -3 mul x2 3 mul add z0 -2 mul add z2 sub store /a13 x0 2 mul x2 -2 mul add z0 add z2 add store /a20 w0 -3 mul w1 3 mul add x0 -2 mul add x1 sub store /a21 y0 -3 mul y1 3 mul add z0 -2 mul add z1 sub store /a22 w0 9 mul w1 -9 mul add w2 -9 mul add w3 9 mul add x0 6 mul add x1 3 mul add x2 -6 mul add x3 -3 mul add y0 6 mul add y1 -6 mul add y2 3 mul add y3 -3 mul add z0 4 mul add z1 2 mul add z2 2 mul add z3 add store /a23 w0 -6 mul w1 6 mul add w2 6 mul add w3 -6 mul add x0 -4 mul add x1 -2 mul add x2 4 mul add x3 2 mul add y0 -3 mul add y1 3 mul add y2 -3 mul add y3 3 mul add z0 -2 mul add z1 neg add z2 -2 mul add z3 neg add store /a30 w0 2 mul w1 -2 mul add x0 add x1 add store /a31 y0 2 mul y1 -2 mul add z0 add z1 add store /a32 w0 -6 mul w1 6 mul add w2 6 mul add w3 -6 mul add x0 -3 mul add x1 -3 mul add x2 3 mul add x3 3 mul add y0 -4 mul add y1 4 mul add y2 -2 mul add y3 2 mul add z0 -2 mul add z1 -2 mul add z2 neg add z3 neg add store /a33 w0 4 mul w1 -4 mul add w2 -4 mul add w3 4 mul add x0 2 mul add x1 2 mul add x2 -2 mul add x3 -2 mul add y0 2 mul add y1 -2 mul add y2 2 mul add y3 -2 mul add z0 add z1 add z2 add z3 add store } bind store % actual bicubic calc /bicubiccalc { % creates a surface from sixteen cubic equations a00 a01 yr mul add a02 yr 2 exp mul add a03 yr 3 exp mul add a10 xr mul add a11 xr mul yr mul add a12 xr mul yr 2 exp mul add a13 xr mul yr 3 exp mul add a20 xr 2 exp mul add a21 xr 2 exp mul yr mul add a22 xr 2 exp mul yr 2 exp mul add a23 xr 2 exp mul yr 3 exp mul add a30 xr 3 exp mul add a31 xr 3 exp mul yr mul add a32 xr 3 exp mul yr 2 exp mul add a33 xr 3 exp mul yr 3 exp mul add } bind store % try to reduce exps? /bicubiccalc { % creates a surface from sixteen cubic equations /xx2 xr 2 exp store /xx3 xr 3 exp store /yy2 yr 2 exp store /yy3 yr 3 exp store { /xx2 xr dup mul store % avoid exp? slight penalty /xx3 xx2 xr mul store /yy2 yr dup mul store /yy3 yy2 yr mul store } pop a00 a01 yr mul add a02 yy2 mul add a03 yy3 mul add a10 xr mul add a11 xr mul yr mul add a12 xr mul yy2 mul add a13 xr mul yy3 mul add a20 xx2 mul add a21 xx2 mul yr mul add a22 xx2 mul yy2 mul add a23 xx2 mul yy3 mul add a30 xx3 mul add a31 xx3 mul yr mul add a32 xx3 mul yy2 mul add a33 xx3 mul yy3 mul add } bind store % possibly can create an a00 through a33 array and forall , eliminating % sixteen defs and sixteen variables. Also combines two procs % better yet, combine procs directly 30 on stack becomes seed for asfdasdf add % main controller code % enter dobicubic with position inside four dots as xx yy. Returns interpolated value /dobicubic { dup floor cvi dup /yi exch store sub /yr exch store % integer and residue dup floor cvi dup /xi exch store sub /xr exch store grabdata findacoeffs bicubiccalc } bind store % /////////// % there is NO WAY IN HELL this can be done sanely in postscript! % but timing returns TOO GOOD TO BE TRUE fraction of a millisecond! % WrONG!!! We are just barely doabe. % problems remain. Especially version 8 run??? % [ [0.60 0.60 0.48 0.24 0.60 0.60] % [0.60 0.60 0.48 0.24 0.60 0.60] % [0.00 0.00 0.36 0.12 0.48 0.48] % [0.24 0.24 0.48 0.60 0.12 0.12] % [0.12 0.12 0.24 0.48 0.36 0.36] % [0.12 0.12 0.24 0.48 0.36 0.36] ] %% 2,2 data is 0.48 3,3 data is 0.12 1 1 3 {/xbox exch store 1 1 3 {/ybox exch store 0 0.02 pop 0.02 0.99 {/xxx exch store 0 0.02 pop 0.02 0.99 {/yyy exch store xbox xxx add ybox yyy add dobicubic 200 mul 0.67 div 0.96 mul cvi % temp deglitcher dup 0 lt {pop 0} if % got a minus one? dup 200 gt {pop 200} if nicerainbowdatapatchedx exch get aload pop sethsbcolor xbox xxx add 10 mul ybox yyy add 10 mul mt 0.2 pop 0.2 pu 0.2 pop 0.2 pr 0.2 pop 0.2 pd closepath fill } for } for } for } for black 40 40 mt dot 40 10 mt dot 40 20 mt dot 40 30 mt dot 10 40 mt dot 10 10 mt dot 10 20 mt dot 10 30 mt dot 20 40 mt dot 20 10 mt dot 20 20 mt dot 20 30 mt dot 30 40 mt dot 30 10 mt dot 30 20 mt dot 30 30 mt dot snap3 restore } store % end figure 3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% end current figures %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Specific file info here /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 /burpon {mark /burple cvx 0.33 /setgray cvx ] cvx % additional internal gonzo printlist exch 3 index exch put exch 1 add exch} def /burpoff {mark /aqua cvx 0 /setgray cvx ] cvx printlist exch 3 index exch put exch 1 add exch} def /darkenheader {save /headsnap exch store xpos 1 sub ypos 0.2 add translate 0.3 1 1 setrgbcolor 0 0 mt 3.2 pd burpwide pr 3.2 pu closepath fill headsnap restore} store % sssssssssssssssssssss % start marker /tabs [14] store 20 48.3 0.7 add % 1 sub (A |jReview |j of|j Some |jImage)cc 20 46.3 0.7 add % 1 sub (Pixel |jInterpolation |jAlgorithms) cc black font2 textleft 43 0.3 add % this one only need |h below (|h|/aqua |/staytint1 |3Don Lancaster Synergetics, Box 809, Thatcher, AZ 85552 copyright c2007 as |/surl |6GuruGram|1|/gurgrm01 |/tinton1 |6#32 |/surl http://www.tinaja.com|/tinaja |/surl don@tinaja.com|/maildon (928) 428-4073 |/aqua |/black |a|0I|b|1t often may be necessary to resample a |/su bitmap|1|/expbmp pixel image. Perhaps because it is to be resized, rotated, or have its perspective corrected, or get intentionally |/su distorted|1|/nonlingr.pdf , or have its image shape rectified. It turns out there are several newer approaches to this problem that differ markedly in image quality, in processing speed, complexity, language programmability, and ease of understanding. |h What I thought I would do here is review some pixel interpolation methods that include |/to Nearest Neighbor|/tx , |/to Bilineal Interpolation|/tx , |/to Bilineal With Lookup|/tx , a |/to 3x3 |/to Compromise|/tx , and |/to Bicubic Interpolation|1|/tx . I was unable to find any derivation of Bicubic Interpolation that I felt was reasonably complete and understandable, so we will expand upon it in detail here. |h |c The |jInterpolation |jProblem |d Typically, you will have a sampled data system representing your image. With a two dimensional array of samples usually linearly spaced in the |/to x|/tx (horizontal) and |/to y|/tx (vertical) directions. For one reason or another, you will require a group of new sample points intermediate to your input pixels. Typically, one new pixel will have four |/to nearest neighbors|/tx on a rectangular grid\274 |/autofig1 ) cl startnewpage (It is often simplest to |/to assume a unit square between the four nearest pixels|/tx . Our new and sought after pixel will then be some |/to x fraction|/tx and |/to y fraction|/tx into this unit square. Your interpolation problem then consists of finding suitable values for these fractions. |h Your sought after new pixel position should be the result of some pixel|j-|jby|j-|jpixel calculation seeking to change the size or distortion of the image. Both the new |/to x|/tx and |/to y|/tx results will have an |/to integer|/tx portion that decides |/to which|/tx initial group of four pixels to use. Plus a |/to residue|/tx or |/to fractional remainder|/tx portion that positions you |/to within|/tx the selected four sample square. |h Your task is to then find a credible intensity value for that new location. |h Typically, you will have to repeat your interpolation |/to at least three times|/tx , once for each of the red, green, and blue pixel bitmap planes. Thus, algorithm speed can easily become a key limiting issue. Especially on megapixel images. |j A crucial rule\274 |6|/shiftin |/aqua |/burplebox3.5 |/staytint1 |h NO NEW DATA will be added by ANY interpolation scheme! |h The best you can do is minimize interpolation artifacts. |h |1|/shiftout |/aqua |/black |h Before sampling, your |/to image function can be assumed to be some continuous |/to surface|/tx . To make the surface smooth, |/to we do require a continuous function and |/to continuous derivatives|/tx at each sample point. The surface can be assumed to be bandwidth limited, and the existing samples can be assumed to be dense enough. |h |c Nearest |jNeighbor |d With the Nearest Neighbor scheme, you just |/to grab the nearest pixel and use it|/tx . One simple way to do this is to round your |/to x|/tx value and add it to a rounded and doubled |/tx y|/tx value. This will give you four integers |/to 0|/tx , |/to 1|/tx , |/to 2|/tx , and |/to 3|/tx that can use |/to table |/to lookup|/tx or |/to case|/tx commands to read one of the four corner pixels. |h We might start with this sample data set array and use it to compare the different interpolation methods\274 |6|/shiftin |/aqua |/burplebox7 |/staytint1 |h [ [0.60 0.60 0.48 0.24 0.60 0.60] [0.60 0.60 0.48 0.24 0.60 0.60] [0.00 0.00 0.36 0.12 0.48 0.48] [0.24 0.24 0.48 0.60 0.12 0.12] [0.12 0.12 0.24 0.48 0.36 0.36] [0.12 0.12 0.24 0.48 0.36 0.36] ] |h |1|/shiftout |/aqua |/black |h ) cl startnewpage (Although this is a |/to 6x6|/tx data grid, we will only concern ourselves with the middle |/to 4x4|/tx array representing |/to 3 x 3 = 9|/tx unit squares. The reasons for this will become apparent when we get to the Bicubic Interpolation method. |h Here is some |/su PostScript|1|/post01 code\274 |6|/shiftin |/burple |/burplebox8 |/staytint1 |h dup floor cvi dup /yi exch store sub /yr exch store dup floor cvi dup /xi exch store sub /xr exch store |h xr round yr round 2 mul add cvi |h [ {data yi get xi get} {data yi get xi 1 add get} {data yi 1 add get xi get}{data yi 1 add get xi 1 add get} ] exch get exec |h |1|/shiftout |/aqua |/black |h Our first lines convert the input position into box and position|j-|jin|j-|jbox values. The middle line converts the position|j-|jin|j-|jbox to an integer |/to 0|/tx to |/to 3|/tx . The final lines select the lower left, lower right, upper left, or upper right data point value. Here is what one of your bitmap planes will look like in false color\274 |/autofig2 |h As you can see, your results will mostly be in error and the artifacts may get downright ugly. Please note again that this is a |/to false color|/tx plot of a |/to single|/tx bitmap plane. In this case |/to red = 0|/tx on up through |/to blue = 0.6|/tx ) cl startnewpage (Nearest Neighbor is by far the fastest and by far the ugliest interpolation scheme. It can introduce major artifacts into your modified bitmap. As a relative speed indicator, on one unoptimized and older PostScript implementation, the time per pixel is just over |/to 10 microseconds|/tx . We can use this figure later for a relative baseline comparison of the other interpolation speeds. |h |c Bilineal |jInterpolation |d With |/to Bilineal Interpolation|/tx , you proportion your result to the |/to relative distance|/tx between your four original points. You could first do an |/to x|/tx interpolation and then a |/to y|/tx . Or vice versa. Curiously, either way should lead you to this approximate but highly useful final formula\274 |6|/shiftin |/aqua |/burplebox3 |/staytint1 |h f(x,y) = f(0,0)(1-x)(1-y) + f(1,0)(x)(1-y) + f(0,1)(1-x)(y) + f(1,1)(x)(y) |h |1|/shiftout |/aqua |/black |h This measures the distance to each of the old corner points and provides a weighted average. The results are far better looking than nearest neighbor\274 |/autofig3 |h We see that there a very few artifacts remaining, but that |/to bilineal interpolation |/to should be useful for all but the most critical of applications|/tx . ) cl startnewpage (Here is some bilineal interpolation code done in |/su PostScript|1|/post01 \274 |6|/shiftin |/burple |/burplebox7.5 |/staytint1 |h dup floor cvi dup /yi exch store sub /yr exch store dup floor cvi dup /xi exch store sub /xr exch store |h data yi get xi get 1 xr sub 1 yr sub mul mul data yi get xi 1 add get xr 1 yr sub mul mul add data yi 1 add get xi get 1 xr sub yr mul mul add data yi 1 add get xi 1 add get xr mul yr mul add |h |1|/shiftout |/aqua |/black |h We once again split our input position into a pair of integer positions and two fractional residue values. Each original data point is then converted into a weighted average using the calculations shown. |h As a relative speed indicator, again on one unoptimized and older PostScript implementation, the execution time per pixel is just over |/to 14 microseconds|/tx . Thus, there is only a forty percent penalty for vastly superior results. The surprisingly low speed difference is apparently caused by |/su PostScript|1|/post01 being quite fast and adept at on-stack adds and multiplies, but somewhat slower on its proc lookups and executions. |h |c Bilineal |j via|j Table |jLookup |d The speed of calculating any pixel interpolation is highly dependent both on the system speed and the language used. In general, interpreted languages will be slowest and compiled languages faster. Hand crafted machine language will be faster still. Fastest of all, of course, would be dedicated hardware in the form of a FPGA or whatever. |h It is often faster to look up a value in a table than to calculate it. Which suggests that some implementations of Bilineal Interpolation may be significantly improved by replacing repeated multiply and adds with a quantized table lookup of some predetermined constants. |h However, this is apparently |/to not|/tx the case with |/su PostScript|1|/post01 and table lookup interpolation may not be beneficial enough with your language choice. Your results may vary. |h |c The |j3x3 |jCompromise |d If extreme speeds are essential, the limiting minimum case of a |/to 3x3|/tx bilineal table lookup might be useful. The results would end up pretty bad, but should still be significantly better than nearest neighbor. Only one lookup is needed |/to 4/9ths|/tx of the time, a two lookup average |/to 4/9ths|/tx of a time, and the full four lookup average a mere |/to 1/9th|/tx of the time. ) cl startnewpage (|c Bicubic |jInterpolation |d This is the Godzilla of pixel interpolation algorithms. It gives absolutely superb results with negligible artifacts. But is very hard to understand and requires an extreme number of complex calculations. |h Bicubic Interpolation attempts to reconstruct the |/to exact surface|/tx between your four initial pixels. It does this by extracting |/to sixteen|/tx pieces of information. Based on the |/to values|/tx of the samples, the |/to x slopes|/tx of those values, the |/to y slopes|/tx of those values, and the |/to xy slope cross products|/tx of those values. |h It turns out that any point on a two dimensional unity normalized surface can be represented by a set of |/to sixteen|/tx cubic polynomial equations. |h The key bicubic equations are\274 |6|/shiftin |/aqua |/burplebox10.5 |/staytint1 |h p(x,y) = a00*x^0^y^0 + a01*x^0^y^1 + a02*x^0^y^2 + a03*x^0^y^3 + |h a10*x^1^y^0 + a11*x^1^y^1 + a12*x^1^y^2 + a13*x^1^y^3 + |h a20*x^2^y^0 + a21*x^2^y^1 + a22*x^3^y^2 + a23*x^2^y^3 + |h a30*x^3^y^0 + a31*x^3^y^1 + a32*x^3^y^2 + a33*x^3^y^3 |h |1|/shiftout |/aqua |/black |h This expression can be simplified somewhat by noting that |/to x^0 = y^0 = 1|/tx and |/to x^1 |/to = x|/tx and |/to y^1= y|/tx . Our non-trivial problem is to find the sixteen constant coefficients |/to a00|/tx through |/to a33|/tx for an initial four unit square data points and their nearest eight neighbors. |h We can start by substituting some variables to simplify the notation. So, let |/to w0 = |/to f(0,0)|/tx or the pixel value at our lower left point. Let |/to w1 = (f0,1)|/tx or the pixel value at our lower right point. Let |/to w2 = f(0,0)|/tx or the pixel value at our upper left point. And let |/to w3 = (f1,1)|/tx or the pixel value at our upper right point. |h Similarly, we will let |/to x0|/tx through |/to x3|/tx represent the |/to xslope|/tx (or partial derivative with respect to x) at each point. Normally, we do not know the exact x slope value. So, |/to we can approximate it by taking the average of the changes between your |/to previous and next data point|/tx . |h We can also let |/to y0|/tx through |/to y3|/tx represent the |/to yslope|/tx (or partial derivative with respect to y) at each point. Finally, to handle the behavior near the middle of our four data point set, we can let |/to z0|/tx through |/to z3|/tx represent the |/to slope product|/tx or (partial derivative cross product) at each point. |h ) cl startnewpage (|1We actually end up using |/to 16 data points|/tx for calculation, with the "extras" being needed to find our x and y slopes. This is not a problem |/to interior|/tx to your pixel map. But you will have to do something at the edges to either ignore or fake the slopes. Which is why our sample data has "extra" values around its outside edge. |h The results can be quite impressive\274 |/autofig4 We see an artifact free surface that we can pick any point off of. The surface is continuous and has continuous slopes at every point. |h Bicubic calculations are often done using |/to matrix techniques|/tx . Since these can be hard to understand, we will instead use ordinary algebra here. Helped along with a partial differential equation or two. All you will need to know about partial differentials here is that (A) A partial differential is the |/to slope|/tx in |/to one|/tx variable direction, and (B) The differential (|jor its limit derivative|j) of |/to f(x) = b0 + b1x + |/to b2x^2 + b3x^3|/tx is its |/to slope|/tx of |/to b1 + 2b2x + 3b3x^2|/tx . |h Finding a new bicubic interpolated pixel value inside a unit square starts off by finding |/to w0|/tx through |/to z3|/tx . These are already known from our available pixel data, or can be easily calculated from it. You then use these |/to w0|/tx through |/to z3|/tx to evaluate expressions for the various |/to ax|/tx coefficients. |h Sadly, we now have |/to w0|/tx through |/to z3|/tx as a function of |/to a00|/tx through |/to a33|/tx . We instead need |/to a00|/tx through |/to a33|/tx as a function of |/to w0|/tx through |/to z3|/tx . So, we have to solve 16 linear equations in 16 unknowns to isolate the |/to axx|/tx values. |h ) cl startnewpage (|1Finally, from our newly calculated |/to a00|/tx through |/to a33|/tx values, we can find the value of our new pixel using our bicubic formula shown above. |h Here is how |/to w0|/tx through |/to z3|/tx are related to the |/to a00|/tx through |/to a33|/tx coefficients\274 |6|/shiftin |/aqua |/burplebox27.5 |/staytint1 |h w0 = f(0,0) = a00 w1 = f(1,0) = a00 + a10 + a20 + a30 w2 = f(0,1) = a00 + a01 + a02 + a03 w3 = f(1,1) = a00 + a10 + a20 + a30 + a01 + a11 + a21 + a31 + a02 + a12 + a22 + a32 + a03 + a13 + a23 + a33 |h x0 = fx(0,0) = a10 x1 = fx(1,0) = a10 + 2a20 + 3a30 x2 = fx(0,1) = a10 + a11 + a12 + a13 x3 = fx(1,1) = 1*(a10 + a11 + a12 + a13) + 2*(a20 + a21 + a22 + a23) + 3*(a30 + a31 + a32 + a33) |h y0 = fy(0,0) = a01 y1 = fy(1,0) = a01 + a11 + a21 + a31 y2 = fy(0,1) = a01 +2Aa02 + 3a03 y3 = fy(1,1) = 1*(a01+a11+a21+a31) + 2*(a02+a12+a22+a32) + 3*(a03+a13+a23+a33) |h z0 = fxy(0,0) = a11 z1 = fxy(1,0) = a11 + 2a21 + 3a31 z2 = fxy(0,1) = a11 + 2a12 + 3a13 z3 = fxy(1,1) = 1*a11 + 2*a12 + 3*a13 + 2*a21 + 4*a22 + 6*a23 + 3*a31 + 6*a32 + 9*a33 |h |1|/shiftout |/aqua |/black |h In general, these equations are found by substituting |/to 1|/tx and |/to 0|/tx values for |/to x|/tx and |/to y|/tx and their slope derivatives. Let's look at four typical examples\274 |h|/staytint1 |/to |6\267 w2: |1 Finds value at x=0, y=1. x=0 drops out all equations with powers of x=1, x=2, and x=3. Leaving a01*y + a02*y + a03*y. Which at y=1 becomes w2 = a01 + a02 + a03. |h |/to |6\267 x1: |1 Finds xslope at x=1, y=0. y=0 drops out all equations with powers of y=1, y=2, and y=3. Leaving a10*x + a20*x^2 + a30*x^3. Whose partial derivative is a10 + 2a20*x + 3a30*x^2. ) cl startnewpage (|1|/staytint1 |y |/to |6\267 y3: |1All equations are initially active. x=1 everywhere. y slopes will be 0 + a01y + ... + a02y + ... + 3a03y^2 + ... Which at y=1 will become the result shown. |h |/to |6\267 z3: |1Cross products of the slopes will be a11(1x*1y) + a12(1x*2y) + a13(1x*3y^2) + a21(2x^2*y) + a22(2x^2*2y^2) + ... Which at x=1 and y=1 becomes 1a11 + 2a12 + 3a13 + 2a21 + 4a22 + ... |h|/black |c Finding |jthe |jCoefficients |d We do now have |/to w0|/tx through |/to z3|/tx as functions of |/to a00|/tx through |/to a33|/tx . To solve for individual |/to axx|/tx values, we have to solve |/to 16|/tx linear equations in |/to 16|/tx unknowns. This can be done manually, or by inserting the values into any of several math equation programs. The results should be\274 |6|/shiftin |/aqua |/burplebox25 |/staytint1 |h a00 = w0, a01 = y0, a02 = -3w0 + 3w2 -2y0 - y2 a03 = 2w0 - 2w2 + y0 + y2 a10 = x0 a11 = z0 a12 = -3x0 + 3x2 - 2z0 - z2 a13 = 2x0 - 2x2 + z0 + z2 a20 = -3w0 + 3w1 - 2x0 - x1 a21 = -3y0 + 3y1 - 2z0 - z1 a22 = 9w0 - 9w1 - 9w2 + 9w3 + 6x0 + 3x1 + -6x2 - 3x3 + 6y0 - 6y1 + 3y2 - 3y3 + 4z0 + 2z1 + 2z2 + z3 a23 = -6w0 + 6w1 + 6w2 - 6w3 -4x0 - 2x1 + 4x2 + 2x3 -3y0 + 3y1 - 3y2 + 3y3 + -2z0 - z1 - 2z2 - z3 a30 = 2w0 - 2w1 + x0 + x1 a31 = 2y0 - 2y1 + z0 + z1 a32 = -6w0 + 6w1 + 6w2 -6 w3 -3x0 - 3x1 + 3x2 + 3x3 -4y0 + 4y1 - 2y2 + 2y3 + -2z0 - 2z1 - z2 - z3 a33 = 4w0 - 4w1 - 4w2 + 4w3 + 2x0 + 2x1 + -2x2 - 2x3 + 2y0 - 2y1 + 2y2 - 2y3 + z0 + z1 + z2 + z3 |h |1|/shiftout |/aqua |/black |h ) cl startnewpage (|1It is tedious and highly error prone to try and do this by hand. There are some obvious simplifications. Four values are available by inspection. Eight of these can be solved with pairs of equations. Leaving four equations in four unknowns. |h Ferinstance, if you want to do a manual solution, you can grab |/to a00|/tx , |/to a01|/tx , |/to a10|/tx , and |/to a11|/tx by inspection. |/to w1|/tx and |/to x1|/tx can then be simultaneously solved for |/to a20|/tx and |/to a30|/tx . Then |/to x2|/tx and |/to z2|/tx can be simultaneously solved for |/to a12|/tx and |/to a13|/tx . And |/to w2|/tx and |/to y2|/tx can be simultaneously solved for |/to a02|/tx and |/to a03|/tx . And |/to y1|/tx and |/to z1|/tx can in turn get simultaneously solved for |/to a21|/tx and |/to a31|/tx . |h |h If you save them for last, the remaining variables can end up as four equations in four unknowns. With all previous calculated values being reducible down into four constants, one for each equation. Two of these equations can then relate |/to a22|/tx and |/to a33|/tx , while another two can relate |/to a32|/tx and |/to a33|/tx . And substituted back to solve for |/to a33|/tx . The final three variables follow by simple arithmetic. |h |c A |jSummary |d An important warning: |/to Bicubic calculations might rarely end up slightly above |/to unity or slightly below zero|/tx . The rest of your code must be able to clip these values or otherwise deal with them. |h Again on one unoptimized and older |/su PostScript|1|/post01 implementation, the execution time per pixel for a bicubic interpolation was just over |/to 100 microseconds|/tx . Thus bicubic speed in this instance is |/to seven times worse|/tx than bilineal and is |/to ten times |/to worse|/tx than nearest neighbor. |h I suspect that when further optimized on a newer Distiller and a faster machine, the results will end up something like |/to three seconds per megabyte per color |/to plane|/tx for bilineal and |/to twenty seconds per megabyte per color plane|/tx for bicubic. Thus, bicubic can most certainly be used for typical |/su PostScript|1|/post01 bitmap image manipulations but will likely forever remain somewhat on the slow side. |h Your results will vary with your language and implementation choices. Again, compiled languages will usually beat out interpreted ones. Hand crafted machine code will often be much faster still, and custom hardware may even be faster. |h Reducing bilineal to somewhat coarser table lookups may or may not prove time effective or worthwhile on some implementations. |h In some cases, doubling your sample rate can significantly reduce interpolation problems. But only with |/to 4X|/tx speed and |/to 4x|/tx storage penalties that may not end up being cost effective. |h I originally thought a |/to 2X|/tx sampled |/to 3x3|/tx compromise interpolation solution would be useful for such things as |/su eBay images|1|/ebay . But it appears that a genuine bicubic interpolation can end up nearly speed competitive. |h With far better results. ) cl startnewpage (|c Some |jImprovements |d Finding "real" derivative slopes at each data point could possibly further improve bicubic. This would tend to sharpen the transitions. But would take some sort of more |/to content specific|/tx and wider area processing. |h Once any method and language is selected, second or third passes can be made to tweak and improve your code's operating speed. Some general techniques for |/su PostScript|1|/post01 speedups appear |/su here|1|/speedup2 . |h This slightly obtuse rework of our bilinear code is |/to 34|/tx percent faster\274 |6|/shiftin |/burple |/burplebox8 |/staytint1 |h dup cvi dup /yi exch store sub /yr exch store dup cvi dup /xi exch store sub /xr exch store |h data yi get dup xi get 1 xr sub mul exch xi 1 add get xr mul add 1 yr sub mul |h data yi 1 add get dup xi get 1 xr sub mul exch xi 1 add get xr mul add yr mul add |h |1|/shiftout |/aqua |/black |h |c For |jMore |jHelp |d Complete bicubic |/su PostScript|1|/post01 code detailed examples can be extracted from the |/su sourcecode|1|/pixintpl.psl for this |/su GuruGram|1|/gurgrm01 . |h Working PostScript code for bilineal and bicubic has also been extracted to |/su this|/pixintpl.psl |/su utility|1|/pixintp1.psl and |/su this demo|1|/pixintp1.pdf . |h Much of our analysis and review done here was based on the two |/su Wikipedia|1|/wikipedia entries found |/su here|1|/wikilin and |/su here|1|/wikicub . Additional insight into single dimensional cubic spline image interpolation appears |/su here|1|/basis.pdf . |h Similar tutorials and additional support materials are found on our |/su Cubic Spline|1|/cubic01 , our |/su PostScript|1|/post01 and our |/su GurGram|1|/gurgrm01 library pages. As always, |/su Custom Consulting|1|/info01 is available on a cash and carry or contract basis. As are seminars. |h For details, you can email |/su don@tinaja.com|1|/maildon . Or call |/to (928) 428-4073|/tx . ) cl startnewpage % EOF