Errata

Nota:* Os números de página referem-se à edição americana do livro. Entre parêntesis estão os números de página na edição global do livro.

Changes:

  • pg. 100 (130), os vértices do primeiro triângulo da fita eram especificados na ordem dos ponteiros do relógio, o que tem o significado atribuído em WebGL de estarmos a olhar para a face posterior do mesmo, sendo o significado propagado para os restantes triângulos (apenas um neste caso). Em certas situações (remoção das faces posteriores ligada), poderia causar problemas. A ordem correta é:
var vertices = [
  vec2(0, 1),
  vec2(-1, 0),
  vec2(1, 0),
  vec2(0, -1)
];
  • pg. 101 (131), o código do vertex shader deveria ser:
  ...
  gl_Position.x = -sin(theta) * vPosition.y + cos(theta) * vPosition.x;
  gl_Position.y =  sin(theta) * vPosition.x + cos(theta) * vPosition.y;
  ...
  • pg. 102 (132), o código a meio da página não deveria ser recursivo. Retirar a chamada render() no final da função.

  • pg. 105 (135), na frase antes do código no final da página deveria estar "setTimeout" em vez de "setInterval".

  • pg. 126 (156), a variável "t1" no exemplo deveria ser global.

  • pg. 164 (194), o comentário da 3ª linha do primeiro pedaço de código deveria ser "criar vec3 c por cópia de vec3 b".

  • pg. 172 (202), na linha de texto imediatamente abaixo da última linha de código da página, mudar "gl.drawElements" para "gl.drawArrays".

  • pg. 194 (224), no último exemplo de código da página deveria ler-se:

  ...
  var e = scalem(scaleVector);
  ...
  • pg. 195 (225), remover do primeiro parágrafo "sets the matrix mode, then"

  • pg. 195 (225), no primeiro parágrafo alterar "Using the example from Section 4.11" para "Using the example from Section 4.10".

  • pg. 195 (225), o código do exemplo deveria ser:

var R = mat4();
var ctm = mat4();

var thetaX = Math.acos(3.0/Math.sqrt(14.0));
var thetaY = Math.sqrt(13.0/14.0);
var d = vec3(4.0, 5.0, 6.0);

R = mult(R, rotateX(-thetaX));
R = mult(R, rotateY(-thetaY));
R = mult(R, rotateZ(45));
R = mult(R, rotateY(thetaY));
R = mult(R, rotateX(thetaX));

ctm = translate(ctm, d);
ctm = mult(ctm, R);
ctm = mult(ctm, translate(negate(d)));