The center of a circle

  1. Feb 19, 2007 #1
    Hi everybody,

    I ve got a question : is it possible to identify the center of a given cirle with only a compass?

    Thanks for reading
  2. jcsd
  3. Feb 19, 2007 #2
    No you need a ruler as well.

    Pick a point A on the circle. Draw a circle with center A and diameter less than that of the given circle. Mark off the two points B and C where this new circle intersects the given one. Join B and C with the line BC.

    Bisect BC. The midpoint is D. Draw a straight line through A and D and extend it until it meets the given circle again at E. AE is a diameter.

    Repeat this process for a second point on the given circle. Where the two diameters meet is the center.
  4. Feb 19, 2007 #3
    Thank you for answering.
    But the problem is without a ruler !!! It seems impossible. I have tried many times but failed.
  5. Feb 20, 2007 #4
    It works without a ruler, though only for a circle that's on a sheet of paper.
    Instead of using a ruler fold the paper to make a line visible.
  6. Feb 20, 2007 #5
    Well, it seems like a trick ! Let's say the circle is on a table. May be we need to prove it impossible to do so.
  7. Feb 20, 2007 #6
  8. Feb 20, 2007 #7
    It's great !. Thank you Jeroen.
    Anyway, how can we prove that friends?
  9. Feb 21, 2007 #8
    The method works by drawing a circle, picking two points on it, then draw a series of circles based on where the existing circles.
    The final answer is the intersection of the last two circles.

    All you need to do is write a big formula containing all these circles and resulting in the coordinates of the final intersection and then prove that "the_big_function(center_of_circle, radius_of_circle, point_1_on_circle, point_2_on_circle) = center_of_circle" is true for any input.

    This would be a start:
    Code (Text):
      float x
      float y

      point center
      float radius

    point intersect (circle ca, circle cb, point pn)
      returns intersection between ca and cb that is not pn

    float distance (point pa, point pb)
      returns distance between points pa and pb

    point pointoncircle (circle c, float angle)
      returns a point on the circle going the given angle clockwise from the top

      circle c0 = variable
        c0.radius = variable
      float a1
        a1 = variable
      float a2
        a2 = variable

      point pf

      point p1
        p1 = pointoncircle(c0,a1)
      point p2
        p2 = pointoncircle(c0,a2)
      circle c1 = p1
        c1.radius = distance(p1,p2)
      circle c2 = p2
        c2.radius = distance(p1,p2)
      circle c3 = intersect(c0,c1,p2)
        c3.radius = distance(p1,p3)
      circle c4 = intersect(c2,c3,p1)
        c4.radius = distance(intersect(c2,c3,p1),p1)
      circle c5 = intersect(c4,c3,p1)
        c5.radius = distance(intersect(c4,c3,p1),p1)
      circle c6 = intersect(c2,c4,p1)
        c6.radius = distance(intersect(c2,c4,,p1),p1)
      pf = intersect(c5,c6,p1)
    Last edited: Feb 21, 2007
  10. Feb 21, 2007 #9


    User Avatar
    Staff Emeritus
    Science Advisor

Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?