Sign in to follow this  

What to study in prep for writing a physics engine?

Recommended Posts

VBStrider    303
I'm planning on going through the resources Chris Hecker recommends in his article [url=""]Physics References[/url], however that article (from what I gather) was written in around 1997: 14 years ago.

I suspect that there have been new developments since the article was put together, which brings us to the reason for this post: Do you guys have any additions/changes to the list he gives? For example, changing the order in which a topic is studied, a new and better book for a particular topic in the list, new topics to add to the study list (with accompanying book recommendations if you can), etc.

I like the fact that he discusses each set of books and the pros/cons. If you guys could provide similar notes with your recommendations, as well as when I should study that topic (right after reading the Calculus book? After reading everything else in that list?) and what I will be able to do in my physics engine after I study it (like his "milestones"), it would really help [img][/img]

To help you decide what recommendations to make, I'll do my best to describe where I am in math. I should note though that I am currently planning on going through each resource in that list (with exceptions to duplicates), including topics I am familiar with. The main reason for this (as you will probably see in the following) is that while I might know overall about a particular topic, I usually don't have a whole lot of experience mainly due to not studying from a textbook with problem sets.

[size="4"][b]Basic math[/b][/size]
[indent]Addition, subtraction, multiplication, division, fractions...
[size="4"][b]Algebra I[/b][/size]
[indent]I learned this from a textbox, but unfortunately I do not have the title available to me at the moment.
[indent]I learned this from [url=""]Geometry: Seeing, Doing, Understanding 3rd Edition by Harold R. Jacobs[/url]. Due to a lack of interest, and having other things to study, I only ever made it to chapter 9, lesson 1 (about half-way).
[size="4"][b]Algebra II[/b][/size]
[indent]I never studied this from a textbook, but I did pickup on parts of it by studying other areas of math and programming. Using [url=""]this page[/url] as a reference for what is studied in Algebra II, I am familiar with the following:
[list][*][b]Solving Equations and Inequalities[/b] - I don't have much experience with inequalities, but I know how to work with them.[*][b]Graphs and Functions[/b][*][b]Systems of Equations and Inequalities[/b] - I don't have much experience with solving systems, but I know the gist of it.[*][b]Polynomials and Factoring[/b] - I don't have much experience with polynomials (I can't recite from memory the various methods of dealing with them), but I do know what they are and I am familiar with how to work with them.[*][b]Fractional Expressions[/b][*][b]Powers and Roots[/b][*][b]Complex Numbers[/b] - I know what these are basically, but I have very close to zero experience with them.[*][b]Quadratic Equations[/b] - Most of my experience with solving these is by using the quadratic formula (which I have derived for myself several times before, once by accident).[*][b]Quadratic Functions[/b] - Most of my experience with these is from learning Calculus.[*][b]Coordinate Geometry[/b] - I'm familiar with this, but I usually need to use a reference whenever I have need of it.[*][b]Exponential and Logarithmic Functions[/b] - I get the terms "exponential function" and "power function" mixed up regularly, and I require references when working with logarithms (particularly natural log).[*][b]Probability[/b] - As far as I know, I don't have direct experience or knowledge of this.[/list][/indent]
[indent]I never studied this formally, but I picked up on parts of it from studying other things and programming. Using [url=""]this page[/url] as a reference for what is studied, this is what I know:
[list][*][b]Angle measurement[/b][*][b]Chords[/b] - I am familiar with the term, but I don't have much experience or knowledge of the thing itself.[*][b]Sines[/b][*][b]Cosines[/b][*][b]Tangents and slope[/b] - I am familiar with this only through studying Calculus.[*][b]The trigonometry of right triangles[/b] - I know how to use the inverse functions, but I am not all that familiar with the rest.[*][b]The trigonometric functions and their inverses[/b] - I'm not very familiar with the properties of sines and cosines, although I have looked them up and made use of them in the past.[*][b]Computing trigonometric functions[/b] - As far as I know, I have no knowledge of this.[*][b]The trigonometry of oblique triangles[/b] - I'm not familiar with the law of sines or cosines.[*][b]Area of a triangle[/b] - I am familiar with a = bh/2 but not the method they describe in this section.[*][b]Summary of trigonometric identities[/b] - I am familiar with SOH-CAH-TOA, but my situation with the trigonometric identities is the same as my situation with the properties.[/list][/indent]
[indent]I learned this from the [url=""]Calculus section at Brightstorm[/url]. I watched every single video in that section.
[size="4"][b]Multivariable Calculus[/b][/size]
[indent]I learned this by watching the [url=""]18.02 lectures at MIT OpenCourseWare[/url]. I made sure I understood each lecture by pausing and rewatching, but I did not do any of the homework assignments or exams, and I did not have the textbook.
[size="4"][b]Differential Equations[/b][/size]
[indent]I learned this by watching the first 4-7 (I don't remember the exact lecture I stopped on) [url=""]18.03 lectures at MIT OpenCourseWare[/url]. I did not have the textbook, and I did not do the homework assignments or exams.
[size="4"][b]Linear Algebra[/b][/size]
[indent]I learned this from reading [url=""]3D Math Primer for Graphics and Game Development[/url].
[size="4"][b]Set Theory[/b][/size]
[indent]I know the basics, mostly from an introduction I had in between basic math and algebra I, as well as from studying other things.
[b][size="4"]Graph Theory[/size][/b]
[indent]I am currently studying this from [url=""]Introductory Graph Theory by Gary Chartrand[/url].
[indent]I plan on studying this using [url=""]Introduction to Topology 3rd Edition by Bert Mendelson[/url], possibly after I am through the graph theory book.
[size="4"][b]Abstract Algebra[/b][/size]
[indent]I plan on studying this using [url=""]A Book of Abstract Algebra 2nd Edition by Charles C. Pinter[/url], possibly after I am through the topology book. The order may vary depending on if I find that one book is dependent on the other, or I find that I am missing some prerequisite.
[size="4"][b]Linear/Quadratic Programming and LCP[/b][/size]
[indent]I know of their existence and a tiny bit about what they are as well as what they are used for in a physics engine. I do not have any experience with these or knowledge of how to work with them.
[indent]I started learning this from the [url=""]Physics Tutorial at The Physics Classroom[/url]. I did all exercises and I read up to and through the chapter "Circular Motion and Satellite Motion". It became a bit too vague however, so I switched to learning from here: [url=""]http://electron9.phy...35d/Modules.asp[/url]. I went through each module up to and including "Rotational Motion", doing all of the problems in addition to understanding what was being taught.
[size="4"][b]Physics Simulation[/b][/size]
[indent]I have read through most of the papers by David Baraff, although I did not completely understand them. I have also gone through various other papers including "Nonconvex Rigid Bodies with Stacking" and "A Unified Framework for Rigid Body Dynamics", the latter being the most helpful. I have also gone through Erin Catto's GDC2006 slides and the source for Box2D Lite. I have glanced through some of the chapters in [url=""]Game Physics 2nd Edition by David H. Eberly[/url], as well as Chris Hecker's Game Developer Magazine columns sans the one on 3D physics. I have also written several physics engines, however they have not worked very well.
[b]Collision Detection[/b][/size]
[indent]Most of what I know about collision detection I have learned from [url=""]Real-Time Collision Detection by Christer Ericson[/url]. I have not read the book cover to cover though. [/indent]

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this