# Advanced C++ Programming Tutorial 3

The vector dot product. This saucy little number is gonna turn your world upside down, project it, and other such bullshits. Super powerful math stuff do not missit.

## Topics

### Part 1

• Vector dot product
• Collision rebound physics calculation via vector operations

### Part 2

• Detecting collision
• Implementing vector collision response (rebound) calculation

## Video Timestamp Index

### Tutorial 3.1

• Introduction: using the vector dot product for rigid body physics problems 0:28
• E.g., ball bouncing off a wall (line in 2D) with an arbitrary inclination
• Using vector operations instead of angles & trigonometry
• What is a dot product? 2:52
• Basically: take vectors j and i: how much does a line j go in the direction of i
• If j and i are perpendicular, their dot product is 0
• How to calculate the dot product 5:54
• Visual demo, 7:01
• Angular version: a * b = ||a|| * ||b|| cos(theta) 8:49
• Vector solution: a_x * b_x + a_y * b_y 9:36
• Most common usage: "dot with a unit vector" 10:51
• Determines how much a vector is going in the direction of the unit vector
• Calculating the rebound velocity vector off an inclined wall 12:43
• The most common meme in vectors: (v*w^)w^ 20:04

### Tutorial 3.2

• Introducing the simuluation setup: plank and balls 0:38
• Coding the `Plank` class 1:08
• Coding the `Ball` class 4:08
• Spawning new balls and destructing when out of bounds 5:24
• Detecting ball collision 6:06
• Resolving ball collision (bounce) 15:20
• Homework assignment 18:50