Second Edition in C Bug List (July 1998) J. Foley, A. van Dam, S. Feiner, J. Hughes Computer Graphics: Principles and Practice, Second Edition in C Addison-Wesley, Reading, MA, 1995 ISBN 0-201-84840-6 ** Note: This bug list is for the "Second Edition in C" only. ** If your book's cover is not marked "Second Edition in C", you should ** use the "Second Edition (in Pascal)" bug list. Like the bug list for the original "Second Edition" (in Pascal), this bug list is divided into parts. Each part i applies to the 1st through i-th printings. Thus, if you have a 1st printing, you should check all parts of the list. You can tell which printing you have by matching the beginning of the bottommost line of your copy's page iv (the unnumbered page that contains the copyright notice) with one of these: Beginning of line Printing Applicable list parts 1 2 3 4 5 6 7 8 9 10 1st 1 ** Note: At this point, the authors have seen only the 1st printing, so ** there is only one part to the bug list. In the current list, ** this part is for the 1st printing and any other printing that ** may have been done since. Each entry in the bug list is preceded by its page number. Negative line numbers are counted up from the bottom of the last given part (page, section, para, bullet, column, figure caption, color plate caption, or exercise), where line -1 is the bottommost line of the part. Each paragraph is counted in our numbering scheme, including partial ones. If you find a bug that is not on this list (or a problem with the list itself), please tell us about it by sending email to graphtext@cs.brown.edu with a subject line of "Report-Text-Bug". Please indicate whether you are using the C version or the Pascal version of the book, and the printing. The current version of this list may be obtained by sending email to the same address with a subject of "Get-Text-Bug-List". ======================================================================== ++1 PART 1: CORRECTIONS TO 1ST PRINTING ONLY -- Preface -- Chapter 1 -- Chapter 2 46, para 3, line 1: Delete "in the device parameter" (since the device is now returned by the function itself). -- Chapter 3 115, line 1: "succesful" -> successful" 117, Fig. 3.41, line 6: Delete ";" after "ymax)" 123, Fig. 3.45, line 13: "else /* A new tL has been found */" -> "else if (t < tL) /* A new tL has been found */" 138, Fig. 3.59: Unfiltered half is too dark. -- Chapter 4 -- Chapter 5 217, para 1: Equation at end of paragraph is missing its number: "(5.48)". 227, Ex. 5.17, line 1: "5.4" -> "5.5" -- Chapter 6 234, Fig. 6.7: The unit cube's isometric projection should be be a regular hexagon. 235, Fig. 6.10(b): Each edge of the projected cube should have the same length. 250, Sec. 6.3.3 should be numbered Sec. 6.3.2. 253, Sec. 6.3.4 should be numbered Sec. 6.3.3. 258, para -2, line 2: "roman M" -> "italic M" 270, Fig. 6.54(a): Arrows for y = (v sub max - v sub min) / 2 and for y = -(v sub max - v sub min) / 2 should point to the view plane's top and bottom edges, not to the top and bottom of the back clipping plane. (This new bug resulted from an attempt to fix a similar bug in the Pascal edition. The old incorrect arrows previously pointed to the view volume's top and bottom planes and were incorrectly moved to point to the top and bottom of the back clipping plane, instead of the top and bottom of the view plane.) 275, para -1, line -3: "roman N" -> "italic N" 278, Section 6.5.5, line -4 (two lines before Eq. 6.54): "z sub z.min" -> "z sub v.min" -- Chapter 7 -- Chapter 8 354, line 1: "Green [GREE85]" -> "Greene [GREE85c]" -- Chapter 9 -- Chapter 10 -- Chapter 11 497, Eq. (11.43): In each term, swap the order in which the P and B factors appear (e.g., the first term becomes B sub (i-3,4) (t) dot P sub (i-3). [This is only for consistency with the other equations (e.g., Eq. 11.36) and is not strictly necessary since P and B are both reals.] -- Chapter 12 -- Chapter 13 -- Chapter 14 -- Chapter 15 650-720: "Visible-surface" -> "Visible-Surface" in even-page running head. -- Chapter 16 741, para 1, line -2: "an edge" -> "a polygon" -- Chapter 17 827, line -2 "[HECK86a] proposes" -> "[HECK89] describes" (and see change to p. 1130, below) -- Chapter 18 -- Chapter 19 942, para 1, line -1: "edges sides" -> "edge sides" 943, line -4: "cptr---a pointer" -> "a pointer" -- Chapter 20 -- Chapter 21 -- Appendix -- Bibliography 1129: Add after item HECK86b: HECK89 Heckbert, P.S., Fundamentals of Texture Mapping and Image Warping, M.S. Thesis, UCB CSD Technical Report 89/516, UC Berkeley, Berkeley, CA, 1989 -- Index 1154, col 2, entry "BSP tree": "Binary-partitioning" -> "Binary space-partitioning" -- Color Plates -- Dust Jacket From feiner@cs.columbia.edu Thu Jul 9 14:21 EDT 1998 Received: from cs.columbia.edu (cs.columbia.edu [128.59.16.20]) by cs.brown.edu (8.8.5/8.7.1) with ESMTP id OAA28632 for ; Thu, 9 Jul 1998 14:21:14 -0400 (EDT) Received: from ground.cs.columbia.edu (ground.cs.columbia.edu [128.59.16.101]) by cs.columbia.edu (8.9.1/8.9.1) with ESMTP id OAA16771 for ; Thu, 9 Jul 1998 14:21:13 -0400 (EDT) Received: (from feiner@localhost) by ground.cs.columbia.edu (8.8.5/8.6.6) id OAA07923 for jfh@cs.brown.edu; Thu, 9 Jul 1998 14:21:12 -0400 (EDT) Date: Thu, 9 Jul 1998 14:21:12 -0400 (EDT) From: Steven Feiner Message-Id: <199807091821.OAA07923@ground.cs.columbia.edu> To: jfh@cs.brown.edu Subject: Pascal errata Content-Type: text Content-Length: 69894 Status: RO Second Edition (in Pascal) Bug List (July 1998) J. Foley, A. van Dam, S. Feiner, J. Hughes Computer Graphics: Principles and Practice, Second Edition Addison-Wesley, Reading, MA, 1990 ISBN 0-201-12110-7 ** Note that this bug list is for the original "Second Edition" (in Pascal) ** only. If your book's cover is marked "Second Edition in C", you should ** use the "Second Edition in C" bug list. The bug list is divided into five parts. Each part i applies to the 1st through i-th printings, with the exception of part 5, which also applies to the 6th through 8th printings. Thus, if you have a 1st printing, you should check all five parts of the list; if you have a 5th through 8th printing, you should check only part five. The 5th through 8th printings all have the words "Revised Fifth Printing" on the dust jacket spine. Otherwise, you can tell which printing you have by matching the beginning of the bottommost line of your copy's page iv (the unnumbered page that contains the copyright notice) with one of these: Beginning of line Printing Applicable list parts ABCDEFGHIJ 1st 1,2,3,4,5 BCDEFGHIJ 2nd 2,3,4,5 3 4 5 6 7 8 9 10 3rd 3,4,5 4 5 6 7 8 9 10 4th 4,5 5 6 7 8 9 10 5th 5 6 7 8 9 10 6th 5 7 8 9 10 7th 5 8 9 10 8th 5 Each entry in the bug list is preceded by its page number. Negative line numbers are counted up from the bottom of the last given part (page, section, para, bullet, column, figure caption, color plate caption, or exercise), where line -1 is the bottommost line of the part. Each paragraph is counted in our numbering scheme, including partial ones. If you find a bug that is not on this list (or a problem with the list itself), please tell us about it by sending email to graphtext@cs.brown.edu with a subject line of "Report-Text-Bug". Please indicate whether you are using the C version or the Pascal version of the book, and the printing. The current version of this list may be obtained by sending email to the same address with a subject of "Get-Text-Bug-List". (Finally, please note that this list is large because it is intended to be exhaustive: Trivial grammatical errors are included side-by-side with the kinds of bugs that you're probably looking for!) ======================================================================== ++1 PART 1: CORRECTIONS TO 1ST PRINTING ONLY -- Preface xi, quote, lines 7-8: Delete "Interactive graphics packages that help make graphics programming rational and straightforward." xii, line 4: "packages" -> "package" xii, para 1, lines -2 to -1: "and through navigating information" -> "and navigating through information" xii, line -3: "fractal," -> "fractals," xiv, para 4, lines 4-5: "only form a" -> "only from a", "point of view form" -> "point of view from" xiv, para 5, line -2: "advanced modeling form" -> "advanced modeling from" xv, para 3, line 11: "Mide Kappel" -> "Mike Kappel" xv, para 3, line 15: "Rogert Scheifler" -> "Robert Scheifler" xv, para -2, line -2: "DaSilva" -> "Da Silva" xv, para -2, line 2: Add "Jenni Rodda," after "Hogan," -- Chapter 1 4, para 4, line 4: "(see Color Plate B)" -> "(see Color Plates I.15-I.16)" 6, para 1, line -4: "A, D, F" -> "D and F" 6, para 1, line -2: "I.11-I.13, C and G" -> "I.12, I.13, II.18, and G" 6, bullet 1, line 3: "I.9" -> "I.9, I.11" 7, para 5, line 2: "laid" -> "laid out" 7: Table 1.1: "Fig. 1.1" -> "Fig. 2.1", "Fig. 17.10" -> "Fig. 1.1", "II.38" -> "II.39" 10: Fig. 1.1: "cotroller" -> "controller", lines from "Lucy" should stop short of screen corners 13: Fig. 1.4(b) Right hand edge of door has arrow in wrong direction 13, line 4: "96 bits" -> "96 bits or more" 13, line 6: "12 bits per pixel requires 2.5" -> "24 bits per pixel requires 3.75" 13, footnote 1, line -1: "hidden-surface elimination" -> "visible-surface determination" 14, para 3, line -1: Add "(RIP)" after "image processor" 14, line -5: "causes" -> "can cause" 19, para 3, line -3: "intentionally here both" -> "intentionally here, both" 19, line -4: "tesselating" -> "tessellating" 20, para 2, line 3: "or can" -> "that can" 20, pseudocode, line 6: italicize "on selection" 20, pseudocode: insert bold "end" for case statement -- Chapter 2 28, para 1: In axis plotting code, replace the calls to SRGP_lineCoord with: SRGP_lineCoord (175, 200, 320, 200); SRGP_lineCoord (200, 140, 200, 280); 35: Fig. 2.11, line 3: "triangle_coords" -> "triangleCoords" 39, para 1, line -3: "menu buttons" -> "menu button" 49, Fig. 2.21: "START" should be "PLACE_BUTTON" 49, line -1: "see Section 7.13" -> "see Section 7.12" 55: Parameter to SRGP_inquireClipRectangle should be "rectangle", not "integer" 59, para -2, line 1: "inverts" -> "can be used to invert" 59, para -2, line 4: "leave xor mode, set and" -> "stay in xor mode and" 63, para 4, lines -2 to -1: "up by a noninteger factor or to scale down by any amount" -> "up or down properly" -- Chapter 3 79, footnote 5: "= 1/2" -> "lies exactly halfway between horizontal grid lines" 90, Fig. 3.21, line 1: "b : value" -> "b, value" 90, Fig. 3.21: In line before "while (y > 0)", "y" should be italic 95, Section 3.6.1, para 2: Replace paragraph with: "The algorithm above deals with shared vertices in a polygon, with edges shared by two adjacent polygons, and with horizontal edges. It allows self-intersecting polygons. As noted, it does not work perfectly in that it omits pixels. Worse, it cannot totally avoid writing shared pixels multiple times without keeping a history: Consider edges shared by more than two polygons or a y sub min vertex shared by two otherwise disjoint triangles (see Exercise 3.14)." 97, Fig. 3.26: Variable declarations are missing. Add before first "begin": "var x, y, numerator, denominator, increment : integer;" 98, step 3.1: "maintaining AET sort order" -> "then sort the AET" 98, step 3.6: Delete this step 99, line 3: "3.6" -> "3.1" 103, Fig. 3.30(g) caption: "opaquely" -> "transparently" 116, Fig. 3.41: italicize parameter "value" of procedure CohenSutherlandLineClipAndDraw, and parameter "code" of procedure CompOutCode. In CohenSutherlandLineClipAndDraw, "code + [TOP]" -> "[TOP]", "code + [BOTTOM]" -> "[BOTTOM]" 128, Fig. 3.49: In parameter list to procedure Intersect, "edge :" -> "edge;", "i" in "intersectPt" should be italic 128, Fig. 3.49, line -3: Add ";" after right parenthesis 134, para 2, line 1: "1, 2" -> "2, 1" 134, para 2, line 2: "1, 3" -> "2, 2" 134, para 2, line 2: "1, 4" -> "2, 3" 143, Exercise 3.14, line 1: "from polygons" -> "or written multiple times" -- Chapter 4 180, para 3, line 1: "Standards" -> "System" 198, Exercise 4.10: In table, "milliseconds" -> "microseconds" (2 times) 207, Fig. 5.6: Replace with figure but not caption of Fig. 5.7. Line 1 of caption: "45" -> "-45" 208, Fig. 5.7: Replace with figure but not caption of Fig. 5.8. Caption is correct. 209, Fig. 5.8: Replace with figure but not caption of Fig. 5.6. Caption is correct. -- Chapter 5 -- Chapter 6 243, Fig. 6.24 caption: "from 0 to 16 in z" -> "from 0 to 16 in x" 242, line 4: "Chapters 14-16" -> "Chapter 15" 253, para 2, line 11: "F" -> "F(VRC)" and shouldn't be indented 253, para 2, line 12: "B" -> "B(VRC)" and shouldn't be indented 278, para 4, line 4: delete "lower-left", "(-1, -1, 0)" -> "(-1, -1, -1)" 278, para 4, line 5: "(1, 1, 0) -> "(1, 1, 1)" 278, Eq. (6.54): "(1, 1, 0) -> "(1, 1, 1)" -- Chapter 7 293, running head: "Grapics" -> Graphics 297, para 1: In polyhedron specification, add ", z sub 1" after "y sub 1" and add ", z sub 2" after "y sub 2" 300, para 4, lines 4-6: "view volume, which is an orthographic projection with the direction of projection along the z axis and a cross-section covering a square region of the (x, y) plane with corners at (0, 0, 0) and (1, 1, 0)." -> "view having the volume depicted in Fig. 6.25(b), with the front and back planes at z = 0 and z = -infinity, respectively." 301, Fig. 7.6: "{Clipping planes in Z}" -> "{Clipping planes}" 303, line 7: "two terminal-emulator programs" -> "a terminal emulator program" 309, Fig. 7.12: Arguments to "SPH_postRoot" should be "STREET_STRUCT, 0" 309, running head: "Hierarchial" -> Hierarchical" 311, running head: "Hierarchial" -> Hierarchical" 311, Section 7.5.3 title: "the Four-Level Robot" -> "the Robot" 313, running head "Hierarchial" -> Hierarchical" 315, line 5: "paralleleipipeds" -> "parallelepipeds" 317, para 3, line -2: "level-1" -> "level-2" 317, para 4, line 1: "T sub arm <- thumb" -> "T sub arm <- th" 317, para 4, line 2: "level-1" -> "level-2" 317, para 4, line 3: "level-2" -> "level-3" 317, para 4, line -1: "level-1" -> "level-2" 318, Fig. 7.17 caption, line 1: "two-level" -> "three-level" 321, Fig. 7.20: Chimneys on rightmost two houses should be the same color as the chimney on the leftmost house 330, Fig. 7.24, line 6: Add ", etc." after "execute-structure" 335, para 3, line -1: Delete "[BAUD83]" 342, Section 17.14.2 title: "Pasing" -> "Passing" 343, running head: "Hierarchal" -> "Hierarchical" -- Chapter 8 348, para 4, line -3: "Hollins" -> "Hollan" 356, Fig. 8.2: Swap captions for (a) and (b) 356, Fig. 8.3: "data glove" -> "DataGlove" 386, para 2, line -2: "oftern" -> "often" -- Chapter 9 -- Chapter 10 -- Chapter 11 487, Fig. 11.16 caption, line 1: "bicubic" -> "cubic", "segements" -> "segments" 505, Fig. 11.32: Move point P sub 0 so line segment P sub 0 P sub 2 is parallel to tangent line at P sub 1 -- Chapter 12 543, line -5: "G is number" -> "G is the number" 546, Sec. 12.5.3, para 2, line 1: "One approach, based on [LAID86], is first to inspect the polygons in both objects, splitting them if necessary to ensure that no two polygon interiors intersect." -> "One approach [LAID86] is to inspect the polygons of both objects, splitting them if necessary to ensure that the intersection of a vertex, edge, or face of one object with any vertex, edge, or face of another, is a vertex, edge, or face of both." 556, Fig. 12.26(a): Continue gray line "h" until it meets line "e". Add gray line along line "i" (the right edge of the hole). Move letters "h" and "i" up a little to be unambiguously near the lines they label. All black lines should be same weight. -- Chapter 13 568, para 2, line -1: "150" -> "110" 589, Eq. (13.33): Use these more accurate values in the matrix: 0.299 0.587 0.114 0.596 -0.275 -0.321 0.212 -0.528 0.311 596, Fig. 13.37, line 4: "n1, n2, hue" -> "n1, n2, hue: real" 596, Fig. 13.37, line 8: "if" -> "else if" 596, Fig. 13.37, line 10: ">" -> "<" 596, Fig. 13.37, line 15: "n2 - 1" -> "n2 - n1" 596, Fig. 13.37, line 23: move line left, flush with "else" two lines above 601, para 3, line -2: "Gourard" -> "Gouraud" -- Chapter 14 612, Sec. 14.4, line 6: "Section 2.17" -> "Section 3.17" 613, Sec. 14.4.4, line -1: "Section 6.7" -> "Section 16.2" 615, Sec. 14.5, line 6: Add "(Color Plate IV.25)" after "tedious to do by hand" 618, Fig. 14.8(c) caption, line 1: Italicize alpha. 622, para 2, line 1: "Chapter 2" -> "Chapter 3" 626, Fig. 14.15 caption: Add at end of part (c): "The DC value in the frequency domain is truncated to make the other values legible and should be 129." 628, para 1, line -1: "affects" -> "often affects" -- Chapter 15 654: Fig. 15.4: "image-space" -> "image-precision" 654: Fig. 15.5: Figure should be drawn from same viewpoint as Figs. 15.1, 15.2, and 15.6. If current viewpoint were correct, then p. 654, line -2 should say "sixth" not "seventh" 657, Sec. 15.2.1, bullet 3: "penetrates a face" -> "penetrates a visible face" 663, Fig. 15.17: Line "e" should be black, not gray 669: Fig. 15.21, line -6: "{New point is not further}" -> "{New point is not farther}" 676, para 2, line 7: "frontmost face" -> "the frontmost face" 676, Fig. 15.29: "SUTH74a.]" -> "SUTH74a]." 686, Fig. 15.41 caption, line 1: "object-space" -> "object-precision" 686, Sec. 15.7, line 1: Italicize "Area-subdivision" 710, para 2, line 6: "in 2D Fig." -> "in 2D in Fig." 715, line 3: "Section 16.13" -> "Section 16.12" 717, Fig. 15.67 caption, line 2: Add to end, "(After [FIUM89].)" 720, line -1: Add the following exercise: "15.25 If you have implemented the z-buffer algorithm, then add hit detection to it by extending the pick-window approach described in Section 7.12.2 to take visible-surface determination into account. You will need a SetPickMode procedure that is passed a mode flag, indicating whether objects are to be drawn (drawing mode) or instead tested for hits (pick mode). A SetPickWindow procedure will let the user set a rectangular pick window. The z-buffer must already have been filled (by drawing all objects) for pick mode to work. When in pick mode, neither the frame-buffer nor the z-buffer is updated, but the z-value of each of the primitive's pixels that falls inside the pick window is compared with the corresponding value in the z-buffer. If the new value would have caused the object to be drawn in drawing mode, then a flag is set. The flag can be inquired by calling InquirePick, which then resets the flag. If InquirePick is called after each primitive's routine is called in pick mode, picking can be done on a per-primitive basis. Show how you can use InquirePick to determine which object is actually visible at a pixel." -- Chapter 16 723, para 2, line -1: "illumination of ambient light" -> "illumination by ambient light" 727-728: Subscript o of z and s should be lower-case letter o, not zero. 737, line 4: "patch crack" -> "patch cracks" 738, para 2, line -1: Add "Compare the highlights on the ball in Color Plates II.31 and II.32." after "16.21d)." 752-753: Subscript o of x, y, and z should be lower-case letter o, not zero. 763, para 2, line 2: "also must be taken into account" -> "must instead be taken into account" 766, Fig. 16.42(c) caption, line 2: "Interception" -> "interception" 772: Fig. 16.49: Dark gray umbra volume slice is too large. Should be only the bottom half of that shown, as described below. Three black edges are also incorrectly obscured by the oversized umbra slice: two emanate from the polyhedron's front top left vertex; the other has an arrowhead and passes from the left to the right side of the umbra slice (this line should be the top edge of the correct umbra slice). 783, Fig. 16.57(b): Lengthen lines "B" and "H" to intersect gray area. 812, para 2, line 4: "parallel to it (s,t)" -> "parallel to its (s,t)" 813, Exercise 16.5, lines 1-2: "an reflection" -> "a reflection" (2 places) -- Chapter 17 818, para 3, sentence 2: replace "fifth" with "sixth" and "sixth" with "seventh" 825, Fig. 17.7: Add caption pointing to polygon in right half, saying "Target polygon." 825, Fig. 17.7: Reduce the size of the rectangle bounding the filter. 825, Fig. 17.8: Add square around circle, extend arrow on "convolution mask" label to actually touch the circle. 825, line -1: "our case" -> "Fig. 17.9" 829, Fig. 17.13: Add "(Courtesy of George Wolberg, Columbia University.)" to caption. Delete braces labeled "a" and "b". 840, lines 10-11: "atop" -> "over" (2 times) 844, para 3, lines 3-5: Replace last sentence with, "However, some methods of image compression do treat the image as a 2D array, such as the quadtree and fractal encoding schemes described later, so separation into channels is inappropriate." 852, Exercise 17.6, line 2: Delete "and so on" 853, Exercise 17.10, part a, line 1: "mapped" -> "mapped linearly" -- Chapter 18 864, para 1, line 2: "Section 3.3.2" -> "Section 3.2.2" 864, para 2, line 4: "Section 3.4.2" -> "Section 3.3.2" 869, Sec. 18.3.5, para 2, line 4: "signficant" -> "significant" 871, para 2, line -4: "Section 16.8.2" -> "Section 16.2.5" 883, para 4, line 4: "downward" -> "upward" 886, line 1: First line of page is missing. Insert "contribute to the current scan line, most scan-line algorithms require primitives to be" 888, line -4: "a, b, c, d, f, g, and h" -> "a, b, c, d, g, and h" 888, line -3: "e, i j, k, l, m, n, o, and p" -> "e, f, i, j, k, l, m, n, o, and p" 890, para 6, line 3: "four times as many chips are needed" -> "512 chips are still needed, even though each one contains sixteen times the memory actually required" 890, para 6, line -2: "Four-Mbit DRAM" -> "Some 4-Mbit DRAM" 920, Exercise 18.1, line 1: "Section 5.5" -> "Section 5.6" -- Chapter 19 940, Fig. 19.19 (a) caption: "vertical" -> "more vertical" 942, Fig. 19.21: Remove "^" from dcl of "contourPtr" field of "edge" 954, Fig. 19.32, line -2: "if" -> "if . . ." 957, para -2, line -2: "see" -> "see Exercise 19.14 and" 962, para 2, line 5: Change "along . . . line" from italic to roman. 969, para -1, line 2: "small region near" -> "small region (i.e., a region contained in a disk of radius 2) near" 969, para 3, line 3: "Then," -> "Then" 981, Fig. 19.55, declarations in BoundaryFill procedure: The "y" should have a blank after it, as should "newValue" 981, Fig. 19.55, line 2: The "y" should be italic, and have a blank after it. 993, line -3: "unions of" -> "as a union of" 1008, Exercise 19.17, line 3: "lie" -> "line" -- Chapter 20 1038, para 2, line 1: "Dreben" -> "Drebin" 1040, para 1, line -3: "same face" -> "top face" 1040, footnote 7, line 1: "animator" -> "modeler" -- Chapter 21 1067, Section 21.2.3, para 2, line 7: Add "(or any other attribute)" after "representation of the motion" 1068, DIAL script: "block.d" (line 2) and "r1" (line -1) are set in wrong font -- Appendix 1084, para 1, line -2: Break to new line before last left paren on line 1092, Fig. A.4 caption: "v and w" -> "u and v" 1094, answer to exercise, line -3: "If it were" -> "If the set were" 1108, Section A.6, para 1, line -3: After "eigenvalue," add "and lambda is a real number," 1110, para 3, line 1: "fhappens" -> "f happens" 1110, para 5, line 1: "from the points" -> "from the point" 1112, Exercise A.7, line 4: "v sub 3 dot w sub 1 cross w sub 2" -> "v sub 3 dot ( w sub 1 cross w sub 2 )" -- Bibliography 1121, item CATM74a: "CATM74a" should be roman 1121: item CGA82: Add "N. Badler, ed.," 1123, item DASI89: "DaSilva" -> "Da Silva" 1123, item DREB88: "Dreben" -> "Drebin" 1123, item DUVA90: Add authors "W.E. Robbins, R.S. Gyurcsik". Delete "to appear in". After "July 1990", delete "." and add ", 36 - 45, 98 - 100." 1124: Add before item FLEC87, FIUM89 Fiume, E. L. The Mathematical Structure of Raster Graphics, Academic Press, San Diego, 1989. 1125: Add before item FRAN81, FOUR88 Fournier, A. and D. Fussell, ``On the Power of the Frame Buffer,'' ACM TOG, 7(2), April 1988, 103-128. 1130: Replace item HUBS81 with HUBS82 Hubschman, H. and S.W. Zucker, ``Frame-To-Frame Coherence and the Hidden Surface Computation: Constraints for a Convex World,'' ACM TOG, 1(2), April 1982, 129-162. 1137, item MYER84: "Myer" -> "Myers" 1137, item MYER85: "Myer" -> "Myers" 1138, item NAYL90: "Trees: An Alternative" -> "Trees as an Alternative" "22(2), March 1990" -> "22(4) May 1990, 250-253" 1145, item SKLA90: ", Simple PHIGS" -> "(Simple PHIGS)", "April" -> "August" 1145: Add before item SPAR78, SNYD87 Snyder, J.M. and A.H. Barr, ``Ray Tracing Complex Models 1146: Add before item TAMM84, TAMM82 Tamminen, M. and R. Sulonen, ``The EXCELL Method for Efficient Geometric Access to Data,'' in Proceedings of the 19th ACM IEEE Design Automation Conference, Las Vegas, June 14-16, 1982, 345-351. Containing Surface Tessellations,'' SIGGRAPH 87, 119-128. -- Index 1154, col 1, entry "Attribute": Add ", 18, 19" 1155, col 1, entry "Cathode-ray tube": "639" -> "641" 1156, col 2, entry "Computer-aided design": Add "7," after "5," 1156, col 2, entry "Constructive solid geometry": Add "560" after "559" 1157, col 1, entry "Convolution": "630" -> "629-633" 1157, col 1, entry "Convolution, graphical": "631" -> "632" 1157, col 1, entry "CSG": "Constructed" -> "Constructive" 1157, col 2, entry "DC": "626" -> "625" 1158, col 1: entry "Discrete Fourier transform": "626" -> "625" 1158, col 2, entry "Domain, frequency": "624" -> "623" 1158, col 2, entry "Domain, spatial": "624" -> "623" 1159, col 1, entry "Event": Add "20" 1159, col 1, entry "Event queue": Add "42," before "437-440" 1159, col 2, entry "F(u)": "624" -> "625" 1159, col 2, entry "f(x)": "624" -> "625" 1159, col 2, entry "Film recorder": "639" -> "641" 1159, col 2, entry "Filter, Bartlett": "639" -> "637" 1159, col 2, entry "Filter, box": "635" -> "636" 1159, col 2, entry "Filter, Gaussian": "630, 636" -> "635, 641" 1159, col 2, entry "Filter, triangle": "636" -> "635" 1159, col 2, entry "Filtering": "629" -> "628" 1160, col 1, entry "Fourier analysis": "624" -> "625" 1160, col 1, entry "Fourier transform": "624" -> "625" 1160, col 1, entry "Fundamental frequency": "624" -> "623" 1160, col 2, entry "Gibbs phenomenon": "633" -> "633-634" 1160, col 2, entry "Harmonic": "624" -> "623" 1161, col 1, entry "Hidden surface elimination": "Hidden surface" -> "Hidden-surface", "Visible surface" -> "Visible-surface" 1161, col 1, entry "Hidden line elimination": "Hidden line" -> "Hidden-line", "Visible line" -> "Visible-line" 1161, col 1, entry "i": "624" -> "625" 1162, col 1, entry "Interaction handling": Add "20" 1162, col 1, entry "Inverse Fourier transform": "626" -> "625" 1162, col 2, entry "Jaggies": Delete "-629" 1162, col 2, entry "LCD": "639" -> "641, see also Liquid crystal display" 1163, col 1, entry "Locator": Add "20," before "917" 1163, col 2, entry "Mandrill, smiling face of": "618" -> "619" 1165, col 1, entry "Output primitives": Add "18, 19" 1166, col 2, entry "Postfiltering": "643" -> "642" 1166, col 2, entry "Prefiltering": "643" -> "642" 1167, col 2, entry "Random scan": Add "9," before "12" 1167, col 2, entry "Rastering": "639" -> "641" 1168, col 1, entry "Reconstruction": "618" -> "619" 1168, col 1, entry "Reconstruction, sample and hold": "639" -> "641" 1168, col 1, entry "Reflection": Add ", Specular reflection" after "direction of reflection" 1169, col 1, entry "Sample and hold": "639" -> "641" 1169, col 1, entry "Sampling": "618" -> "619" 1169, col 1, entry "Sampling, area sampling": "622-624" -> "621-623" 1169, col 1, entry "Sampling, point sampling": "621-622" -> "619-621" 1169, col 1, entry "Sampling, sampling theory": "622, 624-629" -> "621, 623-628" 1169, col 1, entry "Sampling, unweighted area sampling": "622" -> "621" 1169, col 1, entry "Sampling, weighted area sampling": "623" -> "622" 1170, col 1, entry "Signal, frequency spectrum": "624" -> "623" 1170, col 2, entry "Sinc function": "631" -> "632-635" 1171, col 1, entry "Specular reflection, coefficient of": Indent under entry "Specular reflection" 1171, col 1, 2nd occurrence of entry "Specular reflection": Remove top level entry so subentries are under entry "Specular reflection" 1171, col 1, entry "Square wave": "625" -> "626" 1171, col 2, entry "Stochastic sampling": Add "788-791" 1172, col 1, entry "Supersampling": "621" -> "620" 1172, col 1, entry "Supersampling, adaptive": "646" -> "643-644" 1172, col 1, entry "Supersampling, stochastic": "646" -> "644-645, 788-791" 1172, col 1, entry "Support, of filter": Add "631" 1172, col 1, entry "Surface detail, texture mapping": Add "800" 1172, col 1, entry "Surface patch, cracks": Add "737" 1172, col 1, entry "Surface patch, patch cracks": Delete entry 1172, col 2, entry "Texture mapping": "800" -> "See Surface detail" 1173, col 1, entry "Trigger": Add "42," before "436-439" 1174, col 1, entry "Video signal": "639" -> "640" 1174, col 1, entry "View": Add "19" 1174, col 1, entry "Visible-surface depth-sort, formalization": Delete entry 1174, col 1, entry "Visible-surface determination": Add subentry "formalization, 717-718" 1174, col 2, entry "Weiler-Atherton algorithm": "691" -> "693" 1174, col 2, entry "X Windows System": "Windows" -> "Window" 1174, col 2, entry "z-Buffer": Add "algorithm" after "Buffer", add "716" after "698" 1174, col 2, entry "z-Buffer, algorithm": Delete entry 1174, col 2, entry "Zoom": Add "182, 362" 1174, col 2, entry "Zooming": Delete entry -- Color Plates Color Plate A: "Herbert" -> "Lilac" Color Plate I.15 caption, line 1: "data glove" -> "DataGlove" (2 times) Color Plate I.18 caption, line 1: "A tablet-based menu" -> "Tablet-based menus." Color Plate I.25 caption, line 3: Add acute accent on penultimate "e" of "Doree" Color Plate II.2 caption line 3: "graphics arts" -> "graphic arts" Color Plate II.35 caption, line 1: Add "17.4.2," after "16.3.2" Color Plate III.2 caption, line -4: "Cook-Torrance illumination model (Section 16.7) is" -> "Reflection mapping (Section 16.6) and Cook-Torrance illumination model (Section 16.7) are" Color Plate III.20(a): Flip image so that red side is on the left Color Plate IV.3 caption, line 2: Add at end, "IBM T.J. Watson Research Center" Color Plate IV.7: In caption, "(a-e)" -> "(a-d)". Relabel part (e) as part (a) of Color Plate IV.8. Color Plate IV.8: In caption, "A hypertextured blob" -> "(a) A hairy donut modelled with hypertextures. (b) A hypertextured blob." Relabel current image as part (b). ======================================================================== ++2 PART 2: CORRECTIONS TO 1ST & 2ND PRINTINGS -- Preface iii (second title page), line 5 (as of 1/1/91): "The George Washington University" -> "Georgia Institute of Technology" xiv, para 6, line 4: "and then cover the key Chapters 13" -> "Chapter 13 on color, and then cover the key Chapters 14" -- Chapter 1 5, bullet 1, lines -2 to -1: "typesetting, drawing, and page-layout software" -> "typesetting and drawing software" 12, para 2, line 4: "1204 pixels each must" -> "1024 pixels each, must" 13: Fig 1: "20 percent black screen" -> "light gray shade" -- Chapter 2 42, para 3, line 3: "then examine SRGP's" -> "and then examine SRGP's" 45, line 4 of code at top: "Typically 3" -> "Typically 1..3" 47: parameter of SRGP_getKeyboard() should be a VAR parameter 47: parameter of SRGP_getLocator() should be a VAR parameter 49, Fig 2.21, line -8 [2nd printing only]: "'if" -> "if" -- Chapter 3 88, para 3: period at end of equation should be roman. 88, para 3, line -2: "if," -> "if" 90, Fig. 3.21, line -16 [2nd printing only]: italicize "y" in condition 110, Fig. 3.37: Background should be white to make pen style obvious 129, Fig. 3.49, line 2: "t" in "then" should be boldface. 130, Fig. 3.52: "end"s do not line up properly. 136, para 1, line 7: Subscript "s" is too small. 137, Fig. 3.58: Cone in figure is not drawn with a base whose diameter is 2 grid units, as is claimed in text. 138, Fig. 3.59 caption: "front" -> "left", "rear" -> "right" 141, Fig. 3.62, line -17: "x" in last "dx" should be italic. -- Chapter 4 176, para 4, lines 9-10: "preceeded" -> "preceded" (2 times) 176, para 5, line 1: "the the" -> "the" -- Chapter 5 207, para 3, line 4: "45" -> "-45" 213, Eq. (5.36), line 2: "r sub 21" -> "r sub 22" 220, line 3: "Fig 5.12" -> "Fig 5.16(b)" 223, lines 7-8: "S(2, 2) dot T(2, 3)" -> "T(2, 3) dot S(0.5, 0.5)" (2 times) 226, Exercise 5.3: ", and that otherwise they do not." -> " or if theta = n pi for integral n, and that otherwise they do not." -- Chapter 6 229, line -2: "hidden-surface removal" -> "visible-surface determination" 241, line -2: "v sub min" -> "v sub max" 252, line -4: "PRP = (...)" -> "-PRP = -(...)" 253, para 2, lines 11-12 [2nd printing only]: Don't indent "F(VRC)", "B(VRC)" 263, Fig. 6.47(e), left part: Move x-axis down to be coincident with u-axis. Remove portion of z-axis within rectangle (above u-axis and new x-axis). Shade in entire rectangle, as in part (d). 270, Fig. 6.54, right part: "y = z" -> "y = -z", "y = -z" -> "y = z" 272, line -2: "procedure Clipt" -> "procedure CLIPt" 274: Fig. 6.55: Change all occurrences of "Clipt" in code and caption to "CLIPt" 276, line 1: "1 -1" -> "1, -1" 277, Fig. 6.58 caption, line 1: "lines" -> "line" 278, para 3, line -3: "hidden surface removal" -> "visible-surface determination" -- Chapter 7 285, line -4: "PHIGS'" -> "PHIGS's" 285, footnote 1: "Chapter 14" -> "Chapters 14-16" 288, para -2, line 3: "of computer" -> "of a computer" 300, para 3, line -5: "600" -> "599" 300, para 3: replace "Typically, an......Section 7.10.)" with this: For portability, an application should not use NPC space lying outside the unit cube; often, however, the benefits of taking full advantage of a nonsquare screen shape are worth the portability cost." 301, Fig. 7.6 [2nd printing only]: "{Clipping planes n}" -> "Clipping planes" 306, Fig. 7.9: Remove horizontal dashed line labeled "3". Add minus signs in front of horizontal line labels "1" and "2". Remove label "0" from horizontal dashed line on x axis. 308, Section 7.5.1, line 4: "with template-" -> "with the template-" 328, Section 7.10, line 1: "SPHIGS'" -> "SPHIGS's" 341, running head: "Hierarchal" -> "Hierarchical" 346, Ex. 7.10: "within P pixels" -> "within P pixel widths" -- Chapter 8 -- Chapter 9 410, para 2, line -1: "KURL89" -> "KURL90" -- Chapter 10 440, para 5, line 1: "X Window" -> "the X Window System" 441, para 3, line 2: "X Window" -> "the X Window System" 441, para 5, line 3: "X Window" -> "the X Window System" 444, para 3, line 3: "NeWS also supports" -> "NeWS and X also support" 447, Sec. 10.4, para 2, line 1: "Section 9.1" -> "Section 10.1" 448, para 1, line -2: "Section 9.1" -> "Section 10.1" 448, para 4, line 4: "NeWS supports" -> "NeWS and X support" 452, para 1, lines 6-7: "X Window and NeWS" -> "X and NeWS" 452, para 2, line 6: "X Window" -> "X" 455, Fig. 10.16, line 5: "points (*Name = 'Point Size')" -> "points (*Name = 'Point Size'*)" 456, Fig. 10.17, line 8: "File Name = Close" -> "File Name = 'Close'" 456, Fig. 10.17, line 10: "File Name = Save" -> "File Name = 'Save'" 465, para 3, lines 7-9: Move "[OLSE86]" ref up to follow "Olsen's MIKE system" -- Chapter 11 484, Eq. (11.18), column vector: "P sub 1, P sub 2, R sub 3, R sub 4" -> "P sub 1, P sub 4, R sub 1, R sub 4" 485, Fig 11.13 caption, last line: "(far right" -> "(far right)" 488, Fig 11.19: points in both parts of figure should be numbered P sub 1 through P sub 4, instead of P sub 0 through P sub 3 494, Eq. (11.36), line 3: The minus sign between the P sub i-2 and P sub i-1 polynomials should be a plus sign. There should be a minus sign in front of the 3 t sup 3 term of the P sub i-1 polynomial 497, para -2, line 3: "11.34" -> "11.44" 505, para 2, lines 2 and 3, and para 3, line 3: "G sup i sub Bs" -> "G sub Bs sub i" 519, para 2, line 2: Remove "4 x 3" 522, Eq. 11.88: "t" -> "s" in first two denominators 523, Eq. 11.89: "s" -> "t" in first two denominators -- Chapter 12 534, Fig. 12.1(b): Reposition points I and J so that JC is collinear with CG and of equal length, and IB is collinear with BF and of equal length. Then, "(2, 0, -.5)" -> "(1, 0, -1)", "(2, 1, -.5)" -> "(1, 1, -1)". 559, bullet 4, line 3-5: "BSP trees . . . octree representation," -> "In contrast, any BSP tree represents a valid spatial set, but not necessarily a bounded solid. Only simple local syntactic checking needs to be done to validate a CSG tree (which is always bounded, if its primitives are bounded) or an octree," -- Chapter 13 -- Chapter 14 621, Sec. 14.10.2, lines 2-3: "the area of a square centered about each grid point and selecting its" -> "a square centered about each grid point, dividing by the square's area, and using this" 621, Sec. 14.10.2, line 4: "Chapter 2" -> "Chapter 3" 623, Sec. 14.10.3, para 2, lines 2-3: Italicize "harmonics" and "fundamental" 625, para -2, line -2: "f(x).If" -> "f(x). If" 626, Fig. 14.15: Right-hand side of part (b) should have only 5 (not 6) dotted horizontal lines, as do the other parts. Right-hand side of part (c) should have magnitude labels ranging from 0 to 32 (not 0 to 120). 627, para 2, lines 4, 5, 13: "Nyquist frequency" -> "Nyquist rate" (3 times) 627, Fig. 14.16 caption, line 1: "Nyquist frequency" -> "Nyquist rate" 629, Eq. (14.7), line 1: Insert space before "k," 632, lines 5-6: "The product f(tau)g(x - tau), shown as" -> "The integral, with respect to tau, of the product f(tau)g(x-tau), which is the area of" 632, para 2, line 3: "function and" -> "function, which" 632, Fig. 14.22 (e) and (f) captions, lines 2-3: "f(tau)g(x - tau)" -> "integral from -infinity to +infinity f(tau)g(x - tau) d tau" (2 times) 637, line 1: "at a regular" -> "at regular" 637, line 2: "Fourier" -> "(discrete) Fourier" 642, Fig. 14.31 caption, line 1: "Nyquist frequency" -> "Nyquist rate" 647, Exercise 14.3, line -1: "region." -> "region. (Apply the inverse Fourier transform to your answer. You should get the original function.)" 647, Exercise 14.4, line 1: "filter" -> "filter of width 2" 647, Exercise 14.4, line 2: "samples." -> "samples. What happens if the filter is wider?" -- Chapter 15 669, Fig. 15.21, line 8: "WritePizel" -> "WritePixel" 677, line -1: "viewpoint" -> "environment" 711, line -2: "internal nodes either are" -> "internal nodes are either" 720, Exercise 15.25, line 4 [2nd printing only]: "pink mode" -> "pick mode" -- Chapter 16 757, Eq. (16.31): Missing right paren after equation number. 773, para 2, line -1: "object." -> "object. A BSP-tree-based approach is discussed in [CHIN90]." 778, para 1, line -1: Add final sentence "(Note that your incident ray may be oppositely oriented to those in these sections.)" 784, para 3, line 1: "also mentions" -> "also mention" 789, para 2, lines 2-3: "Nyquist frequency" -> "Nyquist rate" (2 occurrences) 790, Fig. 16.61 caption, line 2: "Nyquist frequency" -> "Nyquist rate" 797, Fig. 16.67: Square d A sub i should be at the center of the hemicube base. -- Chapter 17 825, Fig. 17.7 [2nd printing only]: The parallelogram base surrounding the filter in the upper left should be drawn solid, not dashed. In the right-hand grid, the square surrounding the convolution mask should be drawn solid, not dashed. 829, Fig. 17.13: Crop black background parts (b-c) 831, para -1, line 2: "WOLB88" -> "WOLB90" -- Chapter 18 868, Sec. 18.3.3, para 2, line 2: "If a perspective transformation is to be applied ... [end of paragraph]" -> "In general, the bounding planes will not be aligned with the coordinate axes. Each test of a vertex against a bounding plane requires 4 multiplications and 3 additions (the dot product of a homogeneous point with a 3D plane equation). A total of 6 dot 4 = 24 multiplications and 6 dot 3 = 18 additions are required per vertex." 869, Sec. 18.3.5, para 1, line -2: "a factor of two" -> "25 percent", "8" -> "12", "6" -> "9" 872, Geometry calculations, para 2, lines 2-5: "18" -> "24", "14" -> "18", "30,000 dot 16 = 540,000" -> "30,000 dot 24 = 720,000", "30,000 dot 14 = 420,000" -> "30,000 dot 18 = 540,000" 873, para 1, lines 2-4: "2,040,000" -> "2,220,000", "1,350,000" -> "1,470,000", "20.4" -> "22.2", "13.5" -> "14.7", and "33.9" -> "36.9" 873, para 2, line 6: "from the frame buffer, a new z value is written, and a new color is written (3 frame-buffer cycles)" -> "from the frame buffer (1 frame-buffer cycle), the z values are compared (1 subtraction), and new z values and colors are written (2 frame-buffer cycles)" 873, para 2, line -3: "and a z value is read from the frame buffer (1 frame-buffer cycle)" -> "a z value is read from the frame buffer (1 frame-buffer cycle), and the two z values are compared (1 subtraction)" 873, para 3, line 5: "(750,000 dot 4) + (250,000 dot 1) = 3.25" -> "(750,000 dot 5) + (250,000 dot 2) = 4.25" 873, para 3, line -2: "32.5" -> "42.5" 883, para 4, line -1: Delete ", although they are really reciprocal slopes" 920, para 1, line -1: "flight-stimulation" -> "flight simulation" 920, Exercise 18.2, line 6: "Section 18.3.8" -> "Section 18.3.9" 921, Exercise 18.3, line 1: "Section 18.3.8" -> "Section 18.3.9" -- Chapter 19 927, Fig. 19.4: diagonal lines should pass through the corners of the rectangle exactly 928, Fig. 19.5, line 4: Reduce pointsize of "var P, Q : point" 952, Fig. 19.29: Line up comment on declaration of deltaSE 953, line after 1st displayed equation: "- P" -> "-P" 953, line after 3rd displayed equation: "new conic" -> "new conic," 954, para 3, line 2: "u sub i + 1" -> "u sub {i + 1}"; "v sub i + 1" -> "v sub {i + 1}" -- i.e., each "+ 1" should be in the subscript 969, para -1, line 2 [2nd printing only]: "dish" -> "disk" 993, para -2, line -1 [2nd printing only]: "union" -> "a union" 995, Fig. 19.67, line 12 of text: Insert blank between "while" and "(" 1006: Exercise 19.3, line 1: "Barksy" -> "Barsky" -- Chapter 20 1021, para 2, line -1: "20.5" -> "20.5(a)" 1021, footnote 3, line 3: "(a + c) - (b + d)i" -> "(a + c) + (b + d)i" 1028, line -1: "called called" -> "called" 1039, para 2, line 1: "Color Plate IV.1" -> "Color Plate I.1" 1039, para 2, line 2: "human body" -> "child's head" 1047, Section 20.8.4, para 1, line 11: "Nishita" -> "Nishimura" -- Chapter 21 1066, line 4: ";" -> ":" 1068, DIAL script: Each character, including blanks and "-", should be set with constant width, so they line up in columns -- Appendix 1111, Exercise A.1, line 2: "light ray" -> "ray from the light" 1111, Exercise A.1, line 3: "direction vector" -> "direction vector u" ("u" should be bold) 1111, Exercise A.1, answer, line -1: Add at end: "(Note that the light ray is the opposite of the ray L bar in Chapter 16.)" 1112, Exercise A.6, part a, line 3: Surround answer with "1/2( )" 1112, Exercise A.6, part b, line 2: "and" -> "(v sub n = v sub 1), and" Add at end of exercise: "Compare this with Eq. (11.2)." 1112, Exercise A.7, line 4 [2nd printing only]: "v sub 3 (" -> "v sub 3 dot (" -- Bibliography 1115, item AMAN87: "Kunii, T.L. . . . 149-155" -> "Marechal, G., ed., Eurographics 87: Proceedings of the European Computer Graphics Conference and Exhibition, Amsterdam, August 24-28, 1987, North Holland, Amsterdam, 1987, 3-10" [acute accent over "e" in "Marechal"] 1120, item CACM84: "An" -> "Computer Graphics Comes of Age: An", "August 1984" -> "July 1984, 638-648" 1128, item GSPC77: "Committee" -> "Committee of ACM/SIGGRAPH", "11," -> "11(3), Fall" 1128, item GSPC79: Unitalicize and quote title. 1132, item JOVA86: Add accent over "c" in "Jovanovic'" 1133, item KURL89: "KURL89" -> "KURL90", "1989" -> "1990, 257-275" 1145, item SKLA90 [2nd printing only]: ", (Simple" -> " (Simple" 1145, item SNYD87 [2nd printing only]: "Tessellations," -> "Tessellations,''" 1150, item WOLB89: "Technical Report . . . 1989" -> "SIGGRAPH 89, 369-378" 1150, item WOLB90: "Washington, DC" -> "Los Alamitos, CA" -- Index 1154, col 2, line 3: "visible surface" -> "visible-surface" 1155, col 2, entry "Clipping": Delete subentry "three-dimensional" and add its page numbers to those of existing subentry "3D" 1155, col 2, entry "Clipping, 3D Liang-Barskey": "Barskey" -> "Barsky" 1162, col 2, entry "Kochanek-Bartels spline": "507, 515-516" -> "see Splines, Kochanek-Bartels" 1164, col 2, entry "Nyquist frequency": "frequency" -> "rate", "626-627, 789" -> "627-628, 788-790" 1168, col 1, entry "Ray Tracing, recursive": Add "776-793" 1171, col 1, entry "Splines", subentry "continuously shaped beta-splines": Change subentry name to "beta-splines" and change page numbers to "505-507, 515-516" 1171, col 1, entry "Splines": Add subentry "Kochanek-Bartels, 507, 515-516" 1172, col 1, entry "Surface detail": Delete "see also Texture mapping" 1172, col 2, entry "Total internal reflection": Add "758" 1174, col 2, entry "Window": Move "907-908" to become subentry "hardware-assisted" 1174, col 2, entry "Window, pick": Move to become subentry "pick" indented under entry "Window" -- Color Plates Color Plate II.6: Replace with plate that uses pure process colors Color Plate IV.10 caption, line -2: "Sasketchewan" -> "Saskatchewan" -- Dust Jacket dust jacket, inside front flap, line 6: Replace first sentence with: "James Foley (Ph.D., University of Michigan) is professor of computer science and director of the Visualization, Graphics, and Usability Lab in the College of Computing at Georgia Institute of Technology." dust jacket, inside back flap, line 2: "assistant" -> "associate" dust jacket, back, line 4: "The George Washington University" -> "Georgia Institute of Technology" ======================================================================== ++3 PART 3: CORRECTIONS TO 1ST - 3RD PRINTINGS -- Preface xv, Acknowledgements, para 2, line 13: add "Nelson Max" to list of names -- Chapter 1 -- Chapter 2 58, Section 2.3.4, equation: In "D <- S op D", only "op" should be bold. -- Chapter 3 82, line 4: "R cos theta or R sin theta" -> "(R cos theta, R sin theta)" 84, line 2: "If the midpoint" -> "It can be shown that if the midpoint" 96, line -4: "similar" -> "similar, though somewhat trickier," 98, step 3.1: after "then sort the AET on x", add: " (made easier because ET is presorted)" 99, para 3, lines 2-4: "generates one or more new pixels. . . minimum or maximum x value." -> "in Step 3.5 generates multiple pixels falling on the same scan line, the span extrema must be updated appropriately." 115, para 2, line 3: "choses" -> "chooses" 115, para 3, line 2: "choses" -> "chooses" 118, line -3: "Let D be the vector from P0 to P1 = (P1 - P0)" -> "Let D = (P1 - P0) be the vector from P0 to P1" 120, para -2, line 1: "The completed algorithm is pseudocoded in Fig. 3.44." -> "The completed algorithm for upright clip rectangles is pseudocoded in Fig. 3.44." (and move to beginning of para -1) 120, para -1, line 1: "To simplify the coding for upright clip rectangles, we create Table 3.1 to show," -> "Table 3.1 shows" 120, para -1, line 4: After "coordinate of P sub Ei", add: " (denoted by an indeterminate x or y)" 121, Table 3.1, add a footnote: "The exact coordinates of the point P sub Ei on each edge are irrelevant to the computation, so they have been denoted by variables x and y. For a point on the right edge, x = x sub min, as indicated in the first row, third entry." 123, line -7: "coordinate" -> "parameter" 130, Fig. 3.51: Line up each record definition's end with the name of the record and indent each record's contents by one tab stop. 137, para -2, lines 5-6: "intersects three supports in a column" -> "typically intersects three supports in a column, minimally two and maximally five" -- Chapter 4 -- Chapter 5 206, lines -1 to -2: "The directions specified by ... of 1)" -> "The first and second vectors will be rotated by R(theta) to lie on the positive x and y axes, respectively (in the presence of conditions 1 and 2, this is equivalent to the submatrix having a determinant of 1)." 207, para 2, line 4: "diamond" -> "rhombus" 211, para 2, line 5: "primitves" -> "primitives" 212, Eq. (5.33), last matrix, last column: "-x" -> "-x sub min", "-y" -> "-y sub min" 217, para 3, line 4: "Equation (5.48)" -> "The N' of Eq. (5.48)" 220, para 3, line 3: "Given" -> "Replacing the second subscripts of Eq. (5.45) with x, y, and z for notational convenience" 225, para 2, line -3: "x and y" -> "x and z" 226, Exercise 5.3 [3rd printing only]: "pi" -> "pi for integral n, and that otherwise they do not." 227, line -1: Add the following exercise: "5.19 Suppose that you are creating an interface to rotate an object by applying many incremental rotations, using ``Spin X,'' ``Spin Y'' and ``Spin Z'' buttons. Each time one of these buttons is pressed, the current rotation matrix is replaced by its product with a matrix that rotates slightly around the specified axis. Although this idea is mathematically correct, in practice cumulative floating-point roundoff errors will result that will cuase points to be transformed incorrectly. Show that by applying the Gram-Schmidt process to the columns of the matrix (see Section A.3.6) you can convert the new matrix back to an orthonormal matrix. Also explain why, if it is already orthonormal, applying this process will not change it." -- Chapter 6 236, para 2, lines 7 and 8: "1)" -> "-1)" (one occurrence on each line) 263, Fig. 6.47(e), right part: Top ridge line of house should be parallel to other lines. 264, Fig 6.49, parts (a, b): VPN should point in the opposite direction. 264, para 2, lines 1 and 4: "Section 5.5" -> "Section 5.6" (2 occurrences) 269, para 3, line 5: "vrp sub z '" -> "- vrp sub z '" 270, para 1, line 1: "front clipping plane and projection plane" -> "projection plane and clipping planes" 271, Sec. 6.5.3, para 2, line 1: "algorithm" -> "algorithm for the canonical parallel view volume" 273, Table 6.1, footnote, line 1: Add at end: "The exact coordinates of the point P sub Ei on each edge are irrelevant to the computation, so they have been denoted by variables x, y, and z. For a point on the right edge, z = -x, as indicated in the first row, third entry." 275, para 2, line 1: "With regard to clipping" -> "With regard to clipping, it can be shown that" 275, Eq. (6.48): "z sub min" -> "z sub roman min" (4 times), "- z" -> "-z" 277, Figure 6.58 caption, line 1: "lines segment" -> "line segment" 278, Sec. 6.5.5, para 3, lines 5-6: "size of the view volume" -> "size of the 3D viewport" 278, Sec. 6.5.5, para 3, line 7 and Eq. (6.54): Each term in both equations for S should be its reciprocal: "S (2/(x sub v.max - x sub v.min), 2/(y sub v.max - y sub v.min), 1/(z sub v.max - z sub v.min))" -> "S ((x sub v.max - x sub v.min)/2, (y sub v.max - y sub v.min)/2, z sub v.max - z sub v.min)" 278, Sec. 6.5.6, para 1, line 1: "first" -> "The first" -- Chapter 7 -- Chapter 8 -- Chapter 9 -- Chapter 10 455, para 2, line 2: "MICKY" -> "Mickey" 455, Fig. 10.16 caption: "MICKY" -> "Mickey" 456, Fig. 10.17 caption: "MICKY" -> "Mickey" -- Chapter 11 480, Fig. 11.7 caption, line 2: "dotted lines" -> "dashed lines" 481, Fig. 11.9 caption, line 1: "joint" -> "join" 481, Fig. 11.9 caption, line 2: "P" -> "P sub 2" 490, para 2, line 3: "everywhere nonnegative." -> "everywhere nonnegative for 0 <= t < 1." 494, Eq. (11.36), line 3 [3rd printing only]: There should be a minus sign in front of the 3 t sup 3 term of the P sub i-1 polynomial 494, Fig 11.24: The curves B sub Bs sub -2 and B sub Bs sub -1 are traced incorrectly. The slight dip at f(t) = 1/6 is incorrect; the curves should not have the inflection point, but should head up more steeply. 505, Eq. (11.47): Immediately following the 1/2 should be " dot T dot" 513, Fig. 11.36, lines 11-12, last assignment statement on each line: "=" -> ":=" 517, Sec. 11.3.1, para 2, line 2: "are coplanar" -> "are also coplanar" 518, Eq. (11.79): "G sub Hx" -> "G sub Hx sup T" 518, Eq. (11.80): the matrix G sub Hx should be transposed to: g Sub 11 g Sub 12 g Sub 13 g Sub 14 g Sub 21 g Sub 22 g Sub 23 g Sub 24 g Sub 31 g Sub 32 g Sub 33 g Sub 34 g Sub 41 g Sub 42 g Sub 43 g Sub 44 525, Fig. 11.46, procedure DrawSurfaceFwdDif, line 12: remove delta := 1/n (delta is not used in the program, only n is used) 530, Exercise 11.14, line 1: "C sub 2" -> "C sup 2" 531, Exercise 11.16, line 2: "G sub Bs sup i" -> "G sub Bs sub i" -- Chapter 12 539, lines 3-4: "B bar (the complement of B) can be obtained" -> "We can obtain B bar (the complement of B)" 550: line -5, After "reached." add "Whenever four sibling quadrants are uniformly full or empty, they are deleted and their partially full parent is replaced with a full or empty node. (A bottom-up approach can be used instead to avoid this deletion and merging process [SAME90b].)" -- Chapter 13 566, para 2, last line: "64" -> "32" 568, para 2, line 7: "circles" -> "variable-sized and variable-shaped areas [ULIC87]" 573, para 2, line 2: "as follows:" -> "for pixels in scan-line order, working downward from the topmost scanline:" 576, para 2, lines 5-7: "Luminance, which is proportional to the integral of the area under the curve weighted by the luminous efficiency function" -> "Brightness, which is proportional to the integral of the product of the curve and the luminous efficiency function" 580, caption for Fig 13.23: "The X + Y + Z = 1 plane is shown, along with the intersection of the cone with the plane." -> "The X + Y + Z = 1 plane is shown." (The intersection is not included in the figure.) -- Chapter 14 626, line -4: "BRIG74]." -> "BRIG74].)" 630, line 2: "g(x)" -> "g(x) flipped about its vertical axis and" 630, line 4: "filter g(x) centered" -> "a flipped copy of filter g(x) positioned" 645, Fig. 14.33 caption. Add before "(Courtesy", "Images are 512 x 512, and filters are 7 x 7. Middle scan line is at bottom of a checkerboard row. Because 2D filter covers light and dark squares above and below scan line, amplitude of filtered checkerboard signal along middle scan line is greatly diminished." -- Chapter 15 658, Eq. (15.1): "]." -> "], z sub min != -1" (where "!=" is a not equal sign) 658, para -1, line 4: "matrix" -> "matrix from Eq. (6.48)" 681, line 3: delete ", which" 681, line 4: "based on the edge's slope, contain" -> "are ordered by increasing x coordinate of their lower endpoint. Each entry contains" 682, line -5: "Therefore," -> "Therefore, assuming nonpenetrating polygons," 685, para 1, line -1: "visible and" -> "visible because the cube has been clipped, and it" 685, Fig. 15.40 caption: "invisible table" -> "invisible-surface table" 705, para -2, line -2: "1" -> "-1" in definition of "T" 707, procedure HIER_traverse: Replace procedure body with: if r intersects n's bounding volume then if n is a leaf then intersect r with n's object else for each child c of n do HIER_traverse (r, c) 713, Table 15.2: Delete asterisks from Boolean operators. 714, equation before para -1: Surround equation with "1/4 [" and "]" -- Chapter 16 724, para -2, line -1: "alike" -> "alike, as if the surface were lit by two opposing lights" 725, Fig. 16.3 caption: "From" -> "For all spheres, I sub p = 1.0. From" 725, Fig. 16.4 caption: "spheres," -> "spheres, I sub a = I sub p = 1.0," 726, Eq. 16.8: "max" -> "min" 727, Fig. 16.5 caption: "spheres," -> "spheres, I sub a = I sub p = 1.0," 728, Fig. 16.7 caption: "spheres," -> "spheres, I sub a = I sub p = 1.0," 729, Fig. 16.9: Was redone without potentially confusing margins. 730, para -1, line 4: "similar triangles" -> "vector subtraction and congruent triangles" 730, Fig. 16.10 caption: "spheres," -> "spheres, I sub a = I sub p = 1.0," 737, line 4: "II.30." -> "II.30. (See caption to Color Plate II.21.)" 753, para 1, line -1: "here." -> "here. (See Exercise 16.15.) 760, lines -1, -2: "hemisphere" -> "sphere" (2 times) 761, line 1: "hemisphere" -> "sphere"; After "radius r." add "If a point is on a surface, we are concerned with the hemisphere above it." 761, para 1, line -1: "hemisphere" -> "sphere or hemisphere" 762, Fig. 16.39 caption: "from a point. . . radius" -> "from a point on a surface is the area covered by the object's projection onto a unit hemisphere above the point." 764, Sec 16.7.1, para 3, line 1: "The specular component of the bidirectional reflectivity is" -> "For the specular component of the bidirectional reflectivity, Cook and Torrance use" 764, Sec 16.7.1, para 3, line 6: "The pi in the denominator accounts for the surface roughness." -> "The pi in the denominator is intended to account for surface roughness (but see [JOY88, pp. 227-230] for an overview of how the equation is derived). 765, footnote: "HALL88" -> "HALL89" 771, para 2, line 4: "WOLF88" -> "WOLF90" 789, line -4: "distributing the rays" -> "distributing the shadow rays" 791, Fig. 16.62 caption, line -1: "(b)-(d)" -> "(b)-(e)" 814, Ex. 16.15, line -1: ".)" -> ". Explain how extra storage at each pixel, as described in Exercise 16.14, could be used to design a shadow postprocess that produced correct shading and proper highlights.)" -- Chapter 17 822, lines 5-6: "We can use. . . algebraically." -> "(A tick at the left side of a column is considered to be in the column, whereas ticks on the right are not.)" 823, Fig. 17.5, line 12: "(ceiling" -> "ceiling" 823, Fig. 17.5, line 15: "array r" -> "array roth" 823, Fig. 17.5, line 21: "for j := 1 to p" -> "for j := 1 to targetWidth" 823, line 2: "difficulty and the effects of working around it" -> "and other drawbacks of transformation algorithms" 826, Fig. 17.9: Only middle part is OK. Left part: Exchange the labels "Side 1" and "Side 2". Right part: Exchange the labels "Base" and "Side 2". 843, para 1, line 4: "19.6.3" -> "19.5.3" 843, para 2, line 1: "19.6.2" -> "19.5.2" 848, Fig. 17.23, line 25: "if LiesIn(x,y,i,j) then d" -> "if LiesIn(x,y,i,j) then" 850-851, line -1 to line 1: "Chapter 20" -> "Section 19.3.4" 853, exercise 17.10, part a, line -1: "V" -> "v", "Tu" -> "Ty" -- Chapter 18 901, para 2, line 3: "SHAW88" -> "SHAW91" -- Chapter 19 951, Section 19.2.6, para 2, line 5: "five" -> "six" 954, Fig. 19.31 (c): The tick just above "7" and that below "3" should be horizontal. 957, para -2, line -1: "DASI88" -> "DASI89" 957, para 4: Replace last sentence with "Surprisingly, the code that updates the increments during the first two octant changes actually works for all octant changes." 968, line -4: "(D+A)" -> "(d+A)" 976, line 2: "subtraction." -> "subtraction. If the pixel overlaps all four sides, we need to perform another addition and subtraction." 990, Fig. 19.62 (cont.): Indent one additional tab stop the first line beginning "end" 995, Fig. 19.67: Undent the last "else" one tab stop so it lines up with its "if" -- Chapter 20 1021, Fig. 20.5: Three important dots were left out, roughly at the centers of the three "lobes" of the figure. 1035, para 4, line 2: "A first step in this direction was provided by the marching-cubes algorithm" -> "One approach (though by no means the first) is the marching-cubes algorithm" 1043, Section 20.8.1, lines 5-6: "(perturbing . . . [MAX81]." -> "(although one of the first widely-shown examples actually raytraced a complete height field [MAX81])." -- Chapter 21 1064, Section 21.1.4, para 2, line 4: "i + 1" -> "i - 1" -- Appendix 1108, para 3, line 4: After "same way as the point" add " (but with no translation, because the last component of the vector is 0)" 1112, Exercise A.4, line 2: "(x - x sub 0)" -> "(x sub 1 - x sub 0)" 1112, Exercise A.6, part b, equation: Add "1/2" before sigma. -- Bibliography 1113, Abbreviation "CGVIP Computer Graphics, Vision,..." -> "CVGIP Computer Vision, Graphics,..." 1133; Add before item KOCH84: KOCA87 Kocak, H., F. Bisshopp, D. Laidlaw, and T. Banchoff, ``Topology and Mechanics with Computer Graphics: Linear Hamiltonian Systems in Four Dimensions,'' Advances in Applied Mathematics, 1986, 282-308. 1133, item KRUE83: "R." -> "M." 1136, item MAX84: "CGVIP" -> "CVGIP" 1137, item MUNS76: "MD ," -> "MD," 1139, item OLSE89, line 2: "175-176" -> "171-176" 1143, item SARR83: "CGIP" -> "CVGIP" 1144, item SHAO86: "SHAO86" -> "SHAO88" 1144, item SHAW88: "SHAW88" -> "SHAW91", "To appear in" -> "In", "1989" -> "1991, 183-199" 1144: Add before item SHAN87, SEQU89 Sequin [acute accent over "e"], C.H. and E.K. Smyrl, ``Parameterized Ray Tracing,'' SIGGRAPH 89, 307-314. 1145, item SMIT88: "D." -> "D.N.", "New York" -> "New York, 1988" 1150, item WOLF88: "WOLF88" -> "WOLF90", ", Technical Report. . .1988" -> ",'' CG & A, 10(6), November 1990, 44-55" 1150, Add after item WOOD70 [3rd printing only]: WOOD76 Woodsford, P. A., ``The HRD-1 Laser Display System,'' SIGGRAPH 76, 68-73. 1151: Add before item WU89 [2nd and 3rd printing only]: WOON71 Woon, P.Y. and H. Freeman, ``A Procedure for Generating Visible-Line Projections of Solids Bounded by Quadric Surfaces,'' in IFIP 1971, North-Holland, Amsterdam, 1971, 1120-1125. Also in FREE80, 230-235. WRIG73 Wright, T.J., ``A Two-Space Solution to the Hidden Line Problem for Plotting Functions of Two Variables,'' IEEE Trans. on Computers, 22(1), January 1973, 28-33. Also in FREE80, 284-289. -- Index 1154, col 1, entry "Bezier curve": delete this entry (but keep "Bezier curves") 1157, col 2, entry Curved surfaces: "see also Visible surface determination" -> "516-529, see also Surface patch" 1164, col 1, entry "MICKY UIMS": "MICKY" -> "Mickey" 1165, col 2, entry "Patch": "Splines" -> "Splines, Surface patch" 1172, col 1, entry "Surface patch": Add "see also Curved surfaces"; subentry "cracks": add "527-528" -- Color Plates Color Plate III.6 caption, line 3: "shadow-volume BSP" -> "object-precision shadow-volume BSP tree" Color Plate III.6 caption, line 9: "Dark gray fragments are lit by both lights" -> "Dark gray fragments are lit by no lights" -- Dust Jacket ======================================================================== ++4 PART 4: CORRECTIONS TO 1ST - 4TH PRINTINGS -- Preface xvi, para -1, line -1 [4th printing only]: "765" -> "1175" -- Chapter 1 20, para 2, line 3: "or" should be roman -- Chapter 2 47, Fig. 2.19, line 3: Replace entire SRGP_text call with: SRGP_defPoint(100, 100, p); SRGP_text(p, 'Specify one or more files to be deleted; to exit, press Return.'); 51: Fig 2.22: Call to ProcessObject should be indented on separate line. 66, Exercise 2.15: "``grayed out;''" -> "``grayed out'';" 113, line -4: "9 )" -> "9)" -- Chapter 3 134, para 2, line 2: "such as (2, 3), not intersected by the line" -> "not intersected by the line, such as (2, 3)," -- Chapter 4 -- Chapter 5 203, para 3, line 1: "(5.5)" -> "(5.6)" 205, para 2, lines 6-7: "matrixes" -> "matrices" (2 times) 206, lines -3 to -2 [4th printing only]: "can be moved by a rotation to" -> "will be rotated by R(theta) to lie on" 213, Eq. (5.36), line 2: "r sub 12" -> "r sub 21" 218, line 6: In step 4, "P sub 1 P sub 2" -> "P sub 1 P sub 3" 219, Fig. 5.18: All points in figure and caption should have double primes ('') 220, Eq. 5.60: Delete left parenthesis under the square root sign 224, Fig. 5.25: labels on x axes in both parts should be "x sup (1)" not "y sup (1)" 226, Exercise 5.3 [4th printing only]: "or if theta = n dot pi, and scaling commute if s sub x = s sub y or if theta = n pi." -> "and scaling commute if s sub x = s sub y or if theta = n pi for integral n, and that otherwise they do not." 227, Exercise 5.15, Eq. (5.79), row 1, col 2: "+ u sub z sin theta" -> "- u sub z sin theta" -- Chapter 6 230, Fig 6.1: "view column" -> "view volume" 234, Fig. 6.7 caption: "Association of" -> "Association for" 252, line -4 [3rd and 4th printings only]: "-PRP = (...)" -> "-PRP = -(...)" 263, Fig. 6.47(e), right part: The final view volume shown here is not the canonical view volume. It extends much more in positive y than it does in negative y. 266: Fig. 6.51: Shade view volumes to be consistent with those in Fig. 6.47. 270, eqn 6.40: Add a footnote to the equation: "z sub min and z sub max are named based on their absolute value relationship, as z sub min is algebraically greater than z sub max." 275, Eq. (6.48), row 3, col 4:), "- z" -> "-z" (delete space) -- Chapter 7 304, line -2: "display." -> "display. (As we will see later, hierarchy complicates this rule.)" 306, para 2, line 3: "dotted" -> "dashed" -- Chapter 8 -- Chapter 9 -- Chapter 10 440, para 5, line 1 [3rd and 4th printing only]: "X Window System" -> "the X Window System" 441, para 3, line 2: [3rd and 4th printing only]: "X Window System" -> "the X Window System" -- Chapter 11 497, para -3, lines 6-8: "For this particular knot vector, the B sub i,4 (t) are the uniform B-spline blending functions; compare them to those in Fig. 11.24." -> "For this particular knot vector, the B sub i,4 (t) are the Bernstein Polynomials, that is, the Bezier blending functions; compare them to those in Fig. 11.20." 498, Fig 11.26: The blending functions in Fig. 11.26 are replaced by: B sub 2,2 (t) = 1-t B sub 3,2 (t) = t B sub 1,3 (t) = (1-t) sup 2 B sub 2,3 (t) = 2t (1-t) B sub 3,3 (t) = t sup 2 B sub 0,4 (t) = (1-t) sup 3 B sub 1,4 (t) = 3t (1-t) sup 2 B sub 2,4 (t) = 3 (t sup 2) (1-t) B sub 3,4 (t) = t sup 3 (This can be accomplished by swapping the current B sub 2,2 and B sub 3,2, replotting the B sub i,3, and replacing the B sub i,4 with the four curves from Fig. 11.20, with B sub B sub 1 being B sub 0,4, B sub B sub 2 being B sub 1,4, etc.) 505, para 2, line -1: "BARR89" -> "BARR88b" 529, Eq. (11.94): "sup italic T" -> "sup roman T" -- Chapter 12 -- Chapter 13 564, para -1, line 4: "mimimum" -> "minimum" 573, para 2, line 2 [4th printing only]: "as follows, with y assumed increasing from top to bottom:" -> "for pixels in scan-line order, working downward from the topmost scanline:" 580, para 2, line 1: "fuctions" -> "functions" 589, Section 13.3.3, line 4: "Standards" -> "System" 596, Fig. 13.37, line 22 [3rd and 4th printing only]: "l + s + l * s" -> "l + s - l * s" -- Chapter 14 -- Chapter 15 -- Chapter 16 -- Chapter 17 826, Fig. 17.9: The left part of the figure should be moved all the way to the right, so that if the current order is abc, the new order is bca. -- Chapter 18 -- Chapter 19 990, Fig. 19.62 (cont.): Undent one tab stop the "else" (and the "begin-end" body underneath it) so that the "else" lines up with the "if" at the top of the page. 1006, Exercise 19.2, line 2: "Hodgeman" -> "Hodgman" 1006, Exercise 19.2, line 3: "```cancels''" -> "``cancels''", "succesive" -> "successive" -- Chapter 20 1046, para 3, line -1 [1st, 3rd, 4th printings only]: "III.22(a)" -> "III.22(c)" -- Chapter 21 -- Appendix 1104, line 9: In definition of det A, expression after sigma should be (-1) sup {i + 1} a sub {1i} A sub {1i} 1112, Exercise A.6, part b, line 2 [3rd printing only] or line 1 [4th printing only]: "x sub roman i y sub 1" -> "x sub i y sub i" -- Bibliography 1116, item BARR89b: BARR89b -> BARR88b, "SIGGRAPH 89" -> "SIGGRAPH 88" 1117; Add after item BECK63: BEDF58 Bedford, R. and G. Wyszecki, ``Wavelength Discrimination for Point Sources,'' Journal of the Optical Society of America, 48, 1958, 129-ff. 1150, item WHIT84: "Whitten" -> "Whitton" 1151, item WOON71 [4th printing only]: "Proceedings 1971 IFIP Congress, North-Holland Pub. Co., Amsterdam, 1971, pp. 1120-1125" -> "in IFIP 1971, North-Holland, Amsterdam, 1971, 1120-1125. Also in FREE80, 230-235" 1151: Delete item WRIG72 [4th printing only] -- Index 1154, col 1, entry "Attribute": Add "Attribute, SPHIGS, 298, 318-321" 1155, col 2, entry "Clipping, 3D Liang-Barsky" [3rd & 4th printing only]: Delete "." 1157, col 1: Add entry "CSS, see Central Structure Storage" 1157, col 1: Add entry "Culling, structure network, 340" 1158, col 1, entry "Direct-view storage tube (DVST)": "416" -> "161" 1158, col 1: Add entry "Display procedure, 308" 1159, col 1, entry "Event": Add subentry "Event, input, 42" 1159, col 2, entry "Fitts' Law": "371" -> "370" 1161, col 1: Add entry "Hierarchical display list, 176, 291" 1165, col 1, entry "Painting": Add subentry "versus drawing, 61" 1167, col 1: Add entry "Pruning, structure network, 340" 1175, Macintosh, line 3: "Software 6.0 or later" -> "6.x" 1175, Macintosh, lines 4-5: "delete "or ``THINK Pascal'' version 3.0"; delete "or ``THINK Pascal''" 1175, Macintosh, line 4: After "recommended." add "Support for ``THINK C'' version 5.0 is only available via ftp. (See UNIX workstations instructions below.) -- Color Plates Color Plate I.28 caption: Delete glitch under "e" of "Microsystems" Color Plate II.13: The yellow squares are actually slightly different in color due to printing problems. Color Plate IV.15 caption, line 2: Delete ", and a collection of cloth sheets under tension" -- Dust Jacket dust jacket, inside front flap, van Dam bio, line 7: "and senior consulting scientist at BLOC Development, Electronic Book Technologies, and Computervision" -> "senior consulting scientist at BLOC Development and Electronic Book Technologies, and on Technical Advisory Boards for ShoGraphics and Microsoft" dust jacket, inside front flap, van Dam bio, line -5,: "and in 1990, the NCGA Academic Award" -> "in 1990, the NCGA Academic Award; and in 1991, the SIGGRAPH Steven A. Coons Award" dust jacket, inside back flap, Feiner bio, line 7: "and" -> "virtual worlds, and" dust jacket, inside back flap, Feiner bio, line -3: Add before "Dr.", "In 1991 he received an ONR Young Investigator Award." dust jacket, inside back flap, Hughes bio, line 2: "an assistant" -> "a research associate" ======================================================================== ++5 PART 5: CORRECTIONS TO 1ST - 8TH PRINTINGS -- Preface -- Chapter 1 -- Chapter 2 55, line -2: "PostScript offer" -> "PostScript offers" 57, Fig. 2.28, line -4: "lowerLeft" -> "bottomLeft" -- Chapter 3 115, line 1: "succesful" -> successful" 123, Fig. 3.45, line 13: "else /* A new tL has been found */" -> "else if (t < tL) /* A new tL has been found */" 138: Fig. 3.59: Unfiltered half is too dark. -- Chapter 4 -- Chapter 5 203, Fig. 5.4: Points P and P' should be the same distance from the origin 205, line 2: "row" -> "column" 206, Eq. (5.21): Equation label should be on same line as equation 209, para 3, line 2: "roman M" -> "italic M" (2 times) 217, Eq. (5.48): "roman M" -> "italic M" 220, Eq. (5.64): Subscript "z" should be "x" (3 times) 227, Ex. 5.17, line 1: "5.4" -> "5.5" 224, Eq. (5.32): "roman x" -> "italic x", "roman y" -> "italic y" 234, Fig. 6.7: The unit cube's isometric projection should be a regular hexagon. 235, Fig. 6.10(b): Each edge of the projected cube should have the same length. -- Chapter 6 241, Fig. 6.21 caption: Add " for perspective projection" after "volume" 244, Fig. 6.26 (b): "PRP" label should be "VRP", VUP vector should be in the (V, N) plane. It would be nice if the house were on other side of the (U, V) plane. 246, Figs. 6.29 and 6.30: Remove heavy arrow labeled "DOP" from both figures. (These describe perspective projections, not parallel projections.) 250, Sec. 6.3.3 should be numbered Sec. 6.3.2. 253, Sec. 6.3.4 should be numbered Sec. 6.3.3. 258, para -2, line 2: "roman M" -> "italic M" 270, Fig. 6.54(a): Arrows for y = (v sub max - v sub min) / 2 and for y = -(v sub max - v sub min) / 2 should point to the view plane's top and bottom edges, not to the view volume's top and bottom planes, since they are the equations of the view plane's top and bottom edges, not of the view volume's top and bottom planes. Alternatively, the arrows could remain in place and be labeled with the equations of the view volume's top and bottom planes, which are, respectively, y = -(v sub max - v sub min) z / 2 vrp' sub z, and y = (v sub max - v sub min) z / 2 vrp' sub z. 275, para -1, line -3: "roman N" -> "italic N" 278, Section 6.5.5, line -4 (two lines before Eq. 6.54): "z sub z.min" -> "z sub v.min" 279, step 6, line 2: "d = 1" -> "d = -1 (because the canonical view volume lies along the -z axis)" -- Chapter 7 293, line 1: "although it" -> "it" 305: "SPHIGS_rotate" -> "SPHIGS_rotateY" (2 times) 319, para 3, line 1: "on type" -> "on the type" -- Chapter 8 351, para 2, line -4: "postion" -> "position" 354, line 1: "Green [GREE85]" -> "Greene [GREE85c]" -- Chapter 9 -- Chapter 10 -- Chapter 11 473, Sec. 11.1, para 2, line -1: Delete "These operations and some of his results are discussed in Chapter 12." 477, line 5: "(x + y)" -> "(x, y)" 497, Eq. (11.43): In each term, swap the order in which the P and B factors appear (e.g., the first term becomes B sub (i-3,4) (t) dot P sub (i-3). [This is only for consistency with the other equations (e.g., Eq. 11.36) and is not strictly necessary since P and B are both reals.] -- Chapter 12 -- Chapter 13 592, Fig. 13.33, line 7: "Mimimum" -> "Minimum" -- Chapter 14 -- Chapter 15 650-720: "Visible-surface" -> "Visible-Surface" in even-page running head. 669, Fig. 15.21, line 9 [3rd - 8th printings only]: Line beginning "WriteZ" should use regular size font. 669, Fig. 15.21, line 9: Delete "." 669, Fig. 15.21, line -5: Add ";" 669, line -3: "roman x + 1," -> "italic x + 1, " 702, Eq. (15.12): "roman r" -> "italic r" 703, Eq. (15.16), line 2: "italic 0" -> "roman 0", "." -> "," -- Chapter 16 724, Eq. (16.3): "cos" should be roman 728, Eq. (16.12): Add "." at end of equation 730, Eq. (16.17): Delete last ")" 741, para 1, line -2: "an edge" -> "a polygon" 807, Fig. 16.72: "Divide by w" -> "Divide by W" 808, Figs. 16.73-74: "Divide by w" -> "Divide by W" (2 times) 809, Fig. 16.75: "Divide by w" -> "Divide by W" -- Chapter 17 827, line -2 "[HECK86a] proposes" -> "[HECK89] describes" (and see change to p. 1130, below) -- Chapter 18 -- Chapter 19 942, para 1, line -1: "edges sides" -> "edge sides" -- Chapter 20 1020, Fig. 20.4: The bump in part (a) is supposed to be equilateral, i.e., the gap in the base should have a width that is the same as the length of each sloped edges. Instead, each sloped edge is slightly shorter than it should be. This mistake is propagated throughout the rest of the figure. 1026, line -4: "IFS reveals" -> "IFSs reveals" -- Chapter 21 -- Appendix -- Bibliography 1124, item ENGE68: "Englebart" -> "Engelbart" 1129: Add after item HECK86b: HECK89 Heckbert, P.S., Fundamentals of Texture Mapping and Image Warping, M.S. Thesis, UCB CSD Technical Report 89/516, UC Berkeley, Berkeley, CA, 1989 -- Index 1154, col 2, entry "BSP tree": "Binary-partitioning" -> "Binary space-partitioning" -- Color Plates -- Dust Jacket