Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Homework Help: Reflecting a circle off another circle

  1. Jul 1, 2010 #1
    1. The problem statement, all variables and given/known data

    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

    2. Relevant equations

    I don't know.

    3. The attempt at a solution

    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.


    Attached Files:

  2. jcsd
  3. Jul 2, 2010 #2


    User Avatar
    Science Advisor
    Homework Helper
    Gold Member

    Call the starting position of the ball (x0,y0), the bounce point on the circle (a,b), and the end point (x1,y1). The vector from the (a,b) to (x0,y0) is

    [tex]\vec V = \langle x_0 - a, y_0 - b\rangle[/tex]

    The position vector of (a,b) is

    [tex]\vec R = \langle a,b\rangle[/tex]

    and a vector of length one in that direction is

    [tex]\hat r = \frac{\vec R}{| \vec R|}[/tex]

    The orthogonal projection of V on the radius direction is

    [tex]\vec V_{perp} = \vec V - (\vec V \cdot \hat r)\hat r[/tex]

    Then the ending point is:

    [tex]\langle x_1,y_1\rangle = \vec R + \vec V - 2\vec V_{perp}[/tex]
  4. Jul 2, 2010 #3


    User Avatar
    Science Advisor
    Homework Helper
    Gold Member

    Since this apparently isn't homework, I will save you a little more work. Here's the coordinates (x1,y1) of the reflection point in terms of the given point and the bounce point on the circle:


Share this great discussion with others via Reddit, Google+, Twitter, or Facebook