This course will walk students through the creation of a 2D rigid body physics engine. The course will cover:
- The motion of 1D and 2D bodies
- Simple integrators
- Collision detection and response
- Advanced integrators and solvers
- An intro to more complex dynamics, such as constraints and contact
My goal for this class is to provide students with a theoretical framework that is language-agnostic. Many coding examples will be provided in the text, so prior programming knowledge is a plus. However, programming efficiency is not required to understand the physical theory.
First lecture will be posted July 14th, 2010!
- no lectures added
- Around 2-3 hours a week to devote to reading lectures and coding your own examples
- Some programming efficiency
- High school level calculus (knowledge of derivatives and partial derivatives), geometry (knowledge of vectors and trigonometric functions)
- A PDF reader
- Python and pygame (the specifics are discussed in Module 0: Setting up the development environment)
This will be a 10 week course, organized as follows:
- Module 0: Setting up the development environment - Link
- Module 1: The motion of particles and Euler's Method - Link
- Module 2: The effect of force on point masses, SIM:Fireworks Link
- Module 3: The motion of rigid bodies Link
- Module 4: The effect of force on rigid bodies; SIM: Rubberband blocks Link
- Module 5: Detecting collisions
- Module 6: Collision response; SIM: Bouncing blocks
- Module 7: Other integrators; SIM: Better bouncing blocks
- Module 8: Efficient collision detection; SIM: Lots of bouncing blocks
- Module 9: An intro to constraints and contact
- Module ?: Buffer lesson in case students or I want to go into a topic in more detail.
Due to some recent issues with work, I've fallen a little behind. A lesson might not be released every week, but I have not stopped working on them! Writing 30-40 pages of text a week was a little too ambitious, but I don't want to strip things from lessons to stay on a strict schedule. Therefore, I'm releasing more in-depth lessons at a slower pace.
Class subreddit: http://www.reddit.com/r/IntroToRBP/
Instructor email: email@example.com
I will be holding "office hours" on Wednesdays from 7-10pm EST (11pm - 2am GMT). I haven't decided on how exactly I'm going to do this, but more info will be provided.
- Senior EE engineering student with a CS minor
- Prior experience in coding physics engines in a variety of languages (C++, Python, Java, Game Maker Language)