%!PS-Adobe-2.0 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This Postscript is Copyright (c) 2003, Peter J Billam % % c/o P J B Computing, GPO Box 669, Hobart TAS 7001, Australia % % % % Permission is granted to any individual or institution to use, copy, % % modify or redistribute this software, so long as it is not resold for % % profit, and provided this notice is retained. Neither Peter Billam % % nor P J B Computing make any representations about the suitability % % of this software for any purpose. It is provided "as is", without any % % express or implied warranty. http://www.pjb.com.au % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%EndComments %%BeginProlog % see http://www.pjb.com.au/comp/free/ for line_drawing.ps and colours.ps (/home/pjb/ps/lib/line_drawing.ps) run (/home/pjb/ps/lib/colours.ps) run %%EndProlog %%Page: 1 1 %%BeginPageSetup %%EndPageSetup /Times-BoldItalic findfont 14 scalefont setfont 0.0 setgray 160 65 moveto (See www.pjb.com.au/comp/line_drawing.html) show 172 45 moveto (and www.pjb.com.au/comp/colours.html) show 0 200 translate 12.2 12.2 scale % * at each junction of 3 colours, put a Point (eg "nosetip", "brow") % * define at least 3 Points in x,y (eg "/brow { 67 mm 200 mm } def") /lT { 12.2 35.5 } def /lt { 11.9 34.8 } def /lb { 3.3 20.6 } def /lB { 3.5 0.0 } def /rT { 45.1 35.5 } def /rt { 46.8 28.1 } def /rb { 46.0 18.4 } def /rB { 45.6 0.0 } def /cb { 27.0 0.0 } def /left 0.0 def /right 48.0 def % * at each boundary of 2 colours, put a Curve (eg "nosetip2brow") % * define the Curves (eg "/nosetip2brow { 10 20 60 1 /bridge 15 -45 } def") /lB2lb { 10.0 20 8.0 35 5.0 25 } def /lb2lt { 11.0 20 3 60 } def /lt2lT { 0.4 100 } def /rT2rt { 8.0 12 } def /rt2rb { 4 60 4 10 } def /rb2rB { 4 20 4 -50 11 10 } def /ct2lb { 19 -35 10 -80 } def /cb2ct { 2 -20 } def /cb2lb { cb2ct /ct ct2lb } def /rb2ct { 3 180 20 8 } def /lt2rt { 3 -100 3 -10 3 -80 15 -5 3 -90 5 -5 2 -110 6 -5 2 -220 1 -150 } def /bbb2bbt { 1.8 10 0.3 2400 0.4 10 } def % * define any remaining Points by interpolate2, interpolate3 and pointadd /bbb lT .34 cb .085 rT .66 interpolate3 pointdef /bbt lT .35 cb .015 rT .65 interpolate3 pointdef % * define any Colours ("/darkskin paleorange .4 brown .6 rgbmix setrgbcolor") /darkskin paleorange .4 brown .6 rgbmix rgbdef /mediumskin paleorange .6 brown .4 rgbmix rgbdef % * run all the Curves and interpolations to calculate all Point positions newpath cb moveto [ cb2lb ] lb longcurveto % * make closedpaths round all coloured areas, and fill and fuzzyfill them newpath lB moveto [ lB2lb ] lb longcurveto [ lb2lt ] lt longcurveto [ lt2lT ] lT longcurveto rT lineto [ rT2rt ] rt longcurveto [ rt2rb ] rb longcurveto [ rb2rB ] rB longcurveto closepath gsave clip % clip, fill and fuzzystroke within the skin area paleorange setrgbcolor fill newpath lB moveto [ lB2lb ] lb longcurveto [ lb2lt ] lt longcurveto [ lt2lT ] lT longcurveto darkskin paleorange 0.5 8.0 fuzzyrgbstroke newpath bbt .5 rT .5 interpolate2 moveto [ 7 60 ] rt .65 ct .35 interpolate2 longcurveto mediumskin paleorange 0.5 5.0 fuzzyrgbstroke newpath cb moveto [ cb2ct ] ct .5 lt .5 interpolate2 longcurveto darkskin paleorange 0.5 5.0 fuzzyrgbstroke newpath rT moveto [ rT2rt ] rt longcurveto [ rt2rb ] rb longcurveto [ rb2rB ] rB longcurveto mediumskin paleorange 0.2 2.0 fuzzyrgbstroke grestore newpath ct moveto [ ct2lb ] lb longcurveto [ lb2lt ] lt longcurveto [ lt2rt ] rt longcurveto [ rt2rb ] rb longcurveto [ rb2ct ] ct longcurveto closepath black setrgbcolor fill % * run the Curves again, and this time stroke and fuzzystroke them newpath cb moveto [ cb2ct ] ct longcurveto 0.1 setlinewidth stroke newpath bbb moveto [ bbb2bbt ] bbt longcurveto closepath mediumskin setrgbcolor fill newpath bbb moveto [ bbb2bbt ] bbt longcurveto brown setrgbcolor stroke % newpath left 0 moveto left 35.5 lineto right 35.5 lineto right 0.0 lineto % closepath stroke % URL :-) /Times-Italic findfont 1 scalefont setfont red setrgbcolor ct .4 bbb .6 rb .05 interpolate3 moveto (www.pjb.com.au) show lb .7 lt .3 rb .04 interpolate3 moveto 60 rotate (line_drawing.ps) show showpage %%EOF