Game Physics
•“Linear physics”–physics of points
–particle systems, ballistic motion…
–key simplification: no orientation
•“Rotational physics”
–orientation can change
Rigid Bodies
No longer points: distribution of mass
instead.
Rigid bodies: distances between mass
elements never change.
Orientation of body can change over time.
Rigid Body Translation
•Can treat translational motion of rigid
bodies exactly the same as points
•Single position (position of center of mass)
•F=ma (external forces)
•v = ∫a dt
•x = ∫v dt
•momentum conservation
Rotation
•Rigid bodies also have orientation
•Treating rotation properly is complicated
•Rotation is not a vector (rotations do not
commute, i.e., order of rotations matters)
•No analog to x, v, a in rotations?
Angular velocity
•Infinitesimally small rotations do commute
•Suppose we have a rigid body rotating
about an axis
•Can use a notion of angular velocity:
•ω= dθ/dt
Angular velocity
•Connection between linear and angular
velocity
•Magnitudes: v = ωr
perp
•Want vector relation
•Nice to have angular velocity about axis of
rotation (so it doesn't have to change all
the time for an object spinning in place)
•Let v = ωx r
Angular velocity
•v = ωx r
•Or, ω= r x v / |r|
2
•Note: ω, r, v vectors
•Angular velocity defined this way so that
constant angular velocity behaves sensibly
–spinning top has constant ω
Applying force
•What happens when you push on a
spinning object? (exert force)
•F=ma, so we know the movement of the
centre of mass
•How does the force affect orientation?
Torque
•T = r x F
•r is vector from origin to location where
force applied
–for convenience, often take origin to be center
of mass of object
•F is force
•Magnitude proportional to force,
proportional to distance from origin
Intuition for Torque
•Larger the larger from the centre
•Lever action: small force yields equivalent
torque far from fulcrum
Direction of Torque
•T = r x F
•Perpendicular to both location and force
vectors
•Direction is along axis about which rotation
is induced
•Right hand rule: thumb along axis, fingers
curl in direction of rotation
single particle
•T = r F sinθ
•T = r F
t
•F
t= ma
t = mrα
•T = mr
2
α
•Let I = mr
2
•T = Iα
Many particles
•Real objects are (pretty much) continuous
•Game objects: distribution of point masses
–not always, but common
•Can get reasonable behaviour with (e.g.)
four point masses per rigid body
•Single orientation for body
•Single centre of mass (of course)
Changing Coordinate Systems
•We dealt with changing coordinate
systems all the time before
•Rigid bodies are much simpler if we treat
them in a natural coordinate system
–origin at the centre of mass of the body
–or, some other sensible origin: hinge of door
•Need to transform forces into body
coordinate system to calculate torque
•Transform motion back to world space
Angular momentum
•Define angular momentum similarly to
torque:
•L = r x p
•Note that with this definition, T = dL/dt, just
as F = dp/dt
Force and Torque
•Note: a force is a force anda torque
•Moves body linearly: F=ma, changes
linear momentum
•Rotates body: produces torque, changes
angular momentum
Linear vs. Angular
linear quantityangular quantity
velocity v angular velocity ω
acceleration aangular acc. α
mass m moment of inertia I
p = mv L = Iω
F = ma T = Iα
Conservation of Angular
Momentum
•Consequence of T = dL/dt:
–If net torque is zero, angular momentum is
unchanged
•Responsible for gyroscopes' unintuitive
behaviour
The gyroscope is tipped over
but it doesn’t fall
Moment of Inertia
•Said that moment of inertia of a point
particle is mr^2
•In the general case, I = ∫ ρr^2 dV where r
is the distance perpendicular to the axis of
rotation
•Don't know the axis of rotation beforehand
Moment of Inertia
•I = ∫ρ(x,y,z)
dxdydz
y^2 + z^2-xy -xz
-xy x^2 + z^2-yz
-xz -yz x^2+y^2
Diagonalized Moment of Inertia
•Luckily, we can choose axes (principal
axes of the body) so that the matrix
simplifies:
•I =
•where, e.g., Ixx = m(y*y + z*z)
•Off-diagonal entries called "products of
inertia"
Ixx00
0Iyy0
00Izz
Avoiding products of inertia
•Do calculations in inertial reference frame
whose axes line up with the principal axes
of your object
•Transform the results into worldspace
•Moment of inertia of a body fixed, so can
be precomputed and used at run-time
Moment of Inertia
•In general, the more compact a body is,
the smaller the moments of inertia, and the
faster it will spin (for the same torque)
Fake I
•Not doing engineering simulation
(prediction of how real objects will behave)
•Can invent I rather than integrating
•Large values: hard to rotate about this axis
•Avoid off-diagonal elements
Fake constants
•For that matter, can fake lots of stuff
•Different gravity for different objects
–e.g., slow bullets in FPS
–e.g., fast falling in platformer
•fake forces, approximate bounding
geometry
Case in 2D
•In 2D, the vectors T, ω, αbecome scalars
(their direction is known –only magnitude
is needed)
•Moment of inertia becomes a scalar too:
•I = ∫prdA
Single planar rigid body
•state contains x, y, θ, vx, vy, ω
•Have
–F = ma (2 equations)
–T = Iω
–x = ∫vx dt
–y = ∫vy dt
–θ= ∫ωdt
•Integrate to obtain new state, and proceed
Rigid body in 3D
•Need some way to represent general
orientation
•Need to be able to compose changes in
orientation efficiently
Quaternions
•Quaternion: structure for representing
rotation
–unit vector (axis of rotation)
–scalar (amount of rotation)
–recall, store (cos(θ/2), v sin(θ/2) )
•Can represent orientation as quaternion,
by interpreting as rotation from canonical
position
Quaternions
•Rotation of θabout axis v:
–q = (cos(θ/2), v sin(θ/2))
•"Unit quaternion": q.q = 1 (if v is a unit
vector)
•Maintain unit quaternion by normalizing v
•Arbitrary vector r can be written in
quaternion form as (0, r)
Quaternion Rotation
•To rotate a vector r by θabout axis v:
–take q = (cos(θ/2), v sin(θ/2)
–Let p = (0,r)
–obtain p' from the quaternion resulting from
qpq
-1
–p' = (0, r')
–r' is the rotated vector r
•Note:
–q(t) = (s(t), v(t))
–q(t) = [ cos(θ(t)/2), u sin(θ(t)/2) ]
–For a body rotating with constant angular
velocity ω, it can be shown
•q’(t) = [0, ½ ω] q(t)
•Summarize this ½ ωq(t)
Rotation Differentiation
Using quaternions gives
Rigid Body Equations of Motion
x(t)
q(t)
P(t)
L(t)
v(t)
½ ωq(t)
F(t)
T(t)
d/dt =
P and L
•Note that
–v = P/m (from P=mv)
–ω= I
-1
L (from L = Iω)
•Often useful to use momentum variables
as main variables, and only compute v and
ω(auxiliary variables) as needed for the
integration
Impulse
•Sudden change in momentum
–also, angular momentum (impulsive torque)
•Collision resolution using impulse
–new angular momentum according to
conditions of collision
–algorithmic means available for resolving