Geometric algebra (a Clifford Algebra) has been applied to different branches of physics for a long time but is now being adopted by the computer graphics community and is providing exciting new ways of solving 3D geometric problems. The author tackles this complex subject with inimitable style, and provides an accessible and very readable introduction. The book is filled with lots of clear examples and is very well illustrated. Introductory chapters look at algebraic axioms, vector algebra and geometric conventions and the book closes with a chapter on how the algebra is applied to computer graphics.

through an example. Let the point to be rotated be P(0, 1, 1). (5.77) (5.78) Let the axis of rotation be Let the angle of rotation be Therefore, uˆ = j. (5.79) θ = 90◦ . (5.80) p = 0 + i0 + j + k (5.81) ◦ q = cos 45 + sin 45(i0 + j + k0) √ 2 q= (1 + i0 + j + k0) 2 q −1 = cos 45◦ − sin 45(i0 + j + k0) √ 2 −1 q = (1 − i0 − j − k0). 2 (5.82) (5.83) The rotated point is given by p ′ = qpq −1 √ √ 2 2 ′ (1 + i0 + j + k0)(0 + i0 + j + k) (1 − i0 − j − k0). p = 2 2 This is best expanded in

always positive, hence its sign is always positive, which is why area is normally regarded as a positive quantity. Grassmann was aware that mathematics, especially determinants, supported positive and negative areas and volumes, and wanted to exploit this feature. His solution was to create a vector product that he called the outer product and written a ∧ b. The wedge symbol “∧” is why the product is also known as the wedge product, and it is worth noting that this symbol is also used by French

+ e31 + e23 ) = e3 + e 2 + e 1 c = e1 + e2 + e3 (8.258) which is identical to the previous result. Now that we have a mechanism to move between GA and the cross product, we can prove various identities in vector analysis using GA. For example, let’s expand the vector triple product (a × b) × c. 116 Geometric algebra for computer graphics Starting with a × b: a × b = −I (a ∧ b) = −e123 (a1 e1 + a2 e2 + a3 e3 ) ∧ (b1 e1 + b2 e2 + b3 e3 ) = −e123 ((a2 b3 − a3 b2 )e23 + (a3 b1 − a1 b3 )e31 +

e12 ). 3 (9.91) Therefore, 1 a ′ = (1 − e23 − e31 − e12 )(e2 + e3 )(1 + e23 + e31 + e12 ) 4 1 = (e2 + e3 − e232 − e233 − e312 − e313 − e122 − e123 )(1 + e23 + e31 + e12 ) 4 1 = (e3 − e123 )(1 + e23 + e31 + e12 ) 2 1 = (e3 + e323 + e331 + e312 − e123 − e12323 − e12331 − e12312 ) 2 a ′ = e1 + e3 (9.92) which is what we predicted. 9.3.3 Rotor matrix Another way of implementing a rotor is using a matrix, which is created as follows. We begin with the bivector defining the plane m ∧ n, about

. . . . . . . . . . . . . . . . . . . . . . . . . . 210 210 211 212 213 216 217 11.6 Conformal transformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.6.1 Translations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.6.2 Rotations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .