Subject: Re: want historical object data (teapots and klein bottles)

From: [email-masked] (Jonathan P. Leech)
Date: 10 May 86 10:39:36 GMT

Organization : California Institute of Technology
Keywords: 3D models, neato, keen

In article <[email-masked]> [email-masked] (Timothy F. O'Connor) writes:
>
>	I would very much like to get my hands on some of the historical
>	3D models that appear from time to time (mostly in odd places).
>	These are things like the champagne glass from Phong's thesis,
>	Clark's Klein bottle, and the ever infamous teapot (is it
>	Catmull's or Newell's?	I don't know).	I've got an image in mind
>	...

    The teapot database is included as a 'shar' file  at  the  end  of
this article. The comments should explain what in here. This  database
is quite probably the original	as  Jim  Blinn	supplied  it  for  the
Computer Graphics class I'm TAing (and he's teaching). The database is
NOT in polygonal form. Basically the commands in these	files  are  as
follows:

    PNT N, X, Y, Z   - define point #N with coordinates (X,Y,Z)
    BEZC N1,N2,N3,N4 - draw bezier curve with control points N1..N4
    BEZS N1,..N16    - draw bezier surface with control points N1..N16
			(in a grid: N1	N2  N3	N4
				    N5	 ...	N8
				    ..		..
				    N13  ...	N16

    These are intended for a  left-handed  coordinate  system  with  Z
increasing into the screen (not that it  really  matters).   You  will
also have to write a program to compute a surface of  revolution  from
a bezier curve for the lid and body profiles. If you  don't  know  how
to compute bicubic patches, you should	-  try	Newman	&  Sproull  or
Foley & Van Dam. There is a paper by Caltech professor Jim  Kajiya  on
ray tracing bicubic patches in	SIGGRAPH  Proceedings  a  few  summers
back, and more	recent	articles  on  tracing  parametric  patches  in
general in the last few SIGGRAPHs. Or just chop it  up	into  lots  of
polygons (``Polygons, Keptin! Millions of them!'').

    I also have the Sutherland VW database (in	polygonal  form).   If
there's sufficient interest  I'll  post  it  to  the  net.  I  do  not
particularly want to send individual  copies  because  of  the	effort
involved.

    -- Jon
    __@/

#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	TPOTBC.TEXT
#	TPOTHH.TEXT
#	TPOTLC.TEXT
#	TPOTLQ.TEXT
#	TPOTSH.TEXT
# This archive created: Sat May 10 03:26:18 1986
export PATH; PATH=/bin:$PATH
if test -f 'TPOTBC.TEXT'
then
	echo shar: will not over-write existing file "'TPOTBC.TEXT'"
else
cat << \SHAR_EOF > 'TPOTBC.TEXT'
       OUTLINE CURVE OF BODY OF TEAPOT
       SWEEP AROUND Y AXIS FOR WHOLE BODY

PNT  1,  1.40000, 2.25000, 0.00000,,,,
PNT  2,  1.33750, 2.38125, 0.00000,
PNT  3,  1.43750, 2.38125, 0.00000,
PNT  4,  1.50000, 2.25000, 0.00000,

BEZC  1,2,3,4

PNT  5,  1.75000, 1.72500, 0.00000,
PNT  6,  2.00000, 1.20000, 0.00000,
PNT  7,  2.00000, 0.75000, 0.00000,

BEZC 4,5,6,7

PNT  8,  2.00000, 0.30000, 0.00000,
PNT  9,  1.50000, 0.07500, 0.00000,
PNT 10,  1.50000, 0.00000, 0.00000,

BEZC 7,8,9,10
SHAR_EOF
fi # end of overwriting check
if test -f 'TPOTHH.TEXT'
then
	echo shar: will not over-write existing file "'TPOTHH.TEXT'"
else
cat << \SHAR_EOF > 'TPOTHH.TEXT'
	1/2 HANDLE OF TEAPOT
	MIRROR ABOUT Z FOR OTHER HALF

PNT   1, -1.60000, 1.87500, 0.00000,,,,
PNT   2, -1.60000, 1.87500, 0.30000,
PNT   3, -1.50000, 2.10000, 0.30000,
PNT   4, -1.50000, 2.10000, 0.00000,

PNT   5, -2.30000, 1.87500, 0.00000,
PNT   6, -2.30000, 1.87500, 0.30000,
PNT   7, -2.50000, 2.10000, 0.30000,
PNT   8, -2.50000, 2.10000, 0.00000,

PNT   9, -2.70000, 1.87500, 0.00000,
PNT  10, -2.70000, 1.87500, 0.30000,
PNT  11, -3.00000, 2.10000, 0.30000,
PNT  12, -3.00000, 2.10000, 0.00000,

PNT  13, -2.70000, 1.65000, 0.00000,
PNT  14, -2.70000, 1.65000, 0.30000,
PNT  15, -3.00000, 1.65000, 0.30000,
PNT  16, -3.00000, 1.65000, 0.00000,

BEZS 1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16

PNT  17, -2.70000, 1.42500, 0.00000,
PNT  18, -2.70000, 1.42500, 0.30000,
PNT  19, -3.00000, 1.20000, 0.30000,
PNT  20, -3.00000, 1.20000, 0.00000,
PNT  21, -2.50000, 0.97500, 0.00000,
PNT  22, -2.50000, 0.97500, 0.30000,
PNT  23, -2.65000, 0.78750, 0.30000,
PNT  24, -2.65000, 0.78750, 0.00000,

PNT  25, -2.00000, 0.75000, 0.00000,
PNT  26, -2.00000, 0.75000, 0.30000,
PNT  27, -1.90000, 0.45000, 0.30000,
PNT  28, -1.90000, 0.45000, 0.00000,

BEZS 13,14,15,16, 17,18,19,20, 21,22,23,24, 25,26,27,28
SHAR_EOF
fi # end of overwriting check
if test -f 'TPOTLC.TEXT'
then
	echo shar: will not over-write existing file "'TPOTLC.TEXT'"
else
cat << \SHAR_EOF > 'TPOTLC.TEXT'
	CONTOUR OF TEAPOT LID (IN XY PLANE)
	SWEEP AROUND Y AXIS FOR WHOLE LID

PNT  1,  0.00000, 3.00000, 0.00000,,,,
PNT  2,  0.80000, 3.00000, 0.00000,
PNT  3,  0.00000, 2.70000, 0.00000,
PNT  4,  0.20000, 2.55000, 0.00000,

PNT  5,  0.40000, 2.40000, 0.00000,
PNT  6,  1.30000, 2.40000, 0.00000,
PNT  7,  1.30000, 2.25000, 0.00000,

BEZC  1,2,3,4
BEZC  4,5,6,7
SHAR_EOF
fi # end of overwriting check
if test -f 'TPOTLQ.TEXT'
then
	echo shar: will not over-write existing file "'TPOTLQ.TEXT'"
else
cat << \SHAR_EOF > 'TPOTLQ.TEXT'
PNT   1,  0.00000, 3.00000, 0.00000,,,,
PNT   2,  0.00000, 3.00000, 0.00200,
PNT   3,  0.00200, 3.00000, 0.00000,
PNT   4,  0.00000, 3.00000, 0.00000,

PNT   5,  0.80000, 3.00000, 0.00000,
PNT   6,  0.80000, 3.00000, 0.45000,
PNT   7,  0.45000, 3.00000, 0.80000,
PNT   8,  0.00000, 3.00000, 0.80000,

PNT   9,  0.00000, 2.70000, 0.00000,
PNT  10,  0.00000, 2.70000, 0.00000,
PNT  11,  0.00000, 2.70000, 0.00000,
PNT  12,  0.00000, 2.70000, 0.00000,

PNT  13,  0.20000, 2.55000, 0.00000,
PNT  14,  0.20000, 2.55000, 0.11200,
PNT  15,  0.11200, 2.55000, 0.20000,
PNT  16,  0.00000, 2.55000, 0.20000,

BEZS 1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16

PNT  17,  0.40000, 2.40000, 0.00000,
PNT  18,  0.40000, 2.40000, 0.22400,
PNT  19,  0.22400, 2.40000, 0.40000,
PNT  20,  0.00000, 2.40000, 0.40000,
PNT  21,  1.30000, 2.40000, 0.00000,
PNT  22,  1.30000, 2.40000, 0.72800,
PNT  23,  0.72800, 2.40000, 1.30000,
PNT  24,  0.00000, 2.40000, 1.30000,

PNT  25,  1.30000, 2.25000, 0.00000,
PNT  26,  1.30000, 2.25000, 0.72800,
PNT  27,  0.72800, 2.25000, 1.30000,
PNT  28,  0.00000, 2.25000, 1.30000,

BEZS 13,14,15,16, 17,18,19,20, 21,22,23,24, 25,26,27,28,
SHAR_EOF
fi # end of overwriting check
if test -f 'TPOTSH.TEXT'
then
	echo shar: will not over-write existing file "'TPOTSH.TEXT'"
else
cat << \SHAR_EOF > 'TPOTSH.TEXT'
	 1/2 SPOUT OF TEAPOT
	 MIRROR ABOUT Z FOR OTHER HALF

PNT   1,  1.70000, 1.27500, 0.00000,,,,
PNT   2,  1.70000, 1.27500, 0.66000,
PNT   3,  1.70000, 0.45000, 0.66000,
PNT   4,  1.70000, 0.45000, 0.00000,

PNT   5,  2.60000, 1.27500, 0.00000,
PNT   6,  2.60000, 1.27500, 0.66000,
PNT   7,  3.10000, 0.67500, 0.66000,
PNT   8,  3.10000, 0.67500, 0.00000,

PNT   9,  2.30000, 1.95000, 0.00000,
PNT  10,  2.30000, 1.95000, 0.25000,
PNT  11,  2.40000, 1.87500, 0.25000,
PNT  12,  2.40000, 1.87500, 0.00000,

PNT  13,  2.70000, 2.25000, 0.00000,
PNT  14,  2.70000, 2.25000, 0.25000,
PNT  15,  3.30000, 2.25000, 0.25000,
PNT  16,  3.30000, 2.25000, 0.00000,

BEZS 1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16

PNT  17,  2.80000, 2.32500, 0.00000,
PNT  18,  2.80000, 2.32500, 0.25000,
PNT  19,  3.52500, 2.34375, 0.25000,
PNT  20,  3.52500, 2.34375, 0.00000,

PNT  21,  2.90000, 2.32500, 0.00000,
PNT  22,  2.90000, 2.32500, 0.15000,
PNT  23,  3.45000, 2.36250, 0.15000,
PNT  24,  3.45000, 2.36250, 0.00000,

PNT  25,  2.80000, 2.25000, 0.00000,
PNT  26,  2.80000, 2.25000, 0.15000,
PNT  27,  3.20000, 2.25000, 0.15000,
PNT  28,  3.20000, 2.25000, 0.00000,

BEZS 13,14,15,16, 17,18,19,20, 21,22,23,24, 25,26,27,28
SHAR_EOF
fi # end of overwriting check
#	End of shell archive
exit 0

-- 
    Jon Leech ([email-masked] || ...seismo!cit-vax!jon)
    Caltech Computer Science Graphics Group
    __@/