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: Intersection points of a line on a circle

  1. Jun 26, 2007 #1
    Hi all,

    I have a bit of an algebraic problem, and my lack of attention during math is starting to show. I was experimenting with hit detection based on lines for a simple shooting game, and the enemies bieng circulair.

    I already have a function to check the distance from the line to the circles centre, so I already know that there is a intersection (or hit). I also would like to know where it intersects, for graphics and some extra physics.

    So here's what I got:


    so these can be considered constant

    Equitions so far

    y = mx+b
    r^2 = y^2 + x^2

    this gives:
    r^2 = (mx+b)^2 + x^2

    And then my troubles begin, because writing that out would give:
    r^2 + b^2 = x^2 + mx^2 + 2mbx

    Googling around tells me that this is the way to go, and you should get a quadratic function, but I don't know how to solve this kind of equation. Can anybody help out? I hope to finish a prototype soon.

    Tnx in advance,

  2. jcsd
  3. Jun 26, 2007 #2


    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    The equation

    [tex] x^2 + y^2 = r^2 [/tex]

    implies that the center of the circle is at the origin of your coordinate system. You propably should be using the the more general form:

    [tex] (x-k)^2 + (y-h)^2 = r^2 [/tex]

    where the center of the circle is at (k,h)
  4. Jun 26, 2007 #3
    Yes, but that would complecate the problem even more. I was thinking of transforming the line function instead to simplify it, but if anyone knows the solution, that would be better. It would make a more efficient function.
  5. Jun 26, 2007 #4
    Google quadratic formula.

    If your circles aren't at the origin, and they're probably not, you'll have to use the more general form [tex]\int[/tex] suggested.

    The other option you can do is make (k,h) the 'origin' and have the equation of the line adjusted appropriately.
  6. Jun 26, 2007 #5


    User Avatar
    Staff Emeritus
    Science Advisor
    Gold Member

    You need to but your quadratic in the standard form

    [tex] ax^2 + bx +c =0 [/tex]

    Then apply the quadradic formula. It is essential that you use a consistent coordinate system. That means that the expression for the line and the circle should plot correctly if you were to draw them out.
  7. Jun 27, 2007 #6
    Exactly. But how do I go about, getting it to this form?

    [tex] r^2 = x^2 + y^2 [/tex]
    [tex] r^2 = x^2 + (mx+b)^2 [/tex]
    [tex] r^2 = x^2 + mx^2 + 2*bmx + b^2 [/tex]

    I have no idea how I can get that to [tex] ax^2 + bx +c =0 [/tex]
  8. Jun 27, 2007 #7

    Letting a=(1+m), b=2bmx and c=b^2 you will have it in 'standard form'.

    The important thing to realize that there are two different b's and not getting confused.
  9. Jun 27, 2007 #8
    Ah, thanks a bundle! I overlooked the possibility of [tex]x^2 + mx^2 = (1+m)x^2[/tex]

    No need to worry about me getting confused over that: I did a ton of these when I was 16. The problem is, that was 7 years ago :tongue:

    I'm gonna give [tex](x-k)^2 + (y-h)^2 = r^2 [/tex] a try after lunch.
  10. Jun 27, 2007 #9
    [tex] r^2 = (x-k)^2 + (y-h)^2 [/tex]
    [tex] r^2 = x^2 -2kx + k^2 + y^2 -2hy + h^2 [/tex]
    [tex] r^2 = x^2 -2kx + k^2 + (mx+b)^2 -2h(mx+b) + h^2 [/tex]
    [tex] r^2 = x^2 -2kx + k^2 + m^2x^2 + 2bmx + b^2 - 2hmx - 2hb + h^2 [/tex]

    [tex] 0 = (1-2k+m^2)x^2 + (2bm-2hm)x + (k+b^2-2hb+h^2-r^2) [/tex]

    [tex] D = b^2 - 4ac [/tex]
    [tex] D = (2bm - 2hm)^2 - 4(1-2k+m^2)(k+b^2-2hb+h^2-r^2) [/tex]

    No real need to evaluate D though, as there are always two intersections in my case.

    [tex] x = \frac{-b+\sqrt{D}}{2a} [/tex] or
    [tex] x = \frac{-b-\sqrt{D} }{2a} [/tex]
    [tex] x = \frac{-(2bm-2hm)+\sqrt{D}}{2(1-2k+m^2)}[/tex] or [tex] x = \frac{-(2bm-2hm)+\sqrt{D}}{2(1-2k+m^2)}[/tex]

    Is this right?
    Last edited: Jun 27, 2007
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook