Reflecting a circle off another circle

  • Thread starter Thread starter jrs8719
  • Start date Start date
  • Tags Tags
    Circle
Join the discussion
Registration is free. Ask a follow-up in this thread, or start your own.
2 replies · 2K views
jrs8719
Messages
1
Reaction score
0

Homework Statement



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

Homework Equations



I don't know.

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.

Thanks.
 

Attachments

  • Untitled.jpg
    Untitled.jpg
    2.8 KB · Views: 516
Physics news on Phys.org
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]
 
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:

[tex]x_1=\frac{x_0(a^2-b^2)+2aby_0}{a^2+b^2}[/tex]

[tex]x_2=\frac{y_0(b^2-a^2)+2abx_0}{a^2+b^2}[/tex]