LEO DORST  DANIEL FONTIJNE  STEPHEN MANN
Errata  Page Order
Those errata in bold correspond to Major Corrections; those marked with '*' correspond to Minor Corrections, and those that are unmarked correspond to Typos.
Pg xix, C.1:
change Peometric to Geometric.
[20070525 EH]
Pg xx, caption of figure 3.3:
we mean a 2blade.
[20070401]
Pg xxi, caption of figure 6.1:
we mean Noninvertibility.
[20070401]
Pg xxii, caption figure 11.5:
replace p by x.
[20070716]
Pg xxviii:
the section numbers of the list of programming examples are in regular font,
instead of bold.
[20070401]
Pg 3, line 7, change n to N.
[20070723]
*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 24, property (7) has one β too many on the rhs.
[20070510 JM]
Pg 29, line 3: change products to product.
[20071008 MM]
Pg 40, Figure 2.7:
the long blue arrow, and its label, should be red.
[20070401]
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, Table 2.3, line 5:
Change kvectors of any grade to multivectors.
[20081018 JS]
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 49, first equation:
both indices should run from 0 to n.
[20070411 AH]
**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 50, line 8:
change Λ^{2} R^{n} to Λ R^{n}.
[20071016 GG]
Pg 51,
the basis in Drill 2.12.1.1 lacks e_{1}∧e_{2}.
[20070411 AH]
*Pg 52, drill 4: change support vector to position vector (twice).
[20071008 MM]
Pg 52, exercise 3, drop comma.
[20070401]
*Pg 53, exercise 7:
this is not really 'harder', but A should obviously be assumed to be nonzero.
[20070713]
*Pg 53, exercise 7:
insert "precisely" after "contains".
[20081018 SP]
Pg 61, line 5:
change to v(p) = V(p)/ V(p).
[20071008 MM]
Pg 62, last paragraph: Citation to [46] should be to [45].
[20080110]
*Pg 69, line 6:
change "This involves" to "In 3D, this involves"
[20070808 AC]
Pg 69, second line below the main derivation
should have a⋅a instead of a⋅b.
[20070411 AH]
*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 73, line 1921:
change "(kl)blade" to "(lk)blade" and
change Λ^{kl} R^{n} to
Λ^{lk} R^{n}.
[20071016 GG]
Pg 73, line 20:
change "mapping" to "bilinear mapping".
[200080326 AC]
Pg 74, line 4:
change "inner product of ... and" to "contraction of ... onto".
[20070521 PdB]
Pg 74, line 6:
change "another vector" to "additional vectors".
[20071016 GG]
Pg 78, line 3:
change first B^{∼} to A^{∼}.
[20071027 HT]
Pg 78, last in sequence of formulas on second and third lines is missing a (.
[20070401]
Pg 79, line 7:
remove extra bracket after C.
[20080326 RM]
*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 82, (3.24):
strictly, the condition A,B ⊆ I should be A ⊆ I,
and applies only to the second duality.
[20070904]
Pg 84, line 8:
change "x_{⊥}B=0" to "x_{⊥}⌋B=0".
[20071016 GG]
Pg 90, line 2:
change m1 to n1.
[20071027 GG]
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 90, middle:
change 'like [16]' to 'like [15]'.
[20071027 GG]
Pg 90, middle equation:
append a subscript j to each of the three Σs.
[20071027 GG]
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 92, first line of exercise 9:
should say "right angle" not "straight angle".
[20080125 RNG]
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 103, line 4:
change Projection to Parallel Projection.
[20071127 GG]
Pg 105, item 4:
change Reflections to Point Reflections.
[20071127 GG]
*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 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 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 114, line 6:
change (i,j) to (j,i).
[20071127 GG]
Pg 114, line 2:
change j^{th} to i^{th}.
[20071127 GG]
Pg 115, line 4:
change first b_{j} to b^{j}.
[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 116, line 3:
change index i1 to i=1.
[20071127 GG]
Pg 117, formula for f[A⌋B]:
the ∗ should be ⌋, see (4.13).
[20070810 PJK]
*Pg 118, exercise 4:
hand calculations are simpler if you use instead f[b] = +3a  5b.
[20070401]
Pg 118, structural exercise 4:
put square brackets around the arguments of f (twice).
[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 9:
The metric needs to be nondegenerate, or the reciprocal may not exist.
[20071127 AC]
*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 120, first line:
"through" should be "though".
[20080125 RNG]
*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 129, just above (5.7):
change "the meet is the dual of" to "the dual meet is".
[20070830 PJK]
*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 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 133, line 8:
change "linear transformations" to "invertible linear transformations".
[20080326 GG]
*Pg 134, line 11:
The table entry for 'Point and Plane' in 'Space' should have a minus, not a plus.
[20081018 JS]
*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 135, line 11:
second A∩B should be A∪B
[20070813 AC]
Pg 136, last bullet:
Citation to [10] should be to [8].
[20080110]
**Pg 137, structural exercise 2:
The target formulas are wrong, and the exercise should be cancelled.
[20080712 GG]
*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 143, last line of 6.1.2:
should say "that they can be retrieved separately"
[20080125 RNG]
*Pg 144, line 9:
Change "each element" to "each invertible element".
[20081018 JS]
Pg 148, distributivity:
change (A+B)C = AB+BC to (A+B)C = AC + BC.
[20070524 BJC]
*Pg 151, middle:
change k l +2 to k l +2.
[20080712 WKW]
Pg 153, below (6.17):
Change "that a rightmultiplication" to "that rightmultiplication".
[20081018 JS]
*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 160, the basis in Drill 6.6.1.2 lacks e_{1}∧e_{2}.
[20070401]
*Pg 162, line 7:
subscript should be lk.
[20090104 ORSL]
Pg 171, line 4:
change 'to in' to 'to'.
[20080712 BT]
Pg 180, line 4:
change siding to sliding.
[20070830 PJK]
Pg 182, 7.3.5, next to last paragraph:
should say "This is explored in structural exercise 10"
[20080125 RNG]
Pg 186, middle of page, "So even":
change e^{B}+e^{A}
to e^{B}e^{A}.
[20070830 PJK]
**Pg 190, the entry for row A and column Y should have an extra (1)^{n1}.
[20070401]
Pg 196, line 9:
change `of dimensionality 0 mod 4' to
`whose dimensionality mod 4 equals 0'
[20080712 AH]
Pg 196, 2nd line of (7.22):
change '1' to 'x'.
[20070911 PJK]
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 202:
Citation [49] should be [52].
[20080110]
*Pg 203, exercise 8,
change 2π/3 to 2π/3.
[20070723]
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 217, second last sentence in paragraph after (8.4):
the 'You'
should be 'you'.
[20070711]
**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 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 223, last formulas:
the division should be interpreted as 'right division'.
[20070822 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 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:
Citation [28] should be [26].
[20080110]
Pg 231, last formula:
∂_{x}⋅F(x) should be
∂_{x}⌋F(x).
[20070822 AC]
Pg 233, Outer Product: change "is can" to "can".
[20071008 PJK]
Pg 236, Section 8.7.2, first sentence
Citation to [38] should be to [36].
[20080108 DD]
**Pg 237, penultimate entry Table 8.2:
should be
∂_{X}(X^{1}*A) =
P[X^{1} A X^{1}].
[20080326 RV]
Pg 239, second paragraph
Citation to [37] should be to [36].
[20080108 DD]
Pg 239, first line:
reverse the order of the arguments of ∧.
[20070822 AC]
Pg 240, last line:
change that to than.
[20070401]
Pg 241, exercise 4:
change absolute value bars to (double) norm bars.
[20070401]
Pg 250, line 12:
Change "algebraic algebra" to "geometric algebra".
[20081018 JS]
Pg 250, line 9: change "so by seperating...in" to "thereby separating...into"
[20071008 PJK]
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 253, figure 10.3:
remove spurious symbol t.
[20070823]
**Pg 254, first equation: swap a and c.
[20070822 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 255, line 20: '16 equivalent' should be '8 equivalent'.
[20070911 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 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 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 264, last paragraph of 10.5:
Citation [24] should be [23].
[20080110]
*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 277, eq(11.2):
change index of second α to i.
[20080712 BT]
Pg 279, line 12:
change (pq) to (qp).
[20070904 AC]
Pg 281, line 11:
change ⋅ to ⌋.
[20070904 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 287, line 12: change X to x.
[20071008 PJK]
**Pg 291, Table 11.3:
entry Support of Finite Flat should have denominator
e_{0}^{1}⌋X.
[20070904 AC]
Pg 291, table 11.3 caption line 2:
change "a a finite" to "a finite".
[20080326 RV]
*Pg 293, caption figure 11.5:
replace p by x (twice).
[20070401]
Pg 295, line 2:
replace a∧u by p∧u and
replace b∧v by q∧v.
[20080326]
Pg 295, line 13:
change orientations (v∧u)^{*} to
directions (u∧v)^{*}.
[20070904 AC]
*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 300, line 4:
change p_{1} and q_{1} to p' and q', respectively.
[20071027 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 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 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 314, bottom line:
replace p by x (twice).
[20070401]
Pg 314, line 3:
change 'trough' to 'through'.
[20071027 PJK]
*Pg 315, Fig 11.12:
mark the intersection of the green line and the line L^{*} with a red point.
[20070829]
*Pg 316, exercise 4: replace k+1 by k1.
[20070715]
*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 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 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 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 331, line 7:
Change direction vector to minus the usual direction vector.
[20070915 AC]
Pg 331, just above 3.Lines:
its coordinate should be its coordinates.
[20070401]
** 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 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 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 336, line 5:
change '16^{3} = 4,096' to '2×16^{2}=512'.
[20080712 AH]
Pg 337, line 6:
drop of from the support of vector.
[20071122 PJK]
*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 339, line 7:
Replace matrix entry [f^{1}] by [f^{1}].
[20071127 AC]
*Pg 339, line 10:
replace e_{0}^{1}  f
by e_{0}^{1}  f^{1}.
[20071011 AC]
Pg 345, First equation:
The last term should be (a⋅m'_{C})m'_{A} ∧ m'_{B}.
[20080131 RNG]
*Pg 346, line 10:
replace R^{1}_{B} by R^{A}_{B} (twice).
[20071011 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 349, line 4:
Should say "would be implemented as".
[20080131 RNG]
Pg 355, line 7:
Change "a degenerate" to "an indefinite".
[20081018 JS]
Pg 358, line 13:
change in literature to in the literature.
[20071122 PJK]
Pg 359, first line:
Citation [10] should be [9].
[20080110]
Pg 363, Table 13.2, last column:
the entries should be about p, π, σ and σ, respectively, rather than all about π.
[20071011 AC]
Pg 371, middle:
drop one the from We substitute the the.
[20071122 PJK]
Pg 372, line 5:
change A_{k}^{2}
to A_{k}^{2}.
[20071011 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 378, line 17:
Should say "from the intersection point".
[20080131 RNG]
Pg 388, drill 6:
Replace representation by direct representation.
[20070716]
** Pg 389, structural exercise 1:
A p is missing on the right hand side.
[20070716]
*Pg 389, drill 11:
This is a nonsensical problem; cancel it.
[20070716]
*Pg 389, exercise 5:
Show the formula, but there is no need to adapt the algorithm.
[20070716]
*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 400, line 7:
Change A_{k} to A_{nk} (twice), and the
sixpointed star to a fivepointed star.
[20071130 AC]
Pg 401, line above (14.4):
Change this results to these results.
[20071122 PJK]
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:
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 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 408, line 9:
Remove "but the formula then computes ρ^{2}"
[20070401]
**Pg 409, line 8:
include minus sign in X/(∞⌋X)
[20070401]
*Pg 418, caption Fig 14.8:
change "two times" and "twice" to "half".
[20070723]
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 425, line 13:
replace "on the sum" by "on the squared sum".
[20080326 AC]
*Pg 425, line 16:
Change o⌋uv to uv. Remove the sentence "By translation covariance...x.
[20080326 AC]
*Pg 425, line 18:
replace "with that" by "with the square of that".
[20080326 AC]
*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 427, drill 5:
The carrier is only properly defined in Section 15.2.2.
[20070712]
Pg 431, line 2:
Should say "of the circles".
[20080131 RNG]
Pg 439, caption Figure 15.1:
Second meet should be plunge, second plunge should be meet.
[20071122 PJK]
Pg 439, line 2:
Change of the remaining to of one of the remaining.
[20071130 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 441, line 3:
Swap ½ and ½.
[20071130 AC]
Pg 441, line 4:
Change radius to squared radius.
[20071130 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 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 450, line 6:
Change 1/A^{2} to A^{2}.
[20080103 AC]
Pg 451, line 11:
Should say "This is actually a tangent vector".
[20080131 RNG]
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 453, line 12:
Change "instead to" to "instead of".
[20070726]
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, last 4 lines:
Swap φ and ψ (18 times!).
[20080103 AC]
Pg 459, middle (just above 'Either way'):
Change penultimate minus to a plus.
[20080103 AC]
Pg 460, drills 1 and 2:
Change the Chapter to Chapter, twice.
[20070712]
Pg 460, drill 2:
Change Σ to K.
[20070718]
*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 462, caption figure 15.3:
change "circle C" to "circle K", and "dual sphere s" to "dual sphere σ = Σ^{*}".
[20080326 RV]
Pg 462, caption figure 15.3:
The period '.' at the end of the caption is missing.
[20081214]
*Pg 466, line 8:
E should be transformed according to σ Ê σ^{1}, and the result is therefore simply E.
[20080103 AC]
**Pg 472, line 6:
replace by T_{t} R =
R T_{R1tR}.
[20071019 AH]
Pg 473, first line of 16.3.4:
should say "transformations".
[20080131 RNG]
**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 9:
Change inversion to conjugated inversion.
[20080103 AC]
Pg 480, line 10:
The translation matrix should have 1s on its diagonal.
[20080103 AC]
*Pg 483 drill 3:
Replace e_{1}∧e_{2} by e_{1}+e_{2}.
[20070401]
Pg 483:
Citation [17] should be [15].
[20080110]
*Pg 485 structural exercise 4:
not true for general flats. Replace flats by flats through the origin.
[20070401]
*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 485, structural exercise 5:
Change the last a to its inverse a^{1}.
[20070401]
Pg 485, exercise 5,
Change the second origin to centers.
[20070401]
Pg 488, line 4:
should say "to the identity".
[20080131 RNG]
Pg 489, figure caption:
should say "to conformal versors".
[20080131 RNG]
Pg 489, figure caption: remove the sentence 'Converting a.'.
[20081211]
Pg 490, lines 5,6:
should say "we set".
[20080131 RNG]
*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 507:
Citation [51] should be [49].
[20080110]
Pg 529, line 9:
should say "whether a multivector".
[20080131 RNG]
Pg 542:
Citation [44] should be [43].
[20080110]
Pg 575, 23.5.2, line 6:
should say "reflections and refractions".
[20080131 RNG]
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]
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 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 589, equation (B.1):
first B⌋A on last line should be A⌊B
[20071127 PJK]
Pg 589, section B.1.1:
it is helpful to write A_{k} for A
and B_{l} for B.
[20071016 GG]
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 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 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 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 605, line 6 about projection:
remove inverse from first B.
[20080326 RV]
Pg 605, line 7:
the condition A,B ⊆ I
should be A ⊆ I.
[20070904 AC]
Pg 610, reference [21]:
change Images to Views
[20070808]
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.