From marshall@windsor.software.org Tue Feb 18 14:29:31 1992
Received: from gawain.cif.rochester.edu by uhura.cc.rochester.edu (4.1/1.16) id AA10790; Tue, 18 Feb 92 14:29:13 EST
Received: from software (SOFTWARE.SOFTWARE.ORG) by gawain.cif.rochester.edu (4.1/1.15) id AA22868; Tue, 18 Feb 92 14:25:44 EST
Received: by software (/\==/\ Smail3.1.25.1 #25.4)
	id <m0lGaTF-0002xHC@software>; Tue, 18 Feb 92 14:27 EST
Received: by windsor.software.org (/\==/\ Smail3.1.25.1 #25.4)
	id <m0lGaTD-00002HC@windsor.software.org>; Tue, 18 Feb 92 14:27 EST
Message-Id: <m0lGaTD-00002HC@windsor.software.org>
Date: Tue, 18 Feb 92 14:27 EST
From: marshall@software.org (Eric Marshall)
To: balloon@gawain.cif.rochester.edu
Subject: PostScript code for drawing balloon sculptures
Status: OR

	Here is some PostScript code which will allow the printing
of some simple balloon sculptures.  The shar file below contains
the dachshund, dog, giraffe, moose, and mouse shapes.  This is just
a start to get things rolling.  Print 'em out and let me know what
you think.  I'll be working on more PostScript primitives to allow
more complicated shapes to be drawn.


Eric Marshall
Software Productivity Consortium
SPC Building
2214 Rock Hill Road
Herndon, VA 22070
(703) 742-7153

ARPANET: marshall@software.org

----- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< -----

#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of shell archive."
# Contents:  bubble.ps dachshund.ps dog.ps giraffe.ps moose.ps mouse.ps
# Wrapped by marshall@windsor on Tue Feb 18 14:10:03 1992
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'bubble.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'bubble.ps'\"
else
echo shar: Extracting \"'bubble.ps'\" \(1995 characters\)
sed "s/^X//" >'bubble.ps' <<'END_OF_FILE'
X%!
X/inch { 72.27 0.5 mul mul } def
X
X/bubble_end_radius   0.5 inch def
X/bubble_end_diameter bubble_end_radius 2 mul def
X
X/bubble { % rotation length => -
X  /bubble_length exch def
X
X  rotate
X
X  % draw the bubble capsule shape
X  bubble_end_radius bubble_end_radius neg moveto
X  bubble_length bubble_end_diameter sub 0 rlineto
X  currentpoint bubble_end_radius add bubble_end_radius 270 90 arc
X  bubble_end_diameter bubble_length sub 0 rlineto
X  currentpoint bubble_end_radius sub bubble_end_radius 90 270 arc closepath
X
X  % fill in the bubble with white
X  gsave
X    1 setgray fill
X  grestore
X
X  % outline the bubble with black
X  stroke
X
X  % move to the end of the bubble
X  bubble_length 0 translate 0 0 moveto
X} bind def
X
X
X/double_bubble { % rotation length => -
X  exch rotate
X
X  dup
X
X  % if we are pointing up, draw right bubble then left bubble
X  matrix currentmatrix 1 get 0 lt {
X    gsave
X      0 bubble_end_radius 2 div neg translate
X      0 exch bubble
X    grestore
X
X    gsave
X      0 bubble_end_radius 2 div translate
X      0 exch bubble
X    grestore
X  } {
X    % we are pointing down, draw left bubble then right bubble
X    gsave
X      0 bubble_end_radius 2 div translate
X      0 exch bubble
X    grestore
X
X    gsave
X      0 bubble_end_radius 2 div neg translate
X      0 exch bubble
X    grestore
X  } ifelse
X
X  % rotate so that it looked like two /bubble's were called
X  180 rotate
X} bind def
X
X
X/tail_end_radius   0.1 inch def
X/tail_end_diameter tail_end_radius 2 mul def
X
X/tail { % rotation length => -
X  /tail_length exch def
X
X  rotate
X
X  % draw the tail shape
X  tail_length tail_end_diameter sub tail_end_radius moveto
X  tail_end_diameter tail_length sub 0 rlineto
X  currentpoint tail_end_radius sub tail_end_radius 90 270 arc
X  tail_length tail_end_diameter sub 0 rlineto
X
X  % fill in the tail with white
X  gsave
X    1 setgray fill
X  grestore
X
X  % outline the tail with black
X  stroke
X
X  % move to the start of the tail
X  tail_length tail_end_diameter sub 0 translate 0 0 moveto
X} bind def
END_OF_FILE
if test 1995 -ne `wc -c <'bubble.ps'`; then
    echo shar: \"'bubble.ps'\" unpacked with wrong size!
fi
# end of 'bubble.ps'
fi
if test -f 'dachshund.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'dachshund.ps'\"
else
echo shar: Extracting \"'dachshund.ps'\" \(2197 characters\)
sed "s/^X//" >'dachshund.ps' <<'END_OF_FILE'
X%!
X/inch { 72.27 0.5 mul mul } def
X
X/bubble_end_radius   0.5 inch def
X/bubble_end_diameter bubble_end_radius 2 mul def
X
X/bubble { % rotation length => -
X  /bubble_length exch def
X
X  rotate
X
X  % draw the bubble capsule shape
X  bubble_end_radius bubble_end_radius neg moveto
X  bubble_length bubble_end_diameter sub 0 rlineto
X  currentpoint bubble_end_radius add bubble_end_radius 270 90 arc
X  bubble_end_diameter bubble_length sub 0 rlineto
X  currentpoint bubble_end_radius sub bubble_end_radius 90 270 arc closepath
X
X  % fill in the bubble with white
X  gsave
X    1 setgray fill
X  grestore
X
X  % outline the bubble with black
X  stroke
X
X  % move to the end of the bubble
X  bubble_length 0 translate 0 0 moveto
X} bind def
X
X
X/double_bubble { % rotation length => -
X  exch rotate
X
X  dup
X
X  % if we are pointing up, draw right bubble then left bubble
X  matrix currentmatrix 1 get 0 lt {
X    gsave
X      0 bubble_end_radius 2 div neg translate
X      0 exch bubble
X    grestore
X
X    gsave
X      0 bubble_end_radius 2 div translate
X      0 exch bubble
X    grestore
X  } {
X    % we are pointing down, draw left bubble then right bubble
X    gsave
X      0 bubble_end_radius 2 div translate
X      0 exch bubble
X    grestore
X
X    gsave
X      0 bubble_end_radius 2 div neg translate
X      0 exch bubble
X    grestore
X  } ifelse
X
X  % rotate so that it looked like two /bubble's were called
X  180 rotate
X} bind def
X
X
X/tail_end_radius   0.1 inch def
X/tail_end_diameter tail_end_radius 2 mul def
X
X/tail { % rotation length => -
X  /tail_length exch def
X
X  rotate
X
X  % draw the tail shape
X  tail_length tail_end_diameter sub tail_end_radius moveto
X  tail_end_diameter tail_length sub 0 rlineto
X  currentpoint tail_end_radius sub tail_end_radius 90 270 arc
X  tail_length tail_end_diameter sub 0 rlineto
X
X  % fill in the tail with white
X  gsave
X    1 setgray fill
X  grestore
X
X  % outline the tail with black
X  stroke
X
X  % move to the start of the tail
X  tail_length tail_end_diameter sub 0 translate 0 0 moveto
X} bind def
X
X
X% The basic animal shape
X75 450 translate
X
X-45 2 inch bubble
X-45 2 inch double_bubble
X-90 8 inch bubble
X-90 2 inch double_bubble
X-45 2 inch bubble
X 45 3 inch double_bubble
X 45 3 inch bubble
X
Xshowpage
END_OF_FILE
if test 2197 -ne `wc -c <'dachshund.ps'`; then
    echo shar: \"'dachshund.ps'\" unpacked with wrong size!
fi
# end of 'dachshund.ps'
fi
if test -f 'dog.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'dog.ps'\"
else
echo shar: Extracting \"'dog.ps'\" \(2198 characters\)
sed "s/^X//" >'dog.ps' <<'END_OF_FILE'
X%!
X/inch { 72.27 0.5 mul mul } def
X
X/bubble_end_radius   0.5 inch def
X/bubble_end_diameter bubble_end_radius 2 mul def
X
X/bubble { % rotation length => -
X  /bubble_length exch def
X
X  rotate
X
X  % draw the bubble capsule shape
X  bubble_end_radius bubble_end_radius neg moveto
X  bubble_length bubble_end_diameter sub 0 rlineto
X  currentpoint bubble_end_radius add bubble_end_radius 270 90 arc
X  bubble_end_diameter bubble_length sub 0 rlineto
X  currentpoint bubble_end_radius sub bubble_end_radius 90 270 arc closepath
X
X  % fill in the bubble with white
X  gsave
X    1 setgray fill
X  grestore
X
X  % outline the bubble with black
X  stroke
X
X  % move to the end of the bubble
X  bubble_length 0 translate 0 0 moveto
X} bind def
X
X
X/double_bubble { % rotation length => -
X  exch rotate
X
X  dup
X
X  % if we are pointing up, draw right bubble then left bubble
X  matrix currentmatrix 1 get 0 lt {
X    gsave
X      0 bubble_end_radius 2 div neg translate
X      0 exch bubble
X    grestore
X
X    gsave
X      0 bubble_end_radius 2 div translate
X      0 exch bubble
X    grestore
X  } {
X    % we are pointing down, draw left bubble then right bubble
X    gsave
X      0 bubble_end_radius 2 div translate
X      0 exch bubble
X    grestore
X
X    gsave
X      0 bubble_end_radius 2 div neg translate
X      0 exch bubble
X    grestore
X  } ifelse
X
X  % rotate so that it looked like two /bubble's were called
X  180 rotate
X} bind def
X
X
X/tail_end_radius   0.1 inch def
X/tail_end_diameter tail_end_radius 2 mul def
X
X/tail { % rotation length => -
X  /tail_length exch def
X
X  rotate
X
X  % draw the tail shape
X  tail_length tail_end_diameter sub tail_end_radius moveto
X  tail_end_diameter tail_length sub 0 rlineto
X  currentpoint tail_end_radius sub tail_end_radius 90 270 arc
X  tail_length tail_end_diameter sub 0 rlineto
X
X  % fill in the tail with white
X  gsave
X    1 setgray fill
X  grestore
X
X  % outline the tail with black
X  stroke
X
X  % move to the start of the tail
X  tail_length tail_end_diameter sub 0 translate 0 0 moveto
X} bind def
X
X
X% The basic animal shape
X150 450 translate
X
X-45 2 inch bubble
X-45 3 inch double_bubble
X-90 3 inch bubble
X-90 3 inch double_bubble
X-45 3 inch bubble
X 45 3 inch double_bubble
X 45 3 inch bubble
X
Xshowpage
END_OF_FILE
if test 2198 -ne `wc -c <'dog.ps'`; then
    echo shar: \"'dog.ps'\" unpacked with wrong size!
fi
# end of 'dog.ps'
fi
if test -f 'giraffe.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'giraffe.ps'\"
else
echo shar: Extracting \"'giraffe.ps'\" \(2198 characters\)
sed "s/^X//" >'giraffe.ps' <<'END_OF_FILE'
X%!
X/inch { 72.27 0.5 mul mul } def
X
X/bubble_end_radius   0.5 inch def
X/bubble_end_diameter bubble_end_radius 2 mul def
X
X/bubble { % rotation length => -
X  /bubble_length exch def
X
X  rotate
X
X  % draw the bubble capsule shape
X  bubble_end_radius bubble_end_radius neg moveto
X  bubble_length bubble_end_diameter sub 0 rlineto
X  currentpoint bubble_end_radius add bubble_end_radius 270 90 arc
X  bubble_end_diameter bubble_length sub 0 rlineto
X  currentpoint bubble_end_radius sub bubble_end_radius 90 270 arc closepath
X
X  % fill in the bubble with white
X  gsave
X    1 setgray fill
X  grestore
X
X  % outline the bubble with black
X  stroke
X
X  % move to the end of the bubble
X  bubble_length 0 translate 0 0 moveto
X} bind def
X
X
X/double_bubble { % rotation length => -
X  exch rotate
X
X  dup
X
X  % if we are pointing up, draw right bubble then left bubble
X  matrix currentmatrix 1 get 0 lt {
X    gsave
X      0 bubble_end_radius 2 div neg translate
X      0 exch bubble
X    grestore
X
X    gsave
X      0 bubble_end_radius 2 div translate
X      0 exch bubble
X    grestore
X  } {
X    % we are pointing down, draw left bubble then right bubble
X    gsave
X      0 bubble_end_radius 2 div translate
X      0 exch bubble
X    grestore
X
X    gsave
X      0 bubble_end_radius 2 div neg translate
X      0 exch bubble
X    grestore
X  } ifelse
X
X  % rotate so that it looked like two /bubble's were called
X  180 rotate
X} bind def
X
X
X/tail_end_radius   0.1 inch def
X/tail_end_diameter tail_end_radius 2 mul def
X
X/tail { % rotation length => -
X  /tail_length exch def
X
X  rotate
X
X  % draw the tail shape
X  tail_length tail_end_diameter sub tail_end_radius moveto
X  tail_end_diameter tail_length sub 0 rlineto
X  currentpoint tail_end_radius sub tail_end_radius 90 270 arc
X  tail_length tail_end_diameter sub 0 rlineto
X
X  % fill in the tail with white
X  gsave
X    1 setgray fill
X  grestore
X
X  % outline the tail with black
X  stroke
X
X  % move to the start of the tail
X  tail_length tail_end_diameter sub 0 translate 0 0 moveto
X} bind def
X
X
X% The basic animal shape
X100 350 translate
X
X-45 2 inch bubble
X-45 3 inch double_bubble
X-90 3 inch bubble
X-90 3 inch double_bubble
X-45 8 inch bubble
X 45 3 inch double_bubble
X 45 3 inch bubble
X
Xshowpage
END_OF_FILE
if test 2198 -ne `wc -c <'giraffe.ps'`; then
    echo shar: \"'giraffe.ps'\" unpacked with wrong size!
fi
# end of 'giraffe.ps'
fi
if test -f 'moose.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'moose.ps'\"
else
echo shar: Extracting \"'moose.ps'\" \(2223 characters\)
sed "s/^X//" >'moose.ps' <<'END_OF_FILE'
X%!
X/inch { 72.27 0.5 mul mul } def
X
X/bubble_end_radius   0.5 inch def
X/bubble_end_diameter bubble_end_radius 2 mul def
X
X/bubble { % rotation length => -
X  /bubble_length exch def
X
X  rotate
X
X  % draw the bubble capsule shape
X  bubble_end_radius bubble_end_radius neg moveto
X  bubble_length bubble_end_diameter sub 0 rlineto
X  currentpoint bubble_end_radius add bubble_end_radius 270 90 arc
X  bubble_end_diameter bubble_length sub 0 rlineto
X  currentpoint bubble_end_radius sub bubble_end_radius 90 270 arc closepath
X
X  % fill in the bubble with white
X  gsave
X    1 setgray fill
X  grestore
X
X  % outline the bubble with black
X  stroke
X
X  % move to the end of the bubble
X  bubble_length 0 translate 0 0 moveto
X} bind def
X
X
X/double_bubble { % rotation length => -
X  exch rotate
X
X  dup
X
X  % if we are pointing up, draw right bubble then left bubble
X  matrix currentmatrix 1 get 0 lt {
X    gsave
X      0 bubble_end_radius 2 div neg translate
X      0 exch bubble
X    grestore
X
X    gsave
X      0 bubble_end_radius 2 div translate
X      0 exch bubble
X    grestore
X  } {
X    % we are pointing down, draw left bubble then right bubble
X    gsave
X      0 bubble_end_radius 2 div translate
X      0 exch bubble
X    grestore
X
X    gsave
X      0 bubble_end_radius 2 div neg translate
X      0 exch bubble
X    grestore
X  } ifelse
X
X  % rotate so that it looked like two /bubble's were called
X  180 rotate
X} bind def
X
X
X/tail_end_radius   0.1 inch def
X/tail_end_diameter tail_end_radius 2 mul def
X
X/tail { % rotation length => -
X  /tail_length exch def
X
X  rotate
X
X  % draw the tail shape
X  tail_length tail_end_diameter sub tail_end_radius moveto
X  tail_end_diameter tail_length sub 0 rlineto
X  currentpoint tail_end_radius sub tail_end_radius 90 270 arc
X  tail_length tail_end_diameter sub 0 rlineto
X
X  % fill in the tail with white
X  gsave
X    1 setgray fill
X  grestore
X
X  % outline the tail with black
X  stroke
X
X  % move to the start of the tail
X  tail_length tail_end_diameter sub 0 translate 0 0 moveto
X} bind def
X
X
X% The basic animal shape
X150 450 translate
X
X-45 2 inch bubble
X-45 4 inch double_bubble
X-90 3 inch bubble
X-90 4 inch double_bubble
X-45 2 inch bubble
X 90 3 inch double_bubble
X 90 3 inch double_bubble
X 90 2 inch bubble
X
Xshowpage
END_OF_FILE
if test 2223 -ne `wc -c <'moose.ps'`; then
    echo shar: \"'moose.ps'\" unpacked with wrong size!
fi
# end of 'moose.ps'
fi
if test -f 'mouse.ps' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'mouse.ps'\"
else
echo shar: Extracting \"'mouse.ps'\" \(2214 characters\)
sed "s/^X//" >'mouse.ps' <<'END_OF_FILE'
X%!
X/inch { 72.27 0.5 mul mul } def
X
X/bubble_end_radius   0.5 inch def
X/bubble_end_diameter bubble_end_radius 2 mul def
X
X/bubble { % rotation length => -
X  /bubble_length exch def
X
X  rotate
X
X  % draw the bubble capsule shape
X  bubble_end_radius bubble_end_radius neg moveto
X  bubble_length bubble_end_diameter sub 0 rlineto
X  currentpoint bubble_end_radius add bubble_end_radius 270 90 arc
X  bubble_end_diameter bubble_length sub 0 rlineto
X  currentpoint bubble_end_radius sub bubble_end_radius 90 270 arc closepath
X
X  % fill in the bubble with white
X  gsave
X    1 setgray fill
X  grestore
X
X  % outline the bubble with black
X  stroke
X
X  % move to the end of the bubble
X  bubble_length 0 translate 0 0 moveto
X} bind def
X
X
X/double_bubble { % rotation length => -
X  exch rotate
X
X  dup
X
X  % if we are pointing up, draw right bubble then left bubble
X  matrix currentmatrix 1 get 0 lt {
X    gsave
X      0 bubble_end_radius 2 div neg translate
X      0 exch bubble
X    grestore
X
X    gsave
X      0 bubble_end_radius 2 div translate
X      0 exch bubble
X    grestore
X  } {
X    % we are pointing down, draw left bubble then right bubble
X    gsave
X      0 bubble_end_radius 2 div translate
X      0 exch bubble
X    grestore
X
X    gsave
X      0 bubble_end_radius 2 div neg translate
X      0 exch bubble
X    grestore
X  } ifelse
X
X  % rotate so that it looked like two /bubble's were called
X  180 rotate
X} bind def
X
X
X/tail_end_radius   0.1 inch def
X/tail_end_diameter tail_end_radius 2 mul def
X
X/tail { % rotation length => -
X  /tail_length exch def
X
X  rotate
X
X  % draw the tail shape
X  tail_length tail_end_diameter sub tail_end_radius moveto
X  tail_end_diameter tail_length sub 0 rlineto
X  currentpoint tail_end_radius sub tail_end_radius 90 270 arc
X  tail_length tail_end_diameter sub 0 rlineto
X
X  % fill in the tail with white
X  gsave
X    1 setgray fill
X  grestore
X
X  % outline the tail with black
X  stroke
X
X  % move to the start of the tail
X  tail_length tail_end_diameter sub 0 translate 0 0 moveto
X} bind def
X
X
X% The basic animal shape
X150 500 translate
X
X-45 4 inch tail
X  0 1 inch bubble
X-45 1 inch double_bubble
X-90 1 inch bubble
X-90 1 inch double_bubble
X-45 1 inch bubble
X 45 1 inch double_bubble
X 45 1 inch bubble
X
Xshowpage
END_OF_FILE
if test 2214 -ne `wc -c <'mouse.ps'`; then
    echo shar: \"'mouse.ps'\" unpacked with wrong size!
fi
# end of 'mouse.ps'
fi
echo shar: End of shell archive.
exit 0


