The Essentials of CAGD

by Gerald Farin & Dianne Hansford

published by AK Peters, Ltd. 2000
248 pages, ISBN: 1-56881-123-3

New print run available 2013 (Look for CRC Press as the publisher)
-- Errata has been incorporated


Please email suggestions or corrections to If you find an error, we'll give you credit by including your name/link in this Errata page!

The errata entries are ordered by page number and the date that each correction was added is given in brackets as [month/day/year].

In 2013, a new printing will be released and the errata below should be fixed in those books. See the copyright date to determine which version you have.
If you find errors in this new printing, please pass them on to us, and we will create an errata page for this new version of the book.

Revised 1 Sep 2016

Errata entered after September 1, 2016

If your copy of the book was printed in 2013, then please correct the following items in your book.

Page Erratum Date
8 The shear matrix example is actually more than just a shear. A simple shear could have column vectors [1, 0]^T and [3, 1]^T. 9/1/2016


Errata entered before September 1, 2016

If your copy of the book was printed in 2000, then please correct the items above and the following items in your book.

If your copy was printed in 2013, then this errata should be corrected in your book.

  • p. xii, CAGD Journal link needs to be changed to [ 7/5/2012]

  • p. xii, Update book's website to [7/5/2012]

  • p. 2, In order to make Sketch 1 coincide with the text, change the text as follows. Change the coordinates of the points q and p to q = [-1 2 4]^T and p = [1 2]^T. The next sentence, which starts as "If we .." should read "If we want to refer to a particular component, we denote it by q_x, q_y, q_z. In our example, we would have p_x=1 and p_y = 2. [7/5/2012]

  • p. 7, after eq. (1.3): the vector v is an element of the linear space R^3, not of the affine space E^3.   [10/28/01]
    B. Ehrlich

  • p. 8, eq. (1.4): the determinant needs to be multiplied by a factor 1/2. This applies to the following equation too.   [9/10/01]
    O. Mahmood

  • p. 10, eq. (1.9): the volume needs to be multiplied by a factor 1/6. Thus value 12 in subsequent Example really is 2.   [4/14/02]
    K. Baker

  • Errata clarification: The errata does not clearly state that the determinant at the bottom of the page also needs a factor 1/6. (The result of this determinant is 12/6 = 2. [7/5/2012]

  • p. 11, Exercise 6: the answer is 9/2, not 9.   [9/10/01]
    Found by O. Mahmood

  • p.18: The vol(p,q,r,x) equation needs a factor of 1/6 times the determinant [7/5/2012]

  • p. 21, example 2.6: the point p_6 is listed twice in the point list, once would do. Triangle 0 has only two neighbors, not three as stated in the text.   [9/10/01]
    Found by O. Mahmood

  • p. 40, sketch 28: the factor of a2 needs to be 1/3, that of a3 needs to be 1.   [4/24/02]
    Found by Tae Seong Kim

  • p. 41, exercise 3: the point on the curve is (-44/64, 36/64).   [1/27/12]
    Found by Leonardo Brito
    The derivative vector must be multiplied by 3. [7/5/2012]

  • p.51, Sketch 31: The curve sketch is inaccurate. The max y-value should be at [3,3/2]^T. [9/30/2015]

  • p. 46, Example 4.1: the second derivative has a factor n(n-1), which in this case is 6, not 3. Thus the factor 3, which appears, has to be replaced by a 6. The final result is correct, however.   [10/1/01]
    Found by B. Ehrlich

  • p.57, Exercise 1: URL should be replaced by Then download Postscript Figures (a zip file of Postscript files). Figure 4.4 is called [7/5/2012]

  • p. 59, Sketch 33. The caption should say "cubic curve" instead of "cubic Bezier curve".   [2/13/01]
    Found by V. Zafiris

  • p. 67, Figure 5.3. A uniform parametrization was used to generate this figure.   [4/14/02]
    Found by James Greene, Arizona State University

  • p. 68, 3rd line from top. Replace "1+1" by "l+1". (meaning letter "l" plus number "1")   [4/4/01]
    Found by V. Zafiris

  • p. 68, eq. 5.18:. Replace "t_P" by "t_l".   [4/4/01]
    Found by V. Zafiris

  • p.68, The sentence that begins with "If desired " should be changed to "When constructing a curve with Bernstein polynomials, it is advantageous to normalize the parameters by scaling them to live between zero and one:" (Equation at end of sentence remains as is.) [7/5/2012]

  • p. 70, Problem 6:. The wing data may be found on the data page.   See the the data sets file on the page [4/14/02]
    Found by Ron Hoppe, University of Houston-Downtown

  • p. 79, sketch 47: the caption should say: a v-partial.   [4/02]
    Found by Chris Cera

  • p. 83, Sketch 50: One intermediate Bezier point is drawn incorrectly. There are three u-direction curve evaluations in the sketch. The "back-most" evaluation is where the error occurs. One control point from the first step of the de Casteljau algorithm has been drawn on the wrong control net segment -- it belongs just below where it is drawn.   [3/20/01]
    Found by V. Zafiris,

  • p. 85, second set of de Casteljau algorithms: the input point [0 3 3] is missing.   [3/22/01]
    Found by V. Zafiris

  • p. 88, Example 6.11, first sentence: the reference should be to Example 6.4.   [3/22/01]
    Found by V. Zafiris

  • p. 93, Exercise 3: it should say "elevate in the u-direction".   [10/5/01]
    Found by B. Ehrlich

  • p. 101, Example 7.2, the reference should be to Example 6.4.   [4/4/01]
    Found by V. Zafiris

  • p. 104, Example 7.3: The Hermite matrix entries need to be changed as follows. x_v(0,1) = [0,3,-3]^T, x_u(1,0) = [3,0,-3]^T, x_u(1,1)=[3,0,-3], x_v(1,1) = [0,3,-3]^T, x(0,1)=[0,3,0]^T, x(1,0)=[3,0,0]^T, x(1,1)=[3,3,0]^T. In the Bezier patch matrix, the entry for b_(3,3) should be [3,3,0]^T. [10/15/01]
    Found by B. Ehrlich

  • p. 108, "big" matrix: The subscript "K" should be replaced by "K-1" (five occurences); [4/4/01]
    Found by V. Zafiris

  • p. 110, bottom: Figure 7.5 actually illustrates the bicubic case, not the bilinear case from the example. [1/5/01]
    Found by B. Ehrlich

  • p. 111, Figure 7.5. The caption should refer to Figure 7.4, not to Example 7.6. [1/5/01]
    Found by B. Ehrlich

  • p. 118, sketch 73. The radius of the shown circle is 2/3, but it should be 3/2. This means the center has to move to the right. Therefore, c(0) = [3/2, 0]^T. [11/17/01]
    Found by B. Ehrlich

  • p. 125, Sketch 80: "theta" should be "alpha". The unlabeled point and vector on the line L correspond to p and v, respectively. [4/9/01]
    Found by V. Zafiris

  • p. 126, top. Reflection lines may be defined differently; view a postscript version or pdf version.

  • p. 130, middle of page, chain rule equation: {\bf s}_i should be {\rm d}{\bf s}_i. [4/9/01]
    Found by V. Zafiris

  • p. 130, Just before section 9.2: First derivative should read (1/Delta_0)\dot{\bf s}= ... and (1/Delta_1)\dot{\bf s} = ... .
    Same idea for the second derivative, but now the factors involve the second forward difference. [4/15]

  • p. 130, sketch 81: it should say "Four cubic Bezier curves." [4/02]
    Found by Chris Cera

  • p. 131, sketch 82: The sketch is labeled as 3:1, but it is drawn to look 2:1 [4/15]

  • p. 150, eqn (10.6): The superscript for d should be n-r. [11/28/06]
    Found by S Mahbub Murshed

  • p. 151, eqn (10.8): the subscript k-3 should read k-n.   [11/1/00]
    Found by B. Seshadri

  • p. 151, Property 5: K=2n-1 should read K=2n.   [11/5/00]
    Found by B. Ehrlich

  • p. 153, In first paragraph, "that region" should be "the region where it is non-negative" [7/5/2012]

  • p. 154, Figure 10.7: The knot u_4=6 is not drawn.   [11/1/01]

  • p. 155, Preceding "In coding " add the following sentence (as part of that same paragraph). "In (10.9), if u_j appears that is not part of the knot sequence, e.g., u_{-1}, then assume this term in front of the B-spline function is zero." [7/5/2012]

  • p. 155, Figure 10.8: In the caption, the B-spline N^3_4 should be N^3_2.   [11/13/01]
    Found by R. Holmes

  • p. 157, Example 10.8: After inserting u=1.5, the Greville abscissae become 0,1/3,5/6,3/2,13/6,8/3,3.   [6/24/02]

  • p. 157 (Last sentence of page): Insert each domain knot until it has full multiplicity in order to construct the Bezier points.   [6/24/02]
    Found by Chun Lee

  • p. 158, Figure 10.10: The junction Bezier points (solid circles) are difficult to see in the figure.   [6/24/02]
    Found by Chun Lee

  • p. 160: Twice in the first paragraph, instead of n+1 knot intervals, it should read 2n-2 knot intervals. Therefore, the knot sequence takes the form \delta_0, ..., \delta_{2n-3},...,\delta_{K-2n},\delta_0, ...\delta_{2n-3}. The list of de Boor points that must overlap is incorrect also. It should read \dd_0 = \dd_{D-n}, \dd_1 = \dd_{D-(n-1)}, ..., \dd_{n-1} = \dd_{D-1}. The footnote at the bottom of the page is a bit misleading: \dd_3 is not contrained by the periodic conditions.   [10/5/01]

  • p. 160, Ignore footnote [7/5/2012]

  • p. 161, eq. (10.11): the term N^{n-1}_1 should be N^{n-1}_{i-1}.   [11/28/00]
    Found by B. Ehrlich

  • p. 161, eq. (10.13): the term N^{n-1}_1 should be N^{n-2}_{i-1}. All superscripts in this equation should be n-2.  [11/28/00]
    Found by B. Ehrlich

  • p. 167, Ignore footnote 1. Footnote 2: instead of "evenly" this should say "without large gaps" [7/5/2012]

  • p. 174, Ex. 11.4: the matrix should be:
    1 0 0 0 0
    3/2 7/2 1 0 0
    0 1 4 1 0
    0 0 1 7/2 3/2
    0 0 0 0 1
    . [12/05/01 and 6/20/03]
    Found by B. Ehrlich and T. Meyer

  • p. 187, The last two matrices on the page need to have a space between the next-to-last and last columns. [7/5/2012]

  • p. 188, displayed equations: should all have a superscript "1". [4/9/01]
    Found by V. Zafiris

  • p. 190, Sketch 101: A dotted line is missing. Please see this updated sketch. [11/3/04]

  • p. 193, Problem 2: [3,0,0] should read [4,0,0].   [12/05/01]
    Found by B. Ehrlich

  • p. 197, Example 13.2: The new weights in standard form are 1, 2/sqrt(2), 1.   [01/19/01]
    Found by M. Bara

  • p. 198, Figure 13.2: "0.1 to 0.9" should say "0.1 to 10"   [11/14/01]
    Found by B. Ehrlich

  • p. 211, Exercise 6: the answer is 9/2, not 9.   [9/10/01]
    Found by O. Mahmood

  • p. 211, Exercise 3.3: the x-coordinate of the point on the curve is -22/32. The derivative vector is missing a factor of 3.   [10/5/01]
    Found by B. Ehrlich

  • p. 215, Exercise 6.8: the control point b_11 has a missing y-coordinate. It should be 1/2. The control point b_21 has a y-coordinate of 0, but this should be a 1.   [10/5/01]
    Found by B. Ehrlich

  • p. 218, Exercise 12.3: the fourth row should have z-coordinates 0, 4/3, 8/3, 4.   [12/5/01]
    Found by B. Ehrlich

  • p.223, Update reference [10] from Geometry Toolbox to PLA: G. Farin and D. Hansford, Practical Linear Algebra A Geometry Toolbox, Wellesley, MA, A K Peters Ltd., 2005 [7/5/2012]