Geometric algebra, a young field that has only caught on relatively recently, is growing rapidly and, given its potential impact, has nothing but a bright future ahead. Although the amount of material written on the subject is already quite large, with much of it available on the Web, few textbooks have been written specifically for computer science. According to the authors, “This is the first book on geometric algebra that has been written specially for the computer science audience.” It is a welcome entry to the field.
This is a large, ambitious book. It contains three parts, each with a distinctive flavor. Part 1 presents geometric algebra. Part 2 develops three models of geometry: a vector space model to describe Euclidean geometry, a homogeneous model that includes Plücker coordinates and other models, and a model for conformal transformations that are critical in applications. Part 3 discusses the all-important aspects of efficient programming implementations. A companion Web site provides a detailed chapter-by-chapter tour of the book and other very useful material (http://www.geometricalgebra.net/).
The authors have written the ideal book for self-study at the postgraduate level. Ostensibly, the only requirements are linear algebra and calculus; this is true, but only at face value. The authors have made every effort to develop the reader’s intuitive understanding of the material, preferring to emphasize explanations and programming experimentation to a systematic presentation of the mathematics that make up geometric algebra. The explanations are thorough and detailed, but any mathematical foundations are only minimally sketched and, when needed, details are relegated to appendices:
We have chosen to write this book as a gradual development of the algebraic terms in tandem with geometric intuition. We describe the geometric concepts with increasing precision, and simultaneously develop the computational tools. ... We do so in a style that is not more mathematical than we deem necessary, hopefully without sacrificing exactness of meaning. We believe this approach is more accessible than axiomatizing geometric algebra first, and then having to discover its significance afterwards.
As a result, readers who don’t have extensive experience in linear algebra, computer graphics, and robotics will probably find the book challenging. On the other hand, for experienced readers, the authors’ approach is delightful and the benefits of geometric algebra are immediate.
That being said, I feel more comfortable developing expertise and intuitive understanding of a mathematical field--as geometric algebra certainly is--through the study of a systematic presentation of the mathematics, beginning with axioms and proceeding to theorems, proofs, and applications. Indeed, geometric algebra is very enjoyable when it’s presented this way in other sources. Readers who share this feeling should first seek such a presentation in other sources, and then turn to this book to deepen their geometric understanding of the material.
Although the book should not be used as a primary textbook for geometric algebra at the undergraduate level, it is nothing less than excellent for its intended audience. The authors include an extensive list of references and refer to appropriate sources throughout the text. The index is also excellent and includes mathematical symbols. Figures--many of them in color--are used liberally. Most chapters have programming exercises and other drills to extend the material and develop proofs.
An outstanding element of the book is the software associated with it, which is available from the companion Web site. The software consists of three packages. The first package, GAViewer, can be used interactively with the book. With it, the reader can type geometric formulas and see how they act on geometric elements. The second package, Gaigen 2, is an implementation of geometric algebra in C++ and Java, and is intended for applications that require more speed and efficiency than a tutorial. Finally, a reference implementation of all algorithms and techniques in Part 3 of the book is written in Java and C#. This software is primarily intended to illustrate a programming implementation rather than be computationally efficient.
I recommend this book for professionals, researchers, and libraries.