Solid Graphical Techniques and Insights
Explores two and three dimensional graphics, bezier and spline curves and much more.
ORIGINAL DRAFT
Its hard not to be pulled in by clever visual and well crafted artwork. With computers, much of what an artist can accomplish with intuition and a few clever pen strokes turns into complicated math and tedious rendering. If you want or need to provide advanced graphical capabilities in your Java application, you may want to pick up Computer Graphics from Java Programmers. The coverage is accurate, entertaining, and the book is littered with useful diagrams that bring the topic home to readers with clarity and elegance. The book’s cover depicts the Guggenheim Museum in Bilbao, rich with curves and sculpted features, developed largely using computer graphic tools.
Chapter 1 "Elementary Concepts" covers pixels, lines, regions, polygons and mapping modes, enough to lay a solid foundation for the rest of the book. Chapter 2 "Applied Geometry" digs right into some basic mathematical tools and topics like triangulation, distance measurements, detecting points on a line, inside or outside a polygon. Chapter 3 "Rotation and Other Transformations" introduces matrix operations and transformations applied to simple and complex coordinate systems.
While many books provide information on the topics covered by this point, few of them present the information in this manner. Usually, the math and fundamental ideas are presented through an implementation process. While this book does not neglect the necessary implementation details, the ideas are developed in an of themselves and presented in an order that makes them relatively easy to absorb. Chapter 4 "Some Classic Algorithms" extends these ideas, presenting various curve algorithms and polygon clipping solutions often avoided in other graphic treatments.
Chapters 5 to 8 dive into three dimensional representations and rendering. Chapter 5 starts with Perspective, followed by Chapter 6 "Hidden-face Elimination", which covers the painter’s algorithm, and Chapter 7 "Hidden Line Elimination". Chapter 8 explores actual applications of these ideas with several objects, such as cylinders, platonic solids, spheres and torus. These implementations dig deeper into the requirements and practical issues encountered when rendering objects which represent something more that trivial cubes and planes. The appendices provide some information of use to readers and graphics developers, including interpolation algorithms, event handling, selective code listings, and solutions to exercises present throughout the book.
Virtually any Java developer interested in graphics programming will benefit from reading this book. Not only is the foundation laid out carefully but a number of advanced topics are explored in lucid, accessible chapters with plenty of supporting diagrams to make it easier to understand the material. Much of the information presented is often avoided by other graphics programming books. The author reveals algorithms for drawing complex curves and rendering non-trivial three dimensional shapes, for example.