I am trying to make a simple physics based game in SDL, and i require a ball to bounce of lines in game.

However, when the ball collides with the line, it clips through it, messing up the collision count.

The problem is due to the speed of the ball. If the ball travels fast enough, it can pass right through the line.

I use frame independent motion and a circular collision detection for the ball

How can i make sure the collision doesn't clip?

Code For the Ball Collision Detection

bool Projectile::check_collision(Line L) { int X1,X2,Y1,Y2,CL; int Cx=0,Cy=0,CP=0,Px=0,Py=0; float shortest_distance; double slopeL=0,slopeP=0; L.get_Line(X1,Y1,X2,Y2); getLocation(Px,Py); Px+=size/2; Py+=size/2; if(X2-X1!=0) { slopeL=(Y2-Y1)/(X2-X1); slopeP=-1/slopeL; //Y=mX+C; CL=Y1-slopeL*X1; CP=Py-slopeP*Px; Cx=(CL-CP)/(slopeP-slopeL); Cy=slopeP*Cx + CP; } else { Cy=Py; if(X2>Px) Cx=X2-Px; else Cx=Px-X2; } shortest_distance=sqrt(pow(double(Cx-Px),2)+pow(double(Cy-Py),2)); if(shortest_distance<size/2) { if(X2-X1!=0) on_collision(slopeL); else on_collision(); return true; } else return false; }

If any more info is needed please tell me.