2D coordinate system
3D coordinate system
Addition and subtraction
Vector addition and subtraction
Magnitude
Magnitude of a vector
Normalization
Normal vector
Dot product
Cross product
Projection
Linear Dynamics
Angular dynamics

Projectile motion
Slope motion (no friction)

Implicit methods
Explicit methods
Semi-implicit methods
Runge-Kutta family
Verlet family
Explicit method
Improved method
Implicit method
Seek
Flee
Arrive
Pursuit
Evade
Wander
Path follow
Flocking

N-Collide
Box2D
Bullet
PhysX
p2.js
Havok





Pinballs (1980+)
The Incredible Machine (1993)
Worms (1995)
Half-Life 2 (2004)




Angry Birds (2009)
INSIDE (2016)
Half-Life Alyx (2020)
Noita (2020)




Body
Rigid Body
Soft body
Shape
Fixture

Constraint
Sensor/Phantom
Rag doll
Destructible object
rope
revolute
prismatic
cone-twist



Paratrooper (1982)

Fictorium (2017)

Teardown (2020)
Applications




| 1 | if (min(min(min(body.M,ibody_inv.x),ibody_inv.y),ibody_inv.z)<0) { |
| 2 | body.M = body.Minv = 0; |
| 3 | body.Ibody_inv.zero(); body.Ibody.zero(); |
| 4 | } else { |
| 5 | body.P = (body.v=v)*body.M; |
| 6 | body.L = body.q*(body.Ibody*(!body.q*(body.w=w))); |
| 7 | } |

Steps
Collidable entities

Sphere
Capsule
AABB
OBB
k-DOP
Compound shapes
Convex hull


Naive solution
Quad-tree
Sweep and Prune
BSP
Grid, Oct-tree, R-tree, R+tree, R*tree, X-tree, M-tree,...
Sphere-Sphere
Sphere-ray
AABB-AABB
AABB-Ray
OBB-OBB
SAT (separating axis theorem)
Stepped world
Continuous Collision Detection (CCD)
How to respond to a collision?
Explosion
Fracturing
Restitution
Friction
Constraint

Relaxation
Coming to rest


Do you guys not have phones?Wyatt Cheng, BlizzCon 2018