Practical Algorithms for 3D  Computer


by R. Stuart Ferguson


The following errors have been reported to the author or have been found since the book was publisehed.
Thank you to everyone who reported an error

Page 11: Fig 2.3

e=epsilon t=theta p=phi PI=pie

The algorithm needs to be written as:

if(X*X + y*Y < e) { r=z; t=0; p=0; } else{ r=sqrt(x*x + y*y + z*z); p=arcsin(sqrt(x*x + y*y)/r); if(y > 0){ p=atan2(y,x); } else{ p=2*PI+atan2(y,x); }

This modification allows for phi to lie in the range [0 - 2PI] as is assumed in the rest of the book.

Page 20: There is a mix up in the alpha and beta parameters.

Line 5 should read .....Snell's law gives a value for ALPHA which is:

ALPHA = ....

6 lines up; The line should read... the meaningful value for BETA is substituted...

Page 22: Figure 2.12 The U and V axes are mixed up - the axis labeled u should be v and vice-versa.

Page 23: (algorithm step 3) line 5 it should be alpha + beta <= 0.9995 and ont alpha*beta.

Page 30: Figure 2.15 last transformation should read "Rotate round z by PI/4 " (not PI/2)

Page 47: Line 10. The expresssion for K0x should equal X(i) (not X'(i+1) )

Equation 2.26 is also incorrect. The RHS should be - 1/2* x(i-1) + 1/2 * x(i+1)

Page 125: The expression for cos(theta) just above Fig 4.36 should use a normailsed vector for (p-Pl) and so should be divided by |p-Pl|

Page 126: 8 lines up the experssion for b should be:

b = -(p-Pl)/|p-Pl| - .....

Note the extra "-" before the first term.

Page 127: Line 4. The equation for Is should be (2cos^2(alpha)-Im)^m note the "alpha" not "alpha/2"

Page 132: The expression for I(i,i) should be Io + alpha(I1 = I0) + beta(I2-I0)

Page 134: The matrix expression for [nx,ny,nz] should begin by = n(i,j) + [ ....


This page lists the errata in the first edition.