I am working on a computer game and I need to correctly reflect a ball off a circle object. I am trying to do it as a line and circle intersection. I know the intersect point of the line (ball path) and the circle. Now I want to rotate the ending point of the ball path about the intersection point to get the correct angle of reflection.

The following are known:

ball current x

ball current y

ball end x

ball end y

ball radius

circle center x

circle center y

circle radius

intersection point of ball path and circle x and y

I know I need to find the angle of incidence between the tangent line and the incoming ball path which will also equal my angle of reflection. I think once I know those two angles I can subtract them from 180 to get my rotation angle then rotate my end point about the angle of intersection by that amount. I just don't know how.

I have attached a pic. Again, I know the two end points of my line segment, the point of intersection and the radius of the circle.

I am ultimately trying to get the point marked by the open circle, so I need to know the angle between the ball path and the norm, which is the blue line.

Thanks.