This collision algorithm “assume” that the wall is infinite, and is defined by a point q and a normal n. The ball is defined by a point p and a radius r.
In this time step the ball is moving along the ds vector. The point of impact is at the “time” x along that vector. So in order to find the x value, we will first find the d vector, which is defined from the center of the ball p to the point qn.
Then we will find the green and the purple vector. The green vector is defined from the center of the ball p to the “time of impact” xds. And the purple vector is defined from the center of the ball p to the point qn. Both the vectors are in the same direction as the normal of the wall.
x, by putting the green vector and the purple vector equals each other into an equation.
x <ds, n> n = <d, n> n
- If x is in (0, 1], this would be the “time of impact”.
- If x < 0, then the ball is moving away from the wall.
- If x > 1, then not a collision within this time step.
- If the <ds,n> is equals approximately to zero, then the ball is moving parallel with the wall.