Programming Assignment 3
Assigned 4 March 2002
Due 20 March 2002
Below you will find the control points for the famous Utah teapot. Each Bezier patch is described by 16 triples of X,Y,Z coordinates. There are 32 patches. The text labels are just to help you identify the parts.
Write a program to display the teapot as a set of parametric curves. Make the number of curves in s and t an adjustable parameter of your program. Choose a value >= 4 that shows off the shape of the teapot well. The curves you display should appear smooth (that is not piecewise linear). At each intersection point where the s and t curves intersect, draw a short line indicating the direction of the outward pointing surface normal at that point. Make these normal vectors long enough to be easily seen but not so long that they obscure the view of the teapot.
As usual send me email with the URL of a web page with a write up describing what you did, how you did it, and showing a few images illustrating your results.
xBody_Back -80.00 0.00 30.00 -80.00 -44.80 30.00 -44.80 -80.00 30.00 0.00 -80.00 30.00 -80.00 0.00 12.00 -80.00 -44.80 12.00 -44.80 -80.00 12.00 0.00 -80.00 12.00 -60.00 0.00 3.00 -60.00 -33.60 3.00 -33.60 -60.00 3.00 0.00 -60.00 3.00 -60.00 0.00 0.00 -60.00 -33.60 0.00 -33.60 -60.00 0.00 0.00 -60.00 0.00 0.00 -80.00 30.00 44.80 -80.00 30.00 80.00 -44.80 30.00 80.00 0.00 30.00 0.00 -80.00 12.00 44.80 -80.00 12.00 80.00 -44.80 12.00 80.00 0.00 12.00 0.00 -60.00 3.00 33.60 -60.00 3.00 60.00 -33.60 3.00 60.00 0.00 3.00 0.00 -60.00 0.00 33.60 -60.00 0.00 60.00 -33.60 0.00 60.00 0.00 0.00 -60.00 0.00 90.00 -60.00 -33.60 90.00 -33.60 -60.00 90.00 0.00 -60.00 90.00 -70.00 0.00 69.00 -70.00 -39.20 69.00 -39.20 -70.00 69.00 0.00 -70.00 69.00 -80.00 0.00 48.00 -80.00 -44.80 48.00 -44.80 -80.00 48.00 0.00 -80.00 48.00 -80.00 0.00 30.00 -80.00 -44.80 30.00 -44.80 -80.00 30.00 0.00 -80.00 30.00 0.00 -60.00 90.00 33.60 -60.00 90.00 60.00 -33.60 90.00 60.00 0.00 90.00 0.00 -70.00 69.00 39.20 -70.00 69.00 70.00 -39.20 69.00 70.00 0.00 69.00 0.00 -80.00 48.00 44.80 -80.00 48.00 80.00 -44.80 48.00 80.00 0.00 48.00 0.00 -80.00 30.00 44.80 -80.00 30.00 80.00 -44.80 30.00 80.00 0.00 30.00 -56.00 0.00 90.00 -56.00 -31.36 90.00 -31.36 -56.00 90.00 0.00 -56.00 90.00 -53.50 0.00 95.25 -53.50 -29.96 95.25 -29.96 -53.50 95.25 0.00 -53.50 95.25 -57.50 0.00 95.25 -57.50 -32.20 95.25 -32.20 -57.50 95.25 0.00 -57.50 95.25 -60.00 0.00 90.00 -60.00 -33.60 90.00 -33.60 -60.00 90.00 0.00 -60.00 90.00 0.00 -56.00 90.00 31.36 -56.00 90.00 56.00 -31.36 90.00 56.00 0.00 90.00 0.00 -53.50 95.25 29.96 -53.50 95.25 53.50 -29.96 95.25 53.50 0.00 95.25 0.00 -57.50 95.25 32.20 -57.50 95.25 57.50 -32.20 95.25 57.50 0.00 95.25 0.00 -60.00 90.00 33.60 -60.00 90.00 60.00 -33.60 90.00 60.00 0.00 90.00 xBody_Front 80.00 0.00 30.00 80.00 44.80 30.00 44.80 80.00 30.00 0.00 80.00 30.00 80.00 0.00 12.00 80.00 44.80 12.00 44.80 80.00 12.00 0.00 80.00 12.00 60.00 0.00 3.00 60.00 33.60 3.00 33.60 60.00 3.00 0.00 60.00 3.00 60.00 0.00 0.00 60.00 33.60 0.00 33.60 60.00 0.00 0.00 60.00 0.00 0.00 80.00 30.00 -44.80 80.00 30.00 -80.00 44.80 30.00 -80.00 0.00 30.00 0.00 80.00 12.00 -44.80 80.00 12.00 -80.00 44.80 12.00 -80.00 0.00 12.00 0.00 60.00 3.00 -33.60 60.00 3.00 -60.00 33.60 3.00 -60.00 0.00 3.00 0.00 60.00 0.00 -33.60 60.00 0.00 -60.00 33.60 0.00 -60.00 0.00 0.00 60.00 0.00 90.00 60.00 33.60 90.00 33.60 60.00 90.00 0.00 60.00 90.00 70.00 0.00 69.00 70.00 39.20 69.00 39.20 70.00 69.00 0.00 70.00 69.00 80.00 0.00 48.00 80.00 44.80 48.00 44.80 80.00 48.00 0.00 80.00 48.00 80.00 0.00 30.00 80.00 44.80 30.00 44.80 80.00 30.00 0.00 80.00 30.00 0.00 60.00 90.00 -33.60 60.00 90.00 -60.00 33.60 90.00 -60.00 0.00 90.00 0.00 70.00 69.00 -39.20 70.00 69.00 -70.00 39.20 69.00 -70.00 0.00 69.00 0.00 80.00 48.00 -44.80 80.00 48.00 -80.00 44.80 48.00 -80.00 0.00 48.00 0.00 80.00 30.00 -44.80 80.00 30.00 -80.00 44.80 30.00 -80.00 0.00 30.00 56.00 0.00 90.00 56.00 31.36 90.00 31.36 56.00 90.00 0.00 56.00 90.00 53.50 0.00 95.25 53.50 29.96 95.25 29.96 53.50 95.25 0.00 53.50 95.25 57.50 0.00 95.25 57.50 32.20 95.25 32.20 57.50 95.25 0.00 57.50 95.25 60.00 0.00 90.00 60.00 33.60 90.00 33.60 60.00 90.00 0.00 60.00 90.00 0.00 56.00 90.00 -31.36 56.00 90.00 -56.00 31.36 90.00 -56.00 0.00 90.00 0.00 53.50 95.25 -29.96 53.50 95.25 -53.50 29.96 95.25 -53.50 0.00 95.25 0.00 57.50 95.25 -32.20 57.50 95.25 -57.50 32.20 95.25 -57.50 0.00 95.25 0.00 60.00 90.00 -33.60 60.00 90.00 -60.00 33.60 90.00 -60.00 0.00 90.00 Handle -64.00 0.00 75.00 -64.00 12.00 75.00 -60.00 12.00 84.00 -60.00 0.00 84.00 -92.00 0.00 75.00 -92.00 12.00 75.00 -100.00 12.00 84.00 -100.00 0.00 84.00 -108.00 0.00 75.00 -108.00 12.00 75.00 -120.00 12.00 84.00 -120.00 0.00 84.00 -108.00 0.00 66.00 -108.00 12.00 66.00 -120.00 12.00 66.00 -120.00 0.00 66.00 -60.00 0.00 84.00 -60.00 -12.00 84.00 -64.00 -12.00 75.00 -64.00 0.00 75.00 -100.00 0.00 84.00 -100.00 -12.00 84.00 -92.00 -12.00 75.00 -92.00 0.00 75.00 -120.00 0.00 84.00 -120.00 -12.00 84.00 -108.00 -12.00 75.00 -108.00 0.00 75.00 -120.00 0.00 66.00 -120.00 -12.00 66.00 -108.00 -12.00 66.00 -108.00 0.00 66.00 -108.00 0.00 66.00 -108.00 12.00 66.00 -120.00 12.00 66.00 -120.00 0.00 66.00 -108.00 0.00 57.00 -108.00 12.00 57.00 -120.00 12.00 48.00 -120.00 0.00 48.00 -100.00 0.00 39.00 -100.00 12.00 39.00 -106.00 12.00 31.50 -106.00 0.00 31.50 -80.00 0.00 30.00 -80.00 12.00 30.00 -76.00 12.00 18.00 -76.00 0.00 18.00 -120.00 0.00 66.00 -120.00 -12.00 66.00 -108.00 -12.00 66.00 -108.00 0.00 66.00 -120.00 0.00 48.00 -120.00 -12.00 48.00 -108.00 -12.00 57.00 -108.00 0.00 57.00 -106.00 0.00 31.50 -106.00 -12.00 31.50 -100.00 -12.00 39.00 -100.00 0.00 39.00 -76.00 0.00 18.00 -76.00 -12.00 18.00 -80.00 -12.00 30.00 -80.00 0.00 30.00 Spout 68.00 0.00 51.00 68.00 26.40 51.00 68.00 26.40 18.00 68.00 0.00 18.00 104.00 0.00 51.00 104.00 26.40 51.00 124.00 26.40 27.00 124.00 0.00 27.00 92.00 0.00 78.00 92.00 10.00 78.00 96.00 10.00 75.00 96.00 0.00 75.00 108.00 0.00 90.00 108.00 10.00 90.00 132.00 10.00 90.00 132.00 0.00 90.00 68.00 0.00 18.00 68.00 -26.40 18.00 68.00 -26.40 51.00 68.00 0.00 51.00 124.00 0.00 27.00 124.00 -26.40 27.00 104.00 -26.40 51.00 104.00 0.00 51.00 96.00 0.00 75.00 96.00 -10.00 75.00 92.00 -10.00 78.00 92.00 0.00 78.00 132.00 0.00 90.00 132.00 -10.00 90.00 108.00 -10.00 90.00 108.00 0.00 90.00 108.00 0.00 90.00 108.00 10.00 90.00 132.00 10.00 90.00 132.00 0.00 90.00 112.00 0.00 93.00 112.00 10.00 93.00 141.00 10.00 93.75 141.00 0.00 93.75 116.00 0.00 93.00 116.00 6.00 93.00 138.00 6.00 94.50 138.00 0.00 94.50 112.00 0.00 90.00 112.00 6.00 90.00 128.00 6.00 90.00 128.00 0.00 90.00 132.00 0.00 90.00 132.00 -10.00 90.00 108.00 -10.00 90.00 108.00 0.00 90.00 141.00 0.00 93.75 141.00 -10.00 93.75 112.00 -10.00 93.00 112.00 0.00 93.00 138.00 0.00 94.50 138.00 -6.00 94.50 116.00 -6.00 93.00 116.00 0.00 93.00 128.00 0.00 90.00 128.00 -6.00 90.00 112.00 -6.00 90.00 112.00 0.00 90.00 Lip 50.00 0.00 90.00 50.00 28.00 90.00 28.00 50.00 90.00 0.00 50.00 90.00 52.00 0.00 90.00 52.00 29.12 90.00 29.12 52.00 90.00 0.00 52.00 90.00 54.00 0.00 90.00 54.00 30.24 90.00 30.24 54.00 90.00 0.00 54.00 90.00 56.00 0.00 90.00 56.00 31.36 90.00 31.36 56.00 90.00 0.00 56.00 90.00 0.00 50.00 90.00 -28.00 50.00 90.00 -50.00 28.00 90.00 -50.00 0.00 90.00 0.00 52.00 90.00 -29.12 52.00 90.00 -52.00 29.12 90.00 -52.00 0.00 90.00 0.00 54.00 90.00 -30.24 54.00 90.00 -54.00 30.24 90.00 -54.00 0.00 90.00 0.00 56.00 90.00 -31.36 56.00 90.00 -56.00 31.36 90.00 -56.00 0.00 90.00 -50.00 0.00 90.00 -50.00 -28.00 90.00 -28.00 -50.00 90.00 0.00 -50.00 90.00 -52.00 0.00 90.00 -52.00 -29.12 90.00 -29.12 -52.00 90.00 0.00 -52.00 90.00 -54.00 0.00 90.00 -54.00 -30.24 90.00 -30.24 -54.00 90.00 0.00 -54.00 90.00 -56.00 0.00 90.00 -56.00 -31.36 90.00 -31.36 -56.00 90.00 0.00 -56.00 90.00 0.00 -50.00 90.00 28.00 -50.00 90.00 50.00 -28.00 90.00 50.00 0.00 90.00 0.00 -52.00 90.00 29.12 -52.00 90.00 52.00 -29.12 90.00 52.00 0.00 90.00 0.00 -54.00 90.00 30.24 -54.00 90.00 54.00 -30.24 90.00 54.00 0.00 90.00 0.00 -56.00 90.00 31.36 -56.00 90.00 56.00 -31.36 90.00 56.00 0.00 90.00 Lid 8.00 0.00 102.00 8.00 4.48 102.00 4.48 8.00 102.00 0.00 8.00 102.00 16.00 0.00 96.00 16.00 8.96 96.00 8.96 16.00 96.00 0.00 16.00 96.00 52.00 0.00 96.00 52.00 29.12 96.00 29.12 52.00 96.00 0.00 52.00 96.00 52.00 0.00 90.00 52.00 29.12 90.00 29.12 52.00 90.00 0.00 52.00 90.00 0.00 8.00 102.00 -4.48 8.00 102.00 -8.00 4.48 102.00 -8.00 0.00 102.00 0.00 16.00 96.00 -8.96 16.00 96.00 -16.00 8.96 96.00 -16.00 0.00 96.00 0.00 52.00 96.00 -29.12 52.00 96.00 -52.00 29.12 96.00 -52.00 0.00 96.00 0.00 52.00 90.00 -29.12 52.00 90.00 -52.00 29.12 90.00 -52.00 0.00 90.00 -8.00 0.00 102.00 -8.00 -4.48 102.00 -4.48 -8.00 102.00 0.00 -8.00 102.00 -16.00 0.00 96.00 -16.00 -8.96 96.00 -8.96 -16.00 96.00 0.00 -16.00 96.00 -52.00 0.00 96.00 -52.00 -29.12 96.00 -29.12 -52.00 96.00 0.00 -52.00 96.00 -52.00 0.00 90.00 -52.00 -29.12 90.00 -29.12 -52.00 90.00 0.00 -52.00 90.00 0.00 -8.00 102.00 4.48 -8.00 102.00 8.00 -4.48 102.00 8.00 0.00 102.00 0.00 -16.00 96.00 8.96 -16.00 96.00 16.00 -8.96 96.00 16.00 0.00 96.00 0.00 -52.00 96.00 29.12 -52.00 96.00 52.00 -29.12 96.00 52.00 0.00 96.00 0.00 -52.00 90.00 29.12 -52.00 90.00 52.00 -29.12 90.00 52.00 0.00 90.00 Knob 0.00 0.00 120.00 0.00 0.00 120.00 0.00 0.00 120.00 0.00 0.00 120.00 32.00 0.00 120.00 32.00 18.00 120.00 18.00 32.00 120.00 0.00 32.00 120.00 0.00 0.00 108.00 0.00 0.00 108.00 0.00 0.00 108.00 0.00 0.00 108.00 8.00 0.00 102.00 8.00 4.48 102.00 4.48 8.00 102.00 0.00 8.00 102.00 0.00 0.00 120.00 0.00 0.00 120.00 0.00 0.00 120.00 0.00 0.00 120.00 0.00 32.00 120.00 -18.00 32.00 120.00 -32.00 18.00 120.00 -32.00 0.00 120.00 0.00 0.00 108.00 0.00 0.00 108.00 0.00 0.00 108.00 0.00 0.00 108.00 0.00 8.00 102.00 -4.48 8.00 102.00 -8.00 4.48 102.00 -8.00 0.00 102.00 0.00 0.00 120.00 0.00 0.00 120.00 0.00 0.00 120.00 0.00 0.00 120.00 -32.00 0.00 120.00 -32.00 -18.00 120.00 -18.00 -32.00 120.00 0.00 -32.00 120.00 0.00 0.00 108.00 0.00 0.00 108.00 0.00 0.00 108.00 0.00 0.00 108.00 -8.00 0.00 102.00 -8.00 -4.48 102.00 -4.48 -8.00 102.00 0.00 -8.00 102.00 0.00 0.00 120.00 0.00 0.00 120.00 0.00 0.00 120.00 0.00 0.00 120.00 0.00 -32.00 120.00 18.00 -32.00 120.00 32.00 -18.00 120.00 32.00 0.00 120.00 0.00 0.00 108.00 0.00 0.00 108.00 0.00 0.00 108.00 0.00 0.00 108.00 0.00 -8.00 102.00 4.48 -8.00 102.00 8.00 -4.48 102.00 8.00 0.00 102.00