ABSTRACT

I have been a professional software engineer on many projects, whether as a contractor working for my own company or as a full-time employee for other companies. These projects have involved computer graphics, image analysis and computer vision, and-perhaps most visibly-real-time 3D game engines and games. Although they all have relied heavily on mathematics, geometry, and physics algorithm development, these projects have several requirements that are in the realm of practical computer science and software engineering:

• requirements for robustness, • requirements for accuracy, • requirements for speed, and • requirements for quality source code, ease of maintenance, reusability, and readability.