LEO DORST  DANIEL FONTIJNE  STEPHEN MANN
Errata  Reverse Chronological Order
Those errata in bold correspond to Major Corrections; those marked with '*' correspond to Minor Corrections, and those that are unmarked correspond to Typos.
Not all browsers support all standard html symbols (older versions of
Internet Explorer, for example). If you think that this symbol "⌋" looks like a square, you may want to view the bitmap
symbol version.
*Pg 162, line 7:
subscript should be lk.
[20090104 ORSL]
*Pg 425, (14.12): Errata correction!
V.U should be V⌋U.
Add: "This equation is translationcovariant and holds at x = o, so it is valid everywhere".
[20081214 AC]
Pg 462, caption figure 15.3:
The period '.' at the end of the caption is missing.
[20081214]
*Pg 485, exercise 5,
Change exp(o∧t/2) to exp(o∧t), to be in line with
major erratum about pg 475, line 3.
[20081214]
Pg 489, figure caption: remove the sentence 'Converting a.'.
[20081211]
*Pg 47, Table 2.3, line 5:
Change kvectors of any grade to multivectors.
[20081018 JS]
*Pg 53, exercise 7:
insert "precisely" after "contains".
[20081018 SP]
*Pg 134, line 11:
The table entry for 'Point and Plane' in 'Space' should have a minus, not a plus.
[20081018 JS]
*Pg 144, line 9:
Change "each element" to "each invertible element".
[20081018 JS]
Pg 153, below (6.17):
Change "that a rightmultiplication" to "that rightmultiplication".
[20081018 JS]
Pg 196, 2nd line of (7.22):
insert 2 in front of BxB.
[20081018 JS]
Pg 200, line 7:
change n 2^{ n } to n 2^{ 2(n1) }.
[20081018 JS]
Pg 250, line 12:
Change "algebraic algebra" to "geometric algebra".
[20081018 JS]
Pg 355, line 7:
Change "a degenerate" to "an indefinite".
[20081018 JS]
*Pg 82, Figure 3.5:
In figure (a) change { a^{*} = A } to { A }, and { a } to { a = A^{*} }.
In figure (b) change { A^{*} = a } to { a }, and { A } to { A = (a)^{*} }.
In the caption change 'of a vector a is the bivector A' to
'of a bivector A is the vector a' and change
'The dual of ' to 'The vector whose dual is'.
[20080820 PH]
**Pg 137, structural exercise 2:
The target formulas are wrong, and the exercise should be cancelled.
[20080712 GG]
*Pg 151, middle:
change k l +2 to k l +2.
[20080712 WKW]
Pg 171, line 4:
change 'to in' to 'to'.
[20080712 BT]
Pg 196, line 9:
change `of dimensionality 0 mod 4' to
`whose dimensionality mod 4 equals 0'
[20080712 AH]
**Pg 222, equation (8.8):
Implicitly, we have used that I is constant in step 2 (where we use (exp(Iφ/2))' = (Iφ/2)' exp(Iφ/2) ), although the text claims that both I and φ can vary. The proper of the derivative of the versor R(τ) does result in a commutation product with a bivector. But this bivector is not
∂_{τ}[Iφ], it is
2∂_{τ}[R(τ)]R(τ)^{˜},
which evaluates to
I∂_{τ}[φ]+∂_{τ}[I](exp(Iφ)1)/I.
(Use
∂_{τ}[exp(Iφ/2)] =
∂_{τ}[cos(φ/2)Isin(φ/2)] =
I∂_{τ}[φ/2]exp(Iφ/2)
 ∂_{τ}[I]sin(φ/2).)
[20080712 PJ]
Pg 277, eq(11.2):
change index of second α to i.
[20080712 BT]
**Pg 329, (12.3), and Table 12.1:
In earlier errata, we tried to bring our notation in agreement with at least one standard on the signs of Plücker coordinates, namely the often referred [57]. This is possible, but since [57] uses a counterintuitive characterization of the direction of the line PQ (namely from Q to P), the changes relative to our text are rather ubiquitous. For this edition of the book, the simplest is to distinguish between the 'Shoemake Plücker direction' a = pq, and the 'GA direction' u = qp = a. The moment vector m = p × q can be defined as m = (p ∧ q)^{*}.
With that, the line of (12.2) would be represented in [57] as {a,m}, so that is the change to (12.3). Though the line coordinates are homogeneous, an oriented geometry should process this sign consistently. But Table 12.1 is about the line {a,m}, oriented from Q to P, since [57] is.
Our great thanks to Allan Cortzen for helping to sort out these annoying signs!
[20080712 AC]
** Pg 332, line 14 and corresponding line in Table 12.1 'Plane through line and point':
change m⋅p to m⋅p.
[20080712 AC]
Pg 336, line 5:
change '16^{3} = 4,096' to '2×16^{2}=512'.
[20080712 AH]
Pg 587, line 10:
One can construct many more null vectors (in fact, 2pq).
Change 'min(p,q) null vectors' to
'at most min(p,q) null vectors for a basis'.
[20080712 GG]
Pg 79, line 7:
remove extra bracket after C.
[20080326 RM]
Pg 95, line 5:
Change 'Suppose you want to detect red, green, blue LEDs' to
'Suppose you want to detect the light emitted by red, green, blue LEDs'
[20080326 AC]
*Pg 130, the example:
the normalization of A is wrong, it should not be ½ but 1/√3. This should be propagated through the example, changing all factors of ½. In the final line of (5.9), the factor pulled out is then √(2/3), and the last paragraph of the example should give the angle as asin(√(2/3)).
[20080326 GG]
*Pg 133, line 8:
change "linear transformations" to "invertible linear transformations".
[20080326 GG]
**Pg 237, penultimate entry Table 8.2:
should be
∂_{X}(X^{1}*A) =
P[X^{1} A X^{1}].
[20080326 RV]
*Pg 266, line 0:
Add
if (ha == (mv::Float)0.0) return _rotor((mv::Float)1.0);
to the code example at the top of the page,
so before the comment line // return rotor:
[20080326 AC]
*Pg 266, line 13:
The code comment // return src * exp(alpha * log(dst * inverse(src)));
should read // return src * exp(alpha * log(inverse(src) * dst));.
[20080326 AC]
*Pg 286, section 11.5.3:
This would be a good place to be more precise about the definition of weight. Write the direction A of a finite kflat X in terms of a chosen pseudoscalar I_{k} for its subspace as A = ω I_{k}
, then ω is the weight of the blade.
For an infinite (k+1)blade X, choose a pseudoscalar I_{k+1} and write
X = ω I_{k+1}, then ω is the weight of the blade. In both cases, the sign of the weight is determined by the chosen orientation of the pseudoscalar, but its magnitude is geometrically objective. It is simple to prove from the definition that a weight is translation invariant. Note also that unit weight and unit norm are different concepts; for the point representation e_{0}+p has weight 1, but norm √(e_{0}^{2}+p^{2})
[20080326 AC]
Pg 291, table 11.3 caption line 2:
change "a a finite" to "a finite".
[20080326 RV]
Pg 295, line 2:
replace a∧u by p∧u and
replace b∧v by q∧v.
[20080326]
*Pg 296, figure 11.7(a):
swap the signs in part (a) of the figure only. Because of the counterintuitive signs resulting in (a) and (c), AC has the sensible suggestion to redefine the
relative orientation of
A to B as B ∩ A(so that the orientator is written first, the orientatee last).
[20080326 AC]
*Pg 297, top:
An additional remark could be made:
Relative to a join of weight 1, and using its orientation as standard, one has p∩q = (p∧q)^{*} =
±(qp).
[20080326 AC]
*Pg 318, exercise 12:
in (11.20) and the text, the 6pointed stars (suggesting full homogeneous duality) should be 5pointed stars (Euclidean duality relative to the unit weight direction blade I_{2} of I). Also, the final duality in (10.20) should be replaced by division by I_{2}.
[20080326 AC]
Pg 325, figure 11.15:
The text inside the screenshot can be improved from
The four red points represent the camera and span the imaging plane.
to
Three red points span the imaging plane and the fourth represents the camera.
[20080326 AC]
*Pg 349, lines 14, 15, 16, 17:
Change the four lines following // compute images of basis vectors to
point imageOfE1 = _point(R * e1 * Ri + (T ^ (e0 << (R * e1 * Ri))));
point imageOfE2 = _point(R * e2 * Ri + (T ^ (e0 << (R * e2 * Ri))));
point imageOfE3 = _point(R * e3 * Ri + (T ^ (e0 << (R * e3 * Ri))));
point imageOfE0 = _point(R * e0 * Ri + (T ^ (e0 << (R * e0 * Ri))));
This change has no effect on the actual outcome of the computation as
(T ^ (e0 << (R * ei * Ri)))) is zero for e1, e2, e3 and e0 is not affected
by R.
[20080326 AC]
*Pg 396, line 4:
The code comment // return src * exp(alpha * log(dst * inverse(src)));
should read // return src * exp(alpha * log(inverse(src) * dst));.
[20080326 AC]
*Pg 425, line 13:
replace "on the sum" by "on the squared sum".
[20080326 AC]
*Pg 425, line 18:
replace "with that" by "with the square of that".
[20080326 AC]
*Pg 425, line 16:
Change o⌋uv to uv. Remove the sentence "By translation covariance...x.
[20080326 AC]
Pg 440, line 7:
A more precise formulation could be added:
B^{*} ∧ A^{*} is a blade of lowest
grade orthogonal to every (nonscalar) factor in A and B.
[20080326 AC]
*Pg 445, line 11:
change o∧(c⌋E) to o∧(c⌋E)^{ˆ}.
[20080326 AC]
*Pg 446, line 7:
insert: Formula (15.2) can be interpreted as the dual of Σ relative to the carrier of dimension k; therefore the expression equals (c½ρ^{2}∞) (1)^{k}, which is a dual sphere containing Σ.
[20080326 AC]
Pg 462, caption figure 15.3:
change "circle C" to "circle K", and "dual sphere s" to "dual sphere σ = Σ^{*}".
[20080326 RV]
*Pg 494 line 8:
The code comment // return src * exp(alpha * log(dst * inverse(src)));
should read // return src * exp(alpha * log(inverse(src) * dst));.
[20080326 AC]
Pg 605, line 6 about projection:
remove inverse from first B.
[20080326 RV]
Pg 345, First equation:
The last term should be (a⋅m'_{C})m'_{A} ∧ m'_{B}.
[20080131 RNG]
Pg 349, line 4:
Should say "would be implemented as".
[20080131 RNG]
Pg 378, line 17:
Should say "from the intersection point".
[20080131 RNG]
Pg 431, line 2:
Should say "of the circles".
[20080131 RNG]
Pg 451, line 11:
Should say "This is actually a tangent vector".
[20080131 RNG]
Pg 473, first line of 16.3.4:
should say "transformations".
[20080131 RNG]
Pg 488, line 4:
should say "to the identity".
[20080131 RNG]
Pg 489, figure caption:
should say "to conformal versors".
[20080131 RNG]
Pg 490, lines 5,6:
should say "we set".
[20080131 RNG]
Pg 529, line 9:
should say "whether a multivector".
[20080131 RNG]
Pg 575, 23.5.2, line 6:
should say "reflections and refractions".
[20080131 RNG]
Pg 581, 23.7, line 6:
should say "beneficial to represent".
[20080131 RNG]
Pg 587, A.5, line 1:
should say "in general metrics".
[20080131 RNG]
Pg 600, last proof, line 3:
Delete the ')'
[20080131 RNG]
Pg 600, last proof, line 4:
Delete the ')' just before second B_{l}
[20080131 RNG]
Pg 92, first line of exercise 9:
should say "right angle" not "straight angle".
[20080125 RNG]
Pg 120, first line:
"through" should be "though".
[20080125 RNG]
Pg 143, last line of 6.1.2:
should say "that they can be retrieved separately"
[20080125 RNG]
Pg 182, 7.3.5, next to last paragraph:
should say "This is explored in structural exercise 10"
[20080125 RNG]
Pg 62, last paragraph: Citation to [46] should be to [45].
[20080110]
Pg 136, last bullet:
Citation to [10] should be to [8].
[20080110]
Pg 202:
Citation [49] should be [52].
[20080110]
Pg 231:
Citation [28] should be [26].
[20080110]
Pg 264, last paragraph of 10.5:
Citation [24] should be [23].
[20080110]
Pg 359, first line:
Citation [10] should be [9].
[20080110]
Pg 483:
Citation [17] should be [15].
[20080110]
Pg 507:
Citation [51] should be [49].
[20080110]
Pg 542:
Citation [44] should be [43].
[20080110]
Pg 236, Section 8.7.2, first sentence
Citation to [38] should be to [36].
[20080108 DD]
Pg 239, second paragraph
Citation to [37] should be to [36].
[20080108 DD]
Pg 590, section B.1.2:
Citation to [34] should be to [33]; citation to [17] should be to [15].
[20080108 DD]
Pg 591, section B.1.4, next to last paragraph:
Citation to [17] should be to [15].
[20080108 DD]
Pg 591, section B.1.4, last paragraph:
Citation to [19] should be to [17].
[20080108 DD]
Pg 450, line 6:
Change 1/A^{2} to A^{2}.
[20080103 AC]
Pg 452, Fig 15.11:
Squared norm of line should be u^{2}.
[20080103 AC]
Pg 453, line 8:
Change 'plane u' to 'dual plane u'.
[20080103 AC]
Pg 454, line 21:
Change u_{q} to uq (to avoid the suggestion that this is a covariant expression). By the same token, you could covariantly write u = T_{uo}[o] a few lines lower.
[20080103 AC]
Pg 456, last paragraph:
Note that a flat point x∧∞ is normalized when its norm is 1, and a point x is normalized when its weight is 1 (so that ∞⌋x = 1).
[20080103 AC]
*Pg 457, middle:
Drop the sentence 'It automatically ... and r'.
[20080103 AC]
Pg 458, last line of 15.5.3:
Change directed to signed.
[20080103 AC]
Pg 459, middle (just above 'Either way'):
Change penultimate minus to a plus.
[20080103 AC]
*Pg 459, last 4 lines:
Swap φ and ψ (18 times!).
[20080103 AC]
*Pg 466, line 8:
E should be transformed according to σ Ê σ^{1}, and the result is therefore simply E.
[20080103 AC]
**Pg 475, line 3:
The answer for this transversion over t should be
1 + ot = e^{ot}. This correction should be propagated through the text. It changes the last line of Table 16.1 (remove the '/2' twice), and the last column of Table 16.2 (replace t by
2t in this column only).
[20080103 AC]
Pg 477, Table 16.2, in transversion column:
Change e to E.
[20080103 AC]
Pg 480, line 10:
The translation matrix should have 1s on its diagonal.
[20080103 AC]
Pg 480, line 9:
Change inversion to conjugated inversion.
[20080103 AC]
Pg 313, line 13:
remove q^{2} from the numerator, change denominator to
e_{0}^{2}q^{2}
(and realize that formula assumes e_{0}^{2} ≠ q^{2} to be valid).
[20071130 AC]
Pg 373, figure 13.2:
Swap the labels of p and q.
[20071130 AC]
Pg 374, halfway:
Change pq to qp.
[20071130 AC]
Pg 376, line 10:
Change X^{2} > 0 to
X^{2} < 0.
[20071130 AC]
Pg 400, line 7:
Change A_{k} to A_{nk} (twice), and the
sixpointed star to a fivepointed star.
[20071130 AC]
Pg 403, line 7:
Change grade to dimension.
[20071130 AC]
Pg 405, line 11:
Change This is a vector to This may be pictured as a vector.
[20071130 AC]
Pg 405, line 7:
Change length to signed length.
[20071130 AC]
**Pg 407, table 14.1:
On top of other errors already corrected earlier, the
entry (dual round, squared size) should have the plus changed to minus.
[20071130 AC]
*Pg 407409:
We should have defined more clearly what we mean by weight and orientation as the split of the geometrical concept direction into a scalar and a unit blade element. In the caption of Table 14.2, weight is defined in a manner that makes it always positive  but this then presumes that the orientation will pick up the sign. AC clarifies the issue raised in the second paragraph of page 409:
Let D = E_{k} ∞
be the direction of a conformal blade X.
If a unit orientation I_{k}
has been given for the kD vectorspace of
E_{k}, and
E_{k} = α I_{k}, then α is the weight of
E_{k}, and the
orientation of X is
sign(α) I_{k}.
If k=0, the standard orientation is 1, and if
k=n, the standard orientation is I_{n}.
These are invariant under rigid body motions; for the other kvalues the
orientations are still invariant under translations.
[20071130 AC]
Pg 418, line 3:
Change two spheres to two dual spheres.
[20071130 AC]
Pg 419, line 15:
Insert 2 Σ_{i} to the right of the second =.
[20071130 AC]
Pg 419, line 6:
Change Γ to Γ'.
[20071130 AC]
Pg 439, line 2:
Change of the remaining to of one of the remaining.
[20071130 AC]
Pg 441, line 3:
Swap ½ and ½.
[20071130 AC]
Pg 441, line 4:
Change radius to squared radius.
[20071130 AC]
*Pg 446, (15.3) and just after (15.5):
Change (1)^{n} to (1)^{k}, where k is the dimension
of the carrier.
[20071130 AC]
*Pg 594, step 2:
It was pointed out to us by GG that step 2 of this proof
is logically flawed, since it assumes
a ⊆ C_{k1}
without first proving this from the premise
a ⊆ C_{k}. He provided total rewrite of these steps of the proof,
but a local fix was given by AC:
1. As step 1 of the induction, if one of
A, B or C is a scalar, this is covered by either of the
cases "A is scalar" or "A is not scalar, but B is".
Both are trivial.
2. In case 2, replace "is equivalent to ...[end of equation]" by:
is equivalent to a∧C_{k1}=0 for some blade C_{k1}.
Then we obtain:
a∧(b⌋C_{k}) =
a∧(b⌋(a∧C_{k1})) =
a∧((b⌋a)∧C_{k1}
 a∧(b⌋C_{k1})) =
a∧(b⌋a)∧C_{k1} =
(a⌋b)⌋C_{k}.
[20071130 GG, AC]
Pg 90, line 1 and 3 of (3.32):
add a ∧ before the second ellipsis in the first line, remove ∧b_{i}... in the third line.
[20071127 GG]
Pg 103, line 4:
change Projection to Parallel Projection.
[20071127 GG]
Pg 105, item 4:
change Reflections to Point Reflections.
[20071127 GG]
**Pg 109, line 4:
Only for a Euclidean metric with an orthonormal basis is the matrix of the adjoint equal to the transpose; for other metrics, a metric tensor needs to be included with the transpose. This fact makes the final statement of this paragraph all the more valid.
[20071127 GG]
Pg 109, line 4:
remove first comma from equation.
[20071127 GG]
Pg 114, line 2:
change j^{th} to i^{th}.
[20071127 GG]
Pg 114, line 6:
change (i,j) to (j,i).
[20071127 GG]
Pg 115, line 4:
change first b_{j} to b^{j}.
[20071127 GG]
Pg 116, line 3:
change index i1 to i=1.
[20071127 GG]
*Pg 116, line 4:
One should avoid counting blades like
b_{1}∧b_{2} and
b_{2}∧b_{1} twice, for instance by
an ordering demand on the indices such as i<j.
[20071127 GG]
*Pg 119, exercise 9:
The metric needs to be nondegenerate, or the reciprocal may not exist.
[20071127 AC]
*Pg 225, bottom derivation:
AC reports a more compact derivation:
lim_{ε→0} ((x+εa)^{1}x^{1})/ε =
lim_{ε→0}
x^{1}
((x+εa)x)/ε)
(x+εa)^{1} =
x^{1} a x^{1}.
[20071127 AC]
*Pg 256, line 2 to 5:
Although the resulting condition 1/p+1/q+1/r>1 is correct, the polar triangle argument we are using here is flawed. Following a hint from AC, we are studying Coxeter to summarize the proper derivation.
[20071127 AC]
*Pg 339, line 7:
Replace matrix entry [f^{1}] by [f^{1}].
[20071127 AC]
**Pg 589, equation (B.1):
first B⌋A on last line should be A⌊B
[20071127 PJK]
Pg 337, line 6:
drop of from the support of vector.
[20071122 PJK]
Pg 358, line 13:
change in literature to in the literature.
[20071122 PJK]
Pg 371, middle:
drop one the from We substitute the the.
[20071122 PJK]
Pg 401, line above (14.4):
Change this results to these results.
[20071122 PJK]
Pg 439, caption Figure 15.1:
Second meet should be plunge, second plunge should be meet.
[20071122 PJK]
*Pg 106, just below equation:
Change 'By induction...follows' to
'Similar steps can be used to provide an inductive proof of the general result for blades of (3.26).'
[20071029 GG]
Pg 78, line 3:
change first B^{∼} to A^{∼}.
[20071027 HT]
Pg 90, middle equation:
append a subscript j to each of the three Σs.
[20071027 GG]
Pg 90, middle:
change 'like [16]' to 'like [15]'.
[20071027 GG]
Pg 90, line 2:
change m1 to n1.
[20071027 GG]
Pg 300, line 4:
change p_{1} and q_{1} to p' and q', respectively.
[20071027 PJK]
Pg 308, line 11:
change 'locus of the equation' to 'locus of all points x satisfying the equation'.
[20071027 PJK]
Pg 309, line 12:
change 'demand' to 'demanding'.
[20071027 PJK]
Pg 314, line 3:
change 'trough' to 'through'.
[20071027 PJK]
Pg 594, line below (B.6):
remove '=0'.
[20071027 HT]
Pg 595, middle of proof part 4:
change 'by (B.6)' to 'by (B.7)'.
[20071027 HT]
**Pg 472, line 6:
replace by T_{t} R =
R T_{R1tR}.
[20071019 AH]
Pg 50, line 8:
change Λ^{2} R^{n} to Λ R^{n}.
[20071016 GG]
Pg 73, line 1921:
change "(kl)blade" to "(lk)blade" and
change Λ^{kl} R^{n} to
Λ^{lk} R^{n}.
[20071016 GG]
Pg 74, line 6:
change "another vector" to "additional vectors".
[20071016 GG]
Pg 84, line 8:
change "x_{⊥}B=0" to "x_{⊥}⌋B=0".
[20071016 GG]
Pg 589, section B.1.1:
it is helpful to write A_{k} for A
and B_{l} for B.
[20071016 GG]
*Pg 339, line 10:
replace e_{0}^{1}  f
by e_{0}^{1}  f^{1}.
[20071011 AC]
*Pg 346, line 10:
replace R^{1}_{B} by R^{A}_{B} (twice).
[20071011 AC]
Pg 363, Table 13.2, last column:
the entries should be about p, π, σ and σ, respectively, rather than all about π.
[20071011 AC]
Pg 372, line 5:
change A_{k}^{2}
to A_{k}^{2}.
[20071011 AC]
Pg 29, line 3: change products to product.
[20071008 MM]
Pg 40, line 2: delete more than.
[20071008 MM]
Pg 41, line 2,3: change to line L and line M.
[20071008 MM]
Pg 42, par 5, line 3: change is that to conveys that.
[20071008 MM]
Pg 47, line 5: change bold to bold capital.
[20071008 MM]
Pg 47, Table 2.3, line A,B,etc:
delete "typically not a vector".
[20071008 MM]
*Pg 52, drill 4: change support vector to position vector (twice).
[20071008 MM]
Pg 61, line 5:
change to v(p) = V(p)/ V(p).
[20071008 MM]
*Pg 222, last 2 lines:
The intended bold notation ω of the angular velocity vector was not conveyed in printing.
It should be used throughout on the last line, and replace the first two ω symbols on the line before.
[20071008 PJK]
Pg 233, Outer Product: change "is can" to "can".
[20071008 PJK]
Pg 250, line 9: change "so by seperating...in" to "thereby separating...into"
[20071008 PJK]
Pg 287, line 12: change X to x.
[20071008 PJK]
Pg 304, line 3:
change X to X.
[20070915]
**Pg 305, lines 10, 17 for X^{*}:
change e_{0}^{1} to
e_{0}^{1}
[20070915 AC]
*Pg 331, line 7:
Change direction vector to minus the usual direction vector.
[20070915 AC]
Pg 333, line 6:
Divide the RHS by a_{1}×a_{2}
to actually get (11.20).
[20070915 AC]
** Pg 335, Table 12.2, entry (Affine,Plane):
Change [t]^{T} to
[t]^{T}det(f)[f]^{T},
and change 1 (element [4,4]) to det(f).
[20070915 AC]
*Pg 135, halfway:
It is not true that adj(f)^{1}[J^{1}] = f[J]^{1}.
Therefore this particular derivation of the structure preservation of the meet is incorrect.
A more direct derivation is to observe that the defining equations (5.1) and (5.2)
are also valid, by outermorphism, for f[A], f[B], f[M], f[J].
Therefore the ftransformed part of (5.6) is valid too, so
f[A∩B] = f[A]∩f[B],
with f[J] substituting for J.
[20070911 AC]
Pg 196, 2nd line of (7.22):
change '1' to 'x'.
[20070911 PJK]
*Pg 255, line 20: '16 equivalent' should be '8 equivalent'.
[20070911 AC]
*Pg 255, last line:
There is a better way to permit the possibilities R^{p} = ± 1
(in the second paragraph), namely by requiring R^{2p} = 1.
This avoids some subtle problems in the 3D equation, which is then replaced by
(ab)^{2p}=(bc)^{2q}=(ca)^{2r}=1.
[20070911 AC, personal communication]
Pg 82, (3.24):
strictly, the condition A,B ⊆ I should be A ⊆ I,
and applies only to the second duality.
[20070904]
Pg 262, line 10:
in "Optimal scaling σ_{ij} em", drop em.
[20070904 AC]
Pg 262, (10.16) and (10.19):
last R should have an index j.
[20070904 AC]
Pg 279, line 12:
change (pq) to (qp).
[20070904 AC]
Pg 281, line 11:
change ⋅ to ⌋.
[20070904 AC]
**Pg 291, Table 11.3:
entry Support of Finite Flat should have denominator
e_{0}^{1}⌋X.
[20070904 AC]
Pg 295, line 13:
change orientations (v∧u)^{*} to
directions (u∧v)^{*}.
[20070904 AC]
Pg 605, line 7:
the condition A,B ⊆ I
should be A ⊆ I.
[20070904 AC]
Pg 129, just above (5.7):
change "the meet is the dual of" to "the dual meet is".
[20070830 PJK]
Pg 180, line 4:
change siding to sliding.
[20070830 PJK]
Pg 186, middle of page, "So even":
change e^{B}+e^{A}
to e^{B}e^{A}.
[20070830 PJK]
*Pg 315, Fig 11.12:
mark the intersection of the green line and the line L^{*} with a red point.
[20070829]
*Pg 5, Fig 1.2, line 6:
replace 'e2' by 'n' and add comment "n is a direction vector".
[20070828 MM]
*Pg 5, Fig 1.2:
add comment "ni represents the point at infinity".
[20070828 MM]
Pg 6, Fig 1.3:
denote center of sphere as c.
[20070828 MM]
Pg 7, item Intersections:
change πL/π to πL/π.
[20070828 MM]
Pg 14, line 4:
change split in to split into.
[20070828 MM]
Pg 17, line 2:
change have had to have.
[20070828 MM]
Pg 253, figure 10.3:
remove spurious symbol t.
[20070823]
Pg 207, bottom line:
x^{2} should be y^{2}
[20070822 AC]
**Pg 217, (8.3):
coefficient 1/4 should be 1/3!. [20070822 AC]
Pg 223, last formulas:
the division should be interpreted as 'right division'.
[20070822 AC]
Pg 226, third formula:
should be x^{1}P[a]x^{1}.
[20070822 AC]
Pg 226:
∂_{x}(x⋅A) should be ∂_{x}(x⌋A).
[20070822 AC]
Pg 228, (8.10):
drop first φ from this line.
[20070822 AC]
Pg 231, last formula:
∂_{x}⋅F(x) should be
∂_{x}⌋F(x).
[20070822 AC]
Pg 239, first line:
reverse the order of the arguments of ∧.
[20070822 AC]
Pg 252, line 4:
U is a unit bivector, v a unit vector.
[20070822 AC]
**Pg 253, (10.11):
exchange a and b, and include a minus sign in all
three definitions. This gives positive angles for a positive
orientation of a∧b∧c.
[20070822 AC]
**Pg 254, first equation: swap a and c.
[20070822 AC]
Pg 135, line 11:
second A∩B should be A∪B
[20070813 AC]
*Pg 157, middle derivation:
from line 2 onwards, a factor ½ is missing,
and line 3 should have a minus on the term AaxA^{1}.
[20070813 AC]
Pg 117, formula for f[A⌋B]:
the ∗ should be ⌋, see (4.13).
[20070810 PJK]
*Pg 69, line 6:
change "This involves" to "In 3D, this involves"
[20070808 AC]
*Pg 70, case 3:
blades can be disjoint and still have a welldefined cosine measure
[20070808 AC].
Replace the text of item 3 by:
 We then need at least two rotations in orthogonal 2blades to bring the
subblades into alignment (see [52]).
The cosine computed by (3.5) is now equal to the product of the cosines
of these orthogonal rotations,
and therefore zero if at least one of them is over a right angle.
In that case, the blades should be considered
perpendicular. (An example of such a situation in 4D space involves the 2blades
A = e_{1}∧e_{3} and
B =(cosα e_{1}
sinα e_{2})∧(cosβ e_{3}
sinβ e_{4}). Verify that
A∧B =  sinα sinβ
e_{1}∧e_{2}∧e_{3}∧e_{4},
so that they are indeed disjoint, while their cosine equals
A∗B˜ = cosα cosβ.)
The sentence that follows in the main text: "Reinterpreting...common)."
should be replaced by:

Reinterpreting a zero cosine within this larger context,
it means that two blades are perpendicular if they require at least
one rightangle rotation to align them.
Pg 610, reference [21]:
change Images to Views
[20070808]
Pg 453, line 12:
Change "instead to" to "instead of".
[20070726]
Pg 3, line 7, change n to N.
[20070723]
*Pg 203, exercise 8,
change 2π/3 to 2π/3.
[20070723]
*Pg 418, caption Fig 14.8:
change "two times" and "twice" to "half".
[20070723]
Pg 460, drill 2:
Change Σ to K.
[20070718]
**Pg 407, Table 14.1:
Some annoying sign errors crept into this table and its associated
derivations. You may download a new
copy of the table with all these corrections incorporated.
[20070717]
 Table 14.1, entry (flat, direction): add minus
 Table 14.1, entry (dual flat, direction): add minus
 Table 14.1, entry (dual tangent, direction): change to
(∞⌋X^{*})∧ ∞
 Table 14.1, entry (dual round, direction): change to
(∞⌋X^{*})∧ ∞
 Table 14.1, entry (tangent, location): add minus to X/(∞⌋X)
 Table 14.1, entry (dual tangent, location): add minus to X/(∞⌋X)
 Table 14.1, entry (round, location): add minus to X/(∞⌋X)
 Table 14.1, entry (dual round, location): add minus to X/(∞⌋X)
 Table 14.1, entry (round, squared size): change minus to plus
 Table 14.1, entry (dual round, squared size): change plus to minus
[20070401]
Pg xxii, caption figure 11.5:
replace p by x.
[20070716]
Pg 388, drill 6:
Replace representation by direct representation.
[20070716]
*Pg 389, exercise 5:
Show the formula, but there is no need to adapt the algorithm.
[20070716]
*Pg 389, drill 11:
This is a nonsensical problem; cancel it.
[20070716]
** Pg 389, structural exercise 1:
A p is missing on the right hand side.
[20070716]
*Pg 316, exercise 4: replace k+1 by k1.
[20070715]
*Pg 53, exercise 7:
this is not really 'harder', but A should obviously be assumed to be nonzero.
[20070713]
*Pg 427, drill 5:
The carrier is only properly defined in Section 15.2.2.
[20070712]
Pg 460, drills 1 and 2:
Change the Chapter to Chapter, twice.
[20070712]
Pg 217, second last sentence in paragraph after (8.4):
the 'You'
should be 'you'.
[20070711]
Pg xix, C.1:
change Peometric to Geometric.
[20070525 EH]
Pg 148, distributivity:
change (A+B)C = AB+BC to (A+B)C = AC + BC.
[20070524 BJC]
Pg 74, line 4:
change "inner product of ... and" to "contraction of ... onto".
[20070521 PdB]
Pg 24, property (7) has one β too many on the rhs.
[20070510 JM]
**Pg 49, equation (2.10):
Is wrong, it should count all contributions that make up the
intended grade, as in
<A∧B>_{k} =
Σ^{k}_{i=0} <A>_{i}
∧<B>_{ki}.
We do not actually use this Grassmann algebra equation, so this error
does not affect the mathematics in the remainder of the text.
[20070507 RP]
**Pg 49, first equation:
both indices should run from 0 to n.
[20070411 AH]
Pg 51,
the basis in Drill 2.12.1.1 lacks e_{1}∧e_{2}.
[20070411 AH]
Pg 69, second line below the main derivation
should have a⋅a instead of a⋅b.
[20070411 AH]
Pg xx, caption of figure 3.3:
we mean a 2blade.
[20070401]
Pg xxviii:
the section numbers of the list of programming examples are in regular font,
instead of bold.
[20070401]
Pg xxi, caption of figure 6.1:
we mean Noninvertibility.
[20070401]
Pg 40, Figure 2.7:
the long blue arrow, and its label, should be red.
[20070401]
Pg 52, exercise 3, drop comma.
[20070401]
Pg 73, line 20:
change "mapping" to "bilinear mapping".
[200080326 AC]
Pg 78, last in sequence of formulas on second and third lines is missing a (.
[20070401]
Pg 91, the basis in Drill 3.10.1.1 lacks e_{1}∧e_{2}.
[20070401]
*Pg 92, exercise 7:
show this in a 1dimensional Euclidean space.
[20070401]
Pg 92, last line of exercise 3:
remove the.
[20070401]
*Pg 112, second to last paragraph:
the formula involves [f]^{T}, the inverse of the transpose.
We should have introduced this nonstandard notation explicitly.
[20070401]
Pg 118, structural exercise 4:
put square brackets around the arguments of f (twice).
[20070401]
*Pg 118, exercise 4:
hand calculations are simpler if you use instead f[b] = +3a  5b.
[20070401]
*Pg 119, exercise 7:
It is better to redefine g by including a reversion of its argument
through A * g[A^{˜}].
[20070401]
*Pg 119, exercise 13:
The mapping f is a nonuniform scaling rather than a shear.
Do the exercise, then change one e_{1} into e_{2} to get a proper shear, and do it again.
[20070401]
*Pg 129, the paragraph before (5.6)
contains an error, for A'^{1} is not generally equal to
B⌋J^{1}.
Replace this paragraph by the following continuation of the derivation:
 Then
1=(B⌋J^{1})∗(A⌊M^{1})=(M^{1}∧(B⌋J^{1}))∗A=(M^{1}∧(B⌋J^{1}))⌋A.
Now M=M∧1=M∧((M^{1}∧(B⌋J^{1}))⌋A)=(M⌋(M^{1}∧(B⌋J^{1})))⌋A=(B⌋J^{1})⌋A, so that we obtain:
*Pg 130: the last argument in the second line of the derivation
should be (e_{2}+e_{3}) rather than e_{3},
though this does not affect the final outcome.
[20070401]
*Pg 137, exercise 1, the second equation
should have A rather than its inverse.
[20070401]
*Pg 137, exercise 3,
change "magnitude" to read "magnitude of their meet".
[20070401]
Pg 160, the basis in Drill 6.6.1.2 lacks e_{1}∧e_{2}.
[20070401]
**Pg 190, the entry for row A and column Y should have an extra (1)^{n1}.
[20070401]
Pg 240, last line:
change that to than.
[20070401]
Pg 241, exercise 4:
change absolute value bars to (double) norm bars.
[20070401]
Pg 258, line 6:
add "and additionally make (10.14) valid for the 2nd and 3rd quadrant" after "stability". However, you may then not get the principal value, so an additional test is required to bring the angle in the range [π, π].
[200080326 AC]
*Pg 293, caption figure 11.5:
replace p by x (twice).
[20070401]
*Pg 314, bottom line:
replace p by x (twice).
[20070401]
*Pg 318, exercise 17
is flawed, though the message stands. Even for the translation of a point x,
one needs to use a nonversorlike sandwiching T x T. Show that.
[20070401]
Pg 331, just above 3.Lines:
its coordinate should be its coordinates.
[20070401]
*Pg 333, line 3:
The signs of Π ∩ L and L ∩ Π are identical (see Table 5.1). The simplest way to fix this is to put a minus in front of
Π ∩ L. As a consequence, the following paragraph should stop after the phrase "It corresponds to the result in Table 12.1" (and we apologize to [60]).
[20070401 AC]
*Pg 338, line 8:
remove "inner and", and replace "both spanning and intersection behave" by "spanning behaves".
[20070401 AC]
*Pg 338, line 2:
the direction formula should be D =
e_{0}^{1}⌋(e_{0}∧(f^{1}⌋X)) and
the support point is at
(e_{0}^{1}⌋e_{0}∧X)/D.
[20070401 AC]
**Pg 408, line 9:
Remove "but the formula then computes ρ^{2}"
[20070401]
**Pg 409, line 8:
include minus sign in X/(∞⌋X)
[20070401]
*Pg 461, exercise 4:
There are two formula errors and a flaw in this exercise. Either drop it completely,
or make spotting those the actual exercise.
Do not use the formula in applications.
[20070401]
*Pg 483 drill 3:
Replace e_{1}∧e_{2} by e_{1}+e_{2}.
[20070401]
*Pg 485 structural exercise 4:
not true for general flats. Replace flats by flats through the origin.
[20070401]
Pg 485, exercise 5,
Change the second origin to centers.
[20070401]
*Pg 485, structural exercise 5:
Change the last a to its inverse a^{1}.
[20070401]
Pg 575, at the bottom:
The code comment reads pix_color.
Replace by pixelColor.
[20070401]
Pg 578, halfway:
the code comment reads 'fpt'2.
Replace by 'fpt2'.
[20070401]
Copyright 20072009 Leo Dorst, Daniel Fontijne and Stephen Mann.
Disclaimer: This website is maintained by the book authors.
Morgan Kaufmann (an imprint of Elsevier) is in no way responsible for its content.