******************************************************************************************************
  SLIDES
  ******************************************************************************************************
  ********** 1
  overview of situtation
  you have a game, you want a generic object in your game with accurate physics
  todo this you want a good rigid body object that can represent most anything
  ********** 2
  these objects should move and interact correctly
  add a photo / movie here
  ********** 3
  OUTLINE
  1) basic concepts and laws of physics
  2) kinematics
  3) force
  4) kinetics
  5) collisions
  ********** 4
  laws of physics 
  newtons laws of motion
  1) inertia: a body tends to remain at rest or continue to move in a straight line at constant velocity unless it is acted upon by an external force
  2) f = ma | G = mv: the acceleration of a body is proportional to the resultant force acting on the body and this acceleration is in the same direction as the resultant force
  3) for each force acting on a body there is an equal and opposite reacting force in which the reaction is collinear to the acting force
  ********** 6
  mass properties
  mass -how resistance to movement - much i weigh (w=mg)
  moment of inertia -how resistance to rotation - integration of weight * distance from center of mass
  center of mass -where my center is (what I rotate around)
********** 8
  scalars
  a number..such as..2
  ********** 9
  vectors
"magnitude and direction"
  really..a bunch of numbers, such (1,2) or (5,7,1) or (1,3,5,6,7,1,2,3)
  generally we just use 2 and 3 dimension vectors
  they are used to represent all kinds of things..
  locations - i am at 2,3
  relative locations - my destination is 5,3 from me
  velocity - i am moving at 5,13
  ********** 10
  important operations
  addition - i am at 3,5, the front of my car extends out 0,2, so the front of my car is at 3,7 - image
  subtraction - i am at 3,5 and you are at 7,1 so a-b = you are 4,-4 from me - image
  dot product - shortest distance to line - image
  cross product - AxB -> amount of vector A that is normal to vector B, saves LOTS of ugly arctangents - image
  **********
  quaternion
  a quaternion contains an oreintation
  any explanation into how it does this, would be pointless..so just know that it holds an orientation, adn that it can apply it to vectors
  trying to derive custom math to deal with its data members is REALLY hard..so just learn to use the standard operators
q1 * q2 -> gives q2 rotated around q1, if your relative rotation is q2, this translates it into global rotation coordinates
 interpolation - slerp (other versions of this exist, some are supposed to be better, but slerp suffices) 
  slerp( a, b, .1 ) returns an orientation 10% of the way from a & b
  THIS is one of the most important properties of quaternions..they interpolate VERY smoothly, as opposed to euler angles which are really ugly
********** 11
  matrix
  a grid of numbers
  1 3 5
  5 6 2
  4 1 3
these represent
  orientation - 3x3 matrix
  transformations - 4x4
  moment of inertia - 3x3
  ********** 12
  tensors
generalization of scalars/vectors/matrix
  scalars = tensor of rank 0
  vectors = tensor of rank 1
  matrix = tensor of rank 2
url -> mathworld.wolfram definition
expression with magnitude and direction - magnitude might however change with direction
  usually used to represent properties that have different magnitudes in different directions
  elasticity
  moment of inertia
  air resistance
they are hard =) ill just use a simple inertia scaler for now
  ********** 13
  PARTICLE physics
  particles are objects where orientation is unimportant
  attributes:
  vector position
  vector velocity
  scalar mass
  ********** 14
  how do we make them move?
  we discritize time, and step through it one piece at a time, integration across each step to obtain new positions
  for instance if you have a rock moving through space at 10 m/s
  you update it every second
  at time 0, p = 0, t = 1 p = 10, t = 2 p = 20, so on.
  ********** 15
  integration function for particles
  p += v * dt
  v += f / m * dt
  ********** 16
  so elegant..
  a demo - pretty java demo showing a particle engine
  ********** 17
  true rigid bodies - orientation
  orientation screws everything up...
  it takes two beautiful formula and makes it 5 times more complicated..but usch is life..
  ********** 18
  RIGID BODY
  generic object in space
  rigid -> does not change shape
  attributes:
  vector position
  vector acceleration
  scalar mass
 quaternion orientation - OMEGA
  vector rotational_velocity - omega
  vector torque 
  #matrix33 moment_of_inertia
  scalar inertia
  ********** 19
  integration
  p += v * dt
  v += f / m * dt
 OMEGA += omega * dt
  omega += torque / inertia * dt
  ********** 20
  complications
  since OMEGA is a quaternion
  and dt is a vector..things are a lil more complicated then that.