3D Astronomy with JAVA [By Fairman]
Title: 3D Astronomy with JAVA - An Introduction to Computer Graphics
Author(s): Randall S. Fairman
Other Info: 6.0" by 9.0", 374 pages, Softbound, 1.2 lb item wt.
Astronomy and computer graphics are naturally complementary. Graphics programming is an excellent way to get a feel for “what’s happening” in the sky. It's difficult to gain an intuitive feel for complex phenomena, like precession, without seeing some examples. A graphics program literately shows you what's happening. Moreover, computer graphics and positional astronomy are both based on applied geometry. There's a lot of overlap in the mathematics used in the two subjects.
The graphics techniques presented are the foundation on which many popular three-dimensional games and computer-generated animations are based. The extensive bibliography provides a selection of books on computer graphics for those wishing to delve deeper into this subject.
Roughly half of the book consists of an introduction to Java, the rudiments of graphics programming, and the most fundamental ideas of astronomy. More than a dozen small programs are developed along the way that illustrate these ideas.
The second half of the book continues by applying the code developed earlier to larger-scale projects. Most of the programs in the later half of the book are based on data from the Jet Propulsion Laboratory (JPL). The JPL provides files giving very precise position data for the planets over a period of roughly 6,000 years.
The book goes on to explain the ideas on which commercial planetarium programs are based by developing a program with similar basic features. This final project displays an animation showing what an observer on the surface of the earth would see in the sky from a given time and place.Prerequisites
My aim has been to write a book that can be read profitably by anyone from a high school student (with strong computer skills and access to a knowledgeable teacher) to a person with a great deal of computer experience and knowledge of astronomy. "Profitably" will mean different things for different people. A high school student might take away a broader understanding of computer programming and better knowledge of astronomy. A college professor or high school teacher might glean some ideas for pedagogical tools to be used in the classroom.
As evidence that a high school student can read and understand this book, I acknowledge that my daughter, Evelyn, who was then in ninth grade, found some rather embarrassing mathematical mistakes. Thanks, Evelyn!
In terms of mathematical prerequisites, the reader needs to have a good grasp of algebra and trigonometry. In addition, an understanding of matrix multiplication will make the learning curve easier to climb. To make these topics more accessible, they are covered in an Appendix; in theory, anyone who has had a year of high school algebra could pick up the necessary background from the Appendix. But learning math is a funny thing; an exposition that's nearly incomprehensible to a novice is seen by someone with more experience as painfully detailed. The Appendix is complete, but the ideas found there will take time and practice to fully digest.
To make the book more accessible, I've gone to some pains to avoid using calculus, although there are a few places where non-rigorous arguments that have the flavor of calculus are used. Look up "calculus'' in the index to find these points. The golden hammer provided by calculus could have been used to shorten the discussion at a few points, but looking at a problem from a calculus-free point of view can be more informative.
Although no calculus is used, the typical way in which math and science courses are sequenced means that a reader with no need to refer to the Appendix will probably have had calculus, along with a course in physics, multi-variable calculus or linear algebra. In my view, waiting to introduce the material covered by the Appendix until the first or second year of college is unfortunate. This material could be taught in high school immediately after trigonometry. It's not difficult, and the students would see an immediate and concrete use for algebra and trigonometry.
While I've done my best to avoid bringing in more mathematics than is strictly necessary, it's also true that this text has plenty of detailed formulas and derivations. The basic mathematical ideas may be elementary, but they are put to some fairly sophisticated uses. Readers who find that their mathematical skills are occasionally stretched should feel free to skip ahead when their interest flags. The computer programs are the heart of the book, and mathematical ideas, especially those as concrete as the geometrical ideas used here, are easiest to grasp in the context of a physical problem.
The computer-related prerequisites were harder to reduce. In many ways Java is an ideal language for someone with limited programming experience, but providing all of the background necessary for a reader without any programming experience would have made the book too long. Java is explained here in enough detail to allow this book to be used as a starting point in learning about Java, but readers without any programming experience should read this book in conjuction with something more introductory. Several books that could be read for additional programming background can be found in the Bibliography. Unfortunately, as Java has grown in power and scope over the years, introductory books have become thicker to keep up; it can be very difficult for a novice to know where to start. Moreover, introductory programming books often leave the reader wondering what to do with their new knowledge. I hope that this book serves as a starting point for those who want to learn more about Java, while providing some meaty and rewarding applications.