-1+1126 
Intro to 2D Rigid Body Physics

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!

Lectures
    no lectures added
Prerequisites
  • 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)
Syllabus

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.

Additional information

Class subreddit: http://www.reddit.com/r/IntroToRBP/

Instructor email: intro.to.rbp@gmail.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.

Teacher qualifications
  • 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)
Latest Update

none

Roster
1. thvdburgt
2. nostraticispeak
3. snopromise
4. moneybagels
5. penguooo
6. Dr.H
7. topher200
8. gaffe
9. kLinus
10. dprimedx
11. luizpericolo
12. sb09d
13. mjboa
14. IrishLearn
15. Dusseldorf
16. intrepion
17. Mousie
18. theocarina
19. bizarroterrell
20. mechakoopa
21. TheGreatWormSpirit
22. OnlySlightly
23. Caio
24. manternet
25. tennispro
26. spidey1
27. TurplePurtle
28. applejuice
29. benzaa
30. danmulvey
31. Leon_Roz
32. robot.sib
33. ViP3Rx64
34. Shikaga
35. gunthers_skul_gun
36. doerie
37. nbrown7
38. lindybomber
39. partisann
40. maniek
41. waynethec
42. rabuf
43. bluedice
44. pogimabus
45. Infectious
46. Cephalic
47. asinth
48. necross
49. burdalane
50. channelcapacity
51. Hiro
52. redokapi
53. mathijshenquet
54. mathijshenquet
55. b3b0p
56. tsaxi
57. XultonEatsBabies
58. badcode
59. drux
60. duckinator
61. Nashenas88
62. terror_macbeth_I
63. Scarker
64. Biotronic
65. ozan
66. thorbear
67. boobooliboo
68. i_want_a_cool_name
69. Wrew
70. njoubert
71. thixono
72. gummikana
73. worshipHendrix
74. xvoidstar
75. isaiahwarnke
76. Funkmyster
77. jeremywho
78. warmwaffles
79. hinmanj
80. SirTimmyTimbit
81. psylord
82. thebrokenlight
83. chihiro
84. foodeater
85. jefffan24
86. vandreas
87. mrpudding
88. karmaVS
89. dpollen
90. ludwig1024
91. leegao
92. nickcharlton
93. dalorin
94. kes1e
95. nakedlettuce
96. bladezor
97. invisime
98. na_th_an
99. VirtualEx
100. troy99362
101. invisibledry
102. zombiefeynman
103. makxan
104. Derict93
105. Docc
106. Amadiro
107. apineda
108. gabemmc
109. retrorocket
110. joeh19
111. somehugenerd