Physics for Game Developers By David M. Bourg This errata page lists errors outstanding in the most recent printing. If you have technical questions or error reports, you can send them to booktech@oreilly.com. Please specify the printing date of your copy. This page was updated April 7, 2004. Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification Confirmed errors: {7} 2nd display equations; all the occurances of m in the second display equations on this page should be m_i {50} figure 2.8; Body axes x and y must be normal. in Figure 2-8 they kind of look not perpendicular. It's just an illustration issue... {52} figure 2.10; vector v must be normal to radius r {53} figure 2.11; vectors an and at must be normal (perpendicular). {55} figure 2.12; vestor vt must be normal to radius r [56] figure 2.13; vectors at & an must be normal {85} Figure 4-7.; The vector N=mg cos(theta) must be perpendicular to the vector Ft and tu the inclined plate. illustration issue...they should be drawn perpendicular {94} 1-st and 2-nd equation from the bottom; I don't understand why the units ft/s are omitted in these equations. They were used earlier in all other equations of this kind. AUTHOR: Not an error, but for consistency they could be included... [96] two last equations on the page; The mistake here is that the velocity terms should be shown as vectors (in bold). The same applies to just about all of the equations shown on page 96. {94} formula for coefficient of restitution e and the equation i next line; Two brackets are opened but only one is closed in the formula for coefficient of restitution e. The equations for coefficient of restitution should have closing parenthesis/brackets in the numerator. [98] 1-st equation; the vectors in these equations should be shown in bold to denote them as vectors instead of scalars... [99] 1-st equation; tan(PHI) = F_f/F_n = (mu) The same angle is represented in different way: - in this equation (PHI) - upper case - on the figure 5.6 (phi) - lower case Font inconsistency {105} 3rd paragraph from the end; The text says that "the only formula that has changed is the formula for T", but in fact the formula for h has changed too. It should say: the only formulas that have changed are the formula for T and the formula for h" {108} figure 6.6; The axe of velocity profile should be normal to the surface of the sphere, which means that velocity vectors should be paralel to this surface. [109] First paragraph, just below Figure 6-7; The "separation point" is described as being at "approximately 80 degrees from the leading edge." I would have thought 90 degrees more likely, but weird things do happen in physics. If 80 degrees is correct, I feel that this should be emphasized, preferably with a few words of explanation. EDITOR: The 80 degrees is correct, and I would think more intuitive than 90. One might wonder why the angle isn't closer to 45. But it's really a peripheral point; the main idea is that the friction of a rough surface can bring the angle around to a counte-intuitive 115 degrees. [115] A line related to the last display equation on the page, in the sample code (cannon.c) has an error. It reads: double C = PI * RHO * RHO * radius * radius * radius * omega; that is, there is an extra factor of RHO (but would otherwise be correct). (126) Figure 7-6; "delected" should be "deflected" for all three sections of this diagram. Actually, "lowered" would be better. [208] ApplyImpulse function; remove "(vCollisionNormal * vCollisionNormal)" from this function. It is not present in the example source code on the website. (and should evaluate to 1 anyway) (309) last paragraph on the page; The second line of the last paragraph reads: "z-axis, then the y-axis, and then the z-axis, you can..." That last z-axis should be "x-axis". ------ Chapters 13 and 16 Type of error: Serious Technical Mistake Detailed Description of error: I need to clarify and correct the collision response algorithms illustrated in the sample code discussed in Chapters 13 and 16. Specifically, it should be noted that the equations for impulse in both 2D and 3D are written in terms of global, earth-fixed coordinates. Therefore, all of the variables in those equations should be in terms of global coordinates. For example, velocity, angular velocity and mass moment of inertia should all be in terms of global coordinates. For the 2D case this difference can easily go un-noticed since there's only one axis of rotation and the angular velocity and mass moment of inertia are the same in both local and global coordinates -- the z-axis is straight up in both cases. However, in the 3D case, the objects may rotate about any arbitrary axis and it's important to convert such parameters as angular velocity, and mass moment of inertia from local body fixed coordinates to global coordinates. I failed to make the conversion in the example presented in Chapter 16. While, I had in place a parameter in the rigid body structure for the mass moment of inertia in global coordinates, I inadvertently left out the conversion and that parameter went unused. Converting the inertia tensor from local to global coordinates involves transforming the inertia tensor using a rotation matrix derived from the orientation quaternion. The hovercraft example (with collision response) and the crash test example have been revised and corrected accordingly and will be posted on O'Reilly's website. Thanks, David Bourg