|Mathematics for Computer Graphics and Game Programming|
Author: D. P. Kothari, G. Awar, D. Shrimankar and A. Bhende
Computer graphics and games are based in mathematics. If you don't have a background in math then this is likely to be a problem for you . For most of the time you can get by without knowing the math by making use of the fact that someone else has written the code. For example, you don't need to know the equation of a straight line to draw a straight line if someone else has gone to the trouble of coding a line drawing function. You only need to come to terms with the math if you are entering for an exam that tests your understanding or if you are breaking new ground. This particular book attempts to tell you the math behind the graphics in, often very boring, detail.
The first chapter is a detailed, possibly too detailed, introduction to graphics hardware. It includes old technology such as CRTs and off-topic things like laser printers. It reads more like an academic exercise in making a list of everything.
Chapter 2 is the first that gets to grips with the math and it deals with how to draw lines, circles and ellipses. It includes the very direct and primitive methods and more sophisticated methods such as Bresenham's algorithm. The math is presented in great detail at a high school level. If you are reasonably good with algebra you might find the level too low. If you know the equation of a straight line then you really want insights into Bresenham's algorithms rather than such detailed equation shuffling.
Chapters 3 and 4 are about two- and three-dimensional transformations respectively. This goes into a lot of detail that should be obvious is you have any linear algebra. If you don't then you will have trouble seeing the wood for the trees. It also manages to include an explanation of homogeneous coordinates, but without pointing out how useful these are for a perspective transformation, which is only introduced in a later chapter.
Chapters 5 and 6 are about curves. The first chapter goes over the regular curves - circle, ellipse, parabola and hyperbola. The second deals with splines and Bezier curves. This is probably the best part of the book, but not many readers will have to make use of it to implement something new. Chapter 7 generalizes some of the material to include surfaces.
From here the book moves away from geometry and moves into more general graphics tasks such as clipping in Chapter 8, 3D modelling in Chapter 9 and 3D to 2D projections in Chapter 10. Quite a lot of this is presented in a very general way, the 3D modelling in particular.
Chapter 11 is a collection of C programs that perform various graphics tasks. The only problem is that it makes use of the old Turbo C graphics library graphics.h which isn't widely supported by modern compilers.
The final two chapters are about OpenGL and make heavy use of the GLUT helper library. You don't get to find out about shaders, just how to call GLUT functions. There is no discussion of this choice and given that the original GLUT library has been unsupported for 20 years and its use discouraged by OpenGL for almost as long, this is an important point. At the very least the book should explain that GLUT is not a particularly good way to use OpenGL but, if you have to, use FreeGLUT and regard it as a way of getting started.
Overall I wasn't impressed by this book. There is too much simple algebra and presentation of simple results in detail. As the level increases the detail becomes less and less until the book is really only introducing the concepts. There isn't enough coverage of topics such as rendering, computational lighting, shadows, textures and so on. It simply doesn't go far enough.
If you want a book at this level and can tolerate the very basic algebra then it might suit your purpose. For the general reader, and particularly the reader with some math, there are better books on the topic.
To keep up with our coverage of books for programmers, follow @bookwatchiprog on Twitter or subscribe to I Programmer's Books RSS feed for each day's new addition to Book Watch and for new reviews.
|Last Updated ( Tuesday, 10 December 2019 )|