%!PS % Some "Fattail" Arrows % ===================== % by Don Lancaster FATTAIL1.PSL % Copyright c 2010 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. % NOTE THAT ACROBAT DISTILLER NOW DEFAULTS TO LIMIT DISK ACCESS. % XP WORKAROUND IS TO RUN acrodist-F FROM THE COMMAND LINE! % 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. % This utility routine generates twelve different orientations of "fattail" arrows % given an array of eight data points. % The array is [ tipx tipy tailx taily tipfat tailfat tipdepth tipspread ] % The commands are /fatarrowns pointing down, /fatarrowne curving down and east, etc... %%%%%%% north tail, south tip %%%%%%% /fattailsn { gsave aload pop /tipspread exch store /tipdepth exch store /tailfat exch store /tipfat exch store /taily exch store /tailx exch store /tipy exch store /tipx exch store /enthu 0.28 store /deltay tipy tipdepth sub taily sub enthu mul store tipx tipy mt tipx tipspread 2 div add tipy tipdepth sub lineto tipspread 2 div tipfat 2 div sub pl tipx tipfat 2 div add tipy tipdepth sub deltay sub debug tailx tailfat 2 div add taily deltay add debug tailx tailfat 2 div add taily curveto tailfat pl tailx tailfat 2 div sub taily deltay add debug tipx tipfat 2 div sub tipy tipdepth sub deltay sub debug tipx tipfat 2 div sub tipy tipdepth sub curveto tipspread tipfat sub 2 div pl closepath fill grestore } store %%%%%%% south tail, north tip %%%%%%% /fattailns { gsave aload pop /tipspread exch store /tipdepth exch store /tailfat exch store /tipfat exch store /taily exch store /tailx exch store /tipy exch store /tipx exch store /enthu 0.28 store /deltay tipy tipdepth add taily sub enthu mul store tipx tipy mt tipx tipspread 2 div add tipy tipdepth add lineto tipspread 2 div tipfat 2 div sub pl tipx tipfat 2 div add tipy tipdepth add deltay sub debug tailx tailfat 2 div add taily deltay add debug tailx tailfat 2 div add taily curveto tailfat pl tailx tailfat 2 div sub taily deltay add debug tipx tipfat 2 div sub tipy tipdepth add deltay sub debug tipx tipfat 2 div sub tipy tipdepth add curveto tipspread tipfat sub 2 div pl closepath fill grestore } store %%%%%%% east tail, west tip %%%%%%% /fattailew { gsave aload pop /tipspread exch store /tipdepth exch store /tailfat exch store /tipfat exch store /taily exch store /tailx exch store /tipy exch store /tipx exch store /enthu 0.28 store /deltax tailx tipx tipdepth add sub enthu mul store tipx tipy mt tipx tipdepth add tipy tipspread 2 div add lineto tipspread 2 div tipfat 2 div sub pd tipx tipdepth add deltax add tipy tipfat 2 div add debug tailx deltax sub taily tailfat 2 div add debug tailx taily tailfat 2 div add curveto tailfat pd tailx deltax sub taily tailfat 2 div sub debug tipx tipdepth add deltax add tipy tipfat 2 div sub debug tipx tipdepth add tipy tipfat 2 div sub curveto tipspread tipfat sub 2 div pd closepath fill grestore } store %%%%%%% west tail, east tip %%%%%%% /fattailwe { gsave aload pop /tipspread exch store /tipdepth exch store /tailfat exch store /tipfat exch store /taily exch store /tailx exch store /tipy exch store /tipx exch store /enthu 0.28 store /deltax tipx tipdepth add tailx sub enthu mul store tipx tipy mt tipx tipdepth sub tipy tipspread 2 div add lineto tipspread 2 div tipfat 2 div sub pd tipx tipdepth sub deltax sub tipy tipfat 2 div add debug tailx deltax add taily tailfat 2 div add debug tailx taily tailfat 2 div add curveto tailfat pd tailx deltax add taily tailfat 2 div sub debug tipx tipdepth sub deltax sub tipy tipfat 2 div sub debug tipx tipdepth sub tipy tipfat 2 div sub curveto tipspread tipfat sub 2 div pd closepath fill grestore } store %%%%%%% north tail, east tip %%%%%%% /fattailne { gsave aload pop /tipspread exch store /tipdepth exch store /tailfat exch store /tipfat exch store /taily exch store /tailx exch store /tipy exch store /tipx exch store /enthu 0.28 store /deltaxn tipx tipdepth sub tailx tailfat 2 div add sub enthu mul store /deltaxs tipx tipdepth sub tailx tailfat 2 div sub sub enthu mul store /deltaye taily tipy tipfat 2 div sub sub enthu mul store /deltayw taily tipy tipfat 2 div add sub enthu mul store tipx tipy mt tipx tipdepth sub tipy tipspread 2 div add lineto tipspread 2 div tipfat 2 div sub pd tipx tipdepth sub deltaxn sub tipy tipfat 2 div add debug tailx tailfat 2 div add taily deltayw sub debug tailx tailfat 2 div add taily curveto tailfat pl tailx tailfat 2 div sub taily deltaye sub debug tipx tipdepth sub deltaxs sub tipy tipfat 2 div sub debug tipx tipdepth sub tipy tipfat 2 div sub curveto tipspread tipfat sub 2 div pd closepath fill grestore } store %%%%%%% north tail, west tip %%%%%%% /fattailnw { gsave aload pop /tipspread exch store /tipdepth exch store /tailfat exch store /tipfat exch store /taily exch store /tailx exch store /tipy exch store /tipx exch store /enthu 0.28 store /deltaxn tailx tailfat 2 div sub tipx tipdepth add sub enthu mul store /deltaxs tailx tailfat 2 div add tipx tipdepth add sub enthu mul store /deltaye taily tipy tipfat 2 div sub sub enthu mul store /deltayw taily tipy tipfat 2 div add sub enthu mul store tipx tipy mt tipx tipdepth add tipy tipspread 2 div add lineto tipspread 2 div tipfat 2 div sub pd tipx tipdepth add deltaxn add tipy tipfat 2 div add debug tailx tailfat 2 div sub taily deltayw sub debug tailx tailfat 2 div sub taily curveto tailfat pr tailx tailfat 2 div add taily deltaye sub debug tipx tipdepth add deltaxs add tipy tipfat 2 div sub debug tipx tipdepth add tipy tipfat 2 div sub curveto tipspread tipfat sub 2 div pd closepath fill grestore } store %%%%%%% south tail, west tip %%%%%%% /fattailsw { gsave aload pop /tipspread exch store /tipdepth exch store /tailfat exch store /tipfat exch store /taily exch store /tailx exch store /tipy exch store /tipx exch store /enthu 0.28 store /deltaxn tailx tailfat 2 div add tipx tipdepth add sub enthu mul store /deltaxs tailx tailfat 2 div sub tipx tipdepth add sub enthu mul store /deltaye tipy tipfat 2 div add taily sub enthu mul store /deltayw tipy tipfat 2 div sub taily sub enthu mul store tipx tipy mt tipx tipdepth add tipy tipspread 2 div add lineto tipspread 2 div tipfat 2 div sub pd tipx tipdepth add deltaxn add tipy tipfat 2 div add debug tailx tailfat 2 div add taily deltaye add debug tailx tailfat 2 div add taily curveto tailfat pl tailx tailfat 2 div sub taily deltayw add debug tipx tipdepth add deltaxs add tipy tipfat 2 div sub debug tipx tipdepth add tipy tipfat 2 div sub curveto tipspread tipfat sub 2 div pd closepath fill grestore } store %%%%%%% north tail, west tip %%%%%%% /fattailnw { gsave aload pop /tipspread exch store /tipdepth exch store /tailfat exch store /tipfat exch store /taily exch store /tailx exch store /tipy exch store /tipx exch store /enthu 0.28 store /deltaxn tailx tailfat 2 div sub tipx tipdepth add sub enthu mul store /deltaxs tailx tailfat 2 div add tipx tipdepth add sub enthu mul store /deltayw taily tipy tipfat 2 div add sub enthu mul store /deltaye taily tipy tipfat 2 div sub sub enthu mul store tipx tipy mt tipx tipdepth add tipy tipspread 2 div add lineto tipspread 2 div tipfat 2 div sub pd tipx tipdepth add deltaxn add tipy tipfat 2 div add debug tailx tailfat 2 div sub taily deltayw sub debug tailx tailfat 2 div sub taily curveto tailfat pr tailx tailfat 2 div add taily deltaye sub debug tipx tipdepth add deltaxs add tipy tipfat 2 div sub debug tipx tipdepth add tipy tipfat 2 div sub curveto tipspread tipfat sub 2 div pd closepath fill grestore } store %%%%%%% south tail, east tip %%%%%%% /fattailse { gsave aload pop /tipspread exch store /tipdepth exch store /tailfat exch store /tipfat exch store /taily exch store /tailx exch store /tipy exch store /tipx exch store /enthu 0.28 store /deltaxn tipx tipdepth sub tailx tailfat 2 div sub sub enthu mul store /deltaxs tipx tipdepth sub tailx tailfat 2 div add sub enthu mul store /deltaye tipy tipfat 2 div sub taily sub enthu mul store /deltayw tipy tipfat 2 div add taily sub enthu mul store tipx tipy mt tipx tipdepth sub tipy tipspread 2 div add lineto tipspread 2 div tipfat 2 div sub pd tipx tipdepth sub deltaxn sub tipy tipfat 2 div add debug tailx tailfat 2 div sub taily deltayw add debug tailx tailfat 2 div sub taily curveto tailfat pr tailx tailfat 2 div add taily deltaye add debug tipx tipdepth sub deltaxs sub tipy tipfat 2 div sub debug tipx tipdepth sub tipy tipfat 2 div sub curveto tipspread tipfat sub 2 div pd closepath fill grestore } store %%%%%%% west tail, north tip %%%%%%% /fattailwn { gsave aload pop /tipspread exch store /tipdepth exch store /tailfat exch store /tipfat exch store /taily exch store /tailx exch store /tipy exch store /tipx exch store /enthu 0.28 store /deltaxn tipx tipfat sub tailx sub enthu mul store /deltaxs tipx tipfat add tailx sub enthu mul store /deltaye tipy tipdepth sub taily tailfat 2 div sub sub enthu mul store /deltayw tipy tipdepth sub taily tailfat 2 div add sub enthu mul store tipx tipy mt tipx tipspread 2 div sub tipy tipdepth sub lineto tipspread 2 div tipfat 2 div sub pr tipx tipfat 2 div sub tipy tipdepth sub deltayw sub debug tailx deltaxn add taily tailfat 2 div add debug tailx taily tailfat 2 div add curveto tailfat pd tailx deltaxs add taily tailfat 2 div sub debug tipx tipfat 2 div add tipy tipdepth sub deltaye sub debug tipx tipfat 2 div add tipy tipdepth sub curveto tipspread tipfat sub 2 div pr closepath fill grestore } store %%%%%%% east tail, north tip %%%%%%% /fattailen { gsave aload pop /tipspread exch store /tipdepth exch store /tailfat exch store /tipfat exch store /taily exch store /tailx exch store /tipy exch store /tipx exch store /enthu 0.28 store /deltaxn tailx tipx tipfat add sub enthu mul store /deltaxs tipx tipfat sub tailx sub enthu mul store /deltaye tipy tipdepth sub taily tailfat 2 div add sub enthu mul store /deltayw tipy tipdepth sub taily tailfat 2 div sub sub enthu mul store tipx tipy mt tipx tipspread 2 div sub tipy tipdepth sub lineto tipspread 2 div tipfat 2 div sub pr tipx tipfat 2 div sub tipy tipdepth sub deltayw sub debug tailx deltaxs add taily tailfat 2 div sub debug tailx taily tailfat 2 div sub curveto tailfat pu tailx deltaxn sub taily tailfat 2 div add debug tipx tipfat 2 div add tipy tipdepth sub deltaye sub debug tipx tipfat 2 div add tipy tipdepth sub curveto tipspread tipfat sub 2 div pr closepath fill grestore } store %%%%%%% west tail, south tip %%%%%%% /fattailws { gsave aload pop /tipspread exch store /tipdepth exch store /tailfat exch store /tipfat exch store /taily exch store /tailx exch store /tipy exch store /tipx exch store /enthu 0.28 store /deltaxn tipx tipfat 2 div add tailx sub enthu mul store /deltaxs tipx tipfat 2 div sub tailx sub enthu mul store /deltaye taily tailfat 2 div add tipy tipdepth add sub enthu mul store /deltayw taily tailfat 2 div sub tipy tipdepth add sub enthu mul store tipx tipy mt tipx tipspread 2 div add tipy tipdepth add lineto tipspread 2 div tipfat 2 div sub pl tipx tipfat 2 div add tipy tipdepth add deltaye add debug tailx deltaxn add taily tailfat 2 div add debug tailx taily tailfat 2 div add curveto tailfat pd tailx deltaxs add taily tailfat 2 div sub debug tipx tipfat 2 div sub tipy tipdepth add deltayw add debug tipx tipfat 2 div sub tipy tipdepth add curveto tipspread tipfat sub 2 div pl closepath fill grestore } store %%%%%%% east tail, south tip %%%%%%% /fattailes { gsave aload pop /tipspread exch store /tipdepth exch store /tailfat exch store /tipfat exch store /taily exch store /tailx exch store /tipy exch store /tipx exch store /enthu 0.28 store /deltaxn tailx tipx tipfat 2 div add sub enthu mul store /deltaxs tailx tipx tipfat 2 div sub sub enthu mul store /deltaye taily tailfat 2 div sub tipy tipdepth add sub enthu mul store /deltayw taily tailfat 2 div add tipy tipdepth add sub enthu mul store tipx tipy mt tipx tipspread 2 div add tipy tipdepth add lineto tipspread 2 div tipfat 2 div sub pl tipx tipfat 2 div add tipy tipdepth add deltaye add debug tailx deltaxn sub taily tailfat 2 div sub debug tailx taily tailfat 2 div sub curveto tailfat pu tailx deltaxs sub taily tailfat 2 div add debug tipx tipfat 2 div sub tipy tipdepth add deltayw add debug tipx tipfat 2 div sub tipy tipdepth add curveto tipspread tipfat sub 2 div pl closepath fill grestore } store /debug {debugflag {gsave 2 copy black mt dot grestore} if } store /debugflag false store %%%%%%%%%%%% demos -- remove or alter before reuse %%%%%%%%%%%% 50 50 7.2 setgrid 30 22 showgrid gsave 0 0 mt 30 pr 22 pu 30 pl closepath line3 0.5 1 1 setrgbcolor stroke grestore /blu {0 0 1 setrgbcolor} store % sequence is [ tipx tipy tailx taily tipfat tailfat tipdepth tipspread ] blu [ 10 17 6 4 1 4 1 3 ] fattailsn blu [ 2 8 5 17 1 4 1 3 ] fattailns blu [ 9 2 14 10 1 5 1 3] fattailew blu [ 16 15 11 12 1 3 1 3] fattailwe blu [6 2 1.5 5 1 2 1 3 ] fattailne blu [1 19.5 15 17 1 3 1 3 ] fattailsw blu [13 2 17 6 1 3 1 3 ] fattailnw blu [22 13.5 17 7 1 4 1 3 ] fattailse blu [24 12 19 3 1 3 1 3 ] fattailwn blu [25 7 28 3 1 2 1 3 ] fattailen blu [28 10 23 14 1 2.5 1 3 ] fattailws blu [19 15 29 19 1 2 1 3 ] fattailes showpage 50 50 7.2 setgrid 10 10 showgrid gsave 0 0 mt 10 pr 10 pu 10 pl closepath line3 0.5 1 1 setrgbcolor stroke grestore -30 -8 translate % example of "tailless" extension blu [35 15 32.5 13 1 0.8 1 3 ] fattailse [ 32.5 13 35 9 0.8 3 0 0.8 ] fattailsn showpage % EOF