Bærentzen et al. state in the preface of this book that “geometry processing can loosely be defined as the field which is concerned with how geometric objects (points, lines, polygons [..]) are worked upon by a computer.” The book is a response to an immediate necessity at the Technical University of Denmark. It tries to cover a gap of topics at the junction between computer vision and computer graphics. The main target audience is students, but professionals can also make use of this book. Some background in linear algebra, calculus, and differential equations is mandatory. Programming experience is a plus.
As someone who has been working in computational science and engineering, I have experience with triangle meshes, point location, and interpolation problems, and thus I definitely appreciate the first part of the book. However, someone proficient in computer graphics is more likely to give an objective review of the more advanced geometry processing topics.
The book is brilliant in that it maintains a sane balance between theory and practice. It is written by practitioners, for practitioners--the authors are experienced programmers who have developed the geometry and linear algebra (GEL) library, which is being used in real-world applications--without losses in mathematical rigor or theoretical details. This elegant style enables both students and professionals to use it as a reference guide for fundamental topics in geometry processing. More algorithm recipes should be considered for the next edition, because they are missing in this version of the book. A list of tables, figures, and algorithms would come in handy and complement the book index.
A more natural drawback of the book is that it is not complete on its own. It is engineered as a companion handbook for adjacent topics like computer graphics, finite element methods, computer vision, geographic information systems, or computing in science and engineering in general.
The book starts with a short chapter on the background of geometry processing and some of its applications, followed by two parts.
The first part contains chapters 2 through 4, with very well-written survival companions on vector, metric, and affine spaces; differential geometry; and finite difference methods for partial differential equations. These introductory chapters, which the authors call “daunting,” are so well written that they immediately cause me to recommend the book as a handbook for students having to deal with computational science and engineering.
Part 2 covers fundamental techniques from geometry processing. Aside from chapter 5, where polygonal meshes are described, the rest of the book can be treated as a collection of chapters on independent topics.
Chapters 5 through 7 cover geometry representation. Chapter 5 introduces polygonal meshes, with a particular focus on triangle meshes. Chapter 6 covers nonuniform rational B-splines (NURBS), and chapter 7 addresses subdivision curves and surfaces.
Chapter 8 shows how the notion of curvatures can be applied in triangle meshes. Chapters 9 to 11 contain algorithms for mesh smoothing, mesh parameterization, and mesh optimization.
Chapter 12 covers spatial databases and point location problems, and chapter 13 explains convexity and convex hull algorithms.
Chapters 14 to 18 provide the necessary techniques for recovering triangle meshes from raw point clouds. In particular, chapter 14 explains triangle mesh generation techniques covering Delaunay triangulation and Voronoi diagrams.
The book is a handy companion for students and practitioners working in computer graphics and computer vision fields, but will also appeal to people working in any computational science and engineering field. For those in the latter case, the books referenced below [1,2] will also be useful.