%!PS-Adobe /mm { 72 mul 25.4 div } bind def /pi 3.14159 def /radians { 180 mul pi div } bind def /awl { currentpoint gsave newpath 1.5 0 360 arc fill grestore } def /D 65 mm def /clearance 2.5 mm def /holespacing 4.0 mm def % curved case, see www.pjb.com.au/jug/two_piece_balls.html#curved /theta 0.35458 def /r_over_d 2.71501 def /alpha 0.600004 def /d D 0.83749648 mul def /r d r_over_d mul def /l r theta radians sin mul 2.0 mul d theta radians sin mul add def /n d pi 0.5 mul theta add mul holespacing div round def % num of points per arc /d_theta pi theta add theta add n div radians def /d_phi theta 2.0 mul n div radians def /dx d 1.2 mul def /xinst 70 mm def /yinst 15 mm def /strip { % scissor lines newpath l 0.5 mul 0 d 0.5 mul clearance add 270 theta radians sub 90 theta radians add arc awl l -1 mul 0 rlineto awl % ? l -0.5 mul 0 d 0.5 mul clearance add 90 theta radians sub 270 theta radians add arc awl closepath awl stroke % awl dots along the sides % l -0.5 mul d 2 div moveto % /i 1 def { awl i n gt { exit } if /i i 1 add def d_l 0 rmoveto } loop % l -0.5 mul d -2 div moveto % /i 1 def { awl i n gt { exit } if /i i 1 add def d_l 0 rmoveto } loop % awl dots round the semicircles /r d 0.5 mul def gsave l 0.5 mul 0 translate /t d_theta theta radians sub def /i 2 def { r t sin mul r t cos mul moveto awl i n ge { exit } if /t t d_theta add def /i i 1 add def } loop grestore gsave l -0.5 mul 0 translate /t d_theta theta radians sub def /i 2 def { r t sin mul -1 mul r t cos mul moveto awl i n ge { exit } if /t t d_theta add def /i i 1 add def } loop grestore } bind def % print instructions ... /Times-Roman findfont 10 scalefont setfont xinst yinst 12 mm add moveto (Tennis-ball-pattern juggling ball) show xinst yinst 6 mm add moveto (approx 65mm diam, 115 grams) show xinst yinst moveto (see http://www.pjb.com.au/jug) show l 0.85 mul dx translate strip dx 0.10 mul dx translate strip dx -0.10 mul dx translate strip dx 0.10 mul dx translate strip showpage