Find center of rotation given a point inside circle

3 views (last 30 days)
pw
pw on 18 Mar 2015
Commented: pw on 19 Mar 2015
I have a point inside a circle (not the center) and a list of distances from that point corresponding to points on the perimeter of the circle. The points on the perimeter of the circle are evenly spaced and I do not know the angle from the point inside the circle to the points on the perimeter.
How can I find the center of the circle?
Thanks! PW
  2 Comments
Guillaume
Guillaume on 18 Mar 2015
This sounds a lot more like a math / geometry problem than a matlab problem.
It also sounds a lot like homework.
James Tursa
James Tursa on 18 Mar 2015
If the only information you have is distances, then the answer cannot be obtained uniquely. Any answer you obtain could be rotated about your point to obtain an equally valid answer.

Sign in to comment.

Answers (1)

John D'Errico
John D'Errico on 18 Mar 2015
Edited: John D'Errico on 18 Mar 2015
Actually, I'll bet that this is not a homework problem, at least not directly. Most students just post the direct assignment question, and this is clearly one that the poster has though about, and understands well enough to at least paraphrase the question in their words. So not a HW problem. I think.
Ok, so lets think about what you are giving us. A single, KNOWN point, that is known to be inside a circle. You don't know the center of radius of the circle.
Next, you have a list of distances from that point to a set of unknown points on the perimeter of the circle. Those points are unknown also. The only things you do know are the distances to those points, AND that they are equally spaced on the perimeter.
Before I could go further, an immediate question arises. Do the perimeter points cover the entire circumference? Or might they only lie in one quadrant, while still being equally spaced along that circular arc? Is that spacing of the points assumed to be exactly equal, to within floating point precision? So is there any noise in this system? (Again, beyond normal floating point trash in the least significant bits.)
Next, I think it is provable that there is no unique solution to this problem. As was pointed out, there are infinitely many points that will solve it, merely by rotating them around your indicated point. The problem has complete circular symmetry. Think of it this way:
Each piece of information is a distance only, to an unknown point. You can express that as a circle of known radius around your point. So you have many circles, of varying radii around a given point. Your goal is to find a circle that intersects Each of these circles. If any solution does exist that also satisfies the requirement that each of the intersections lies equally spaced around that new circular arc, then there must be infintely many solutions, since the circles as drawn are completely symmetrical around the point.
  4 Comments
Image Analyst
Image Analyst on 18 Mar 2015
But he says , and you can assume (or maybe not), that all the other points are on the perimeter of the same big circle. If they're not, and they're just scattered around like raindrops on the ground, then you're right, but given that they must be on the perimeter of one big circle, then minboundcircle() should work.
Or feed 3 or more of the perimeter points into the FAQ: http://matlab.wikia.com/wiki/FAQ#How_can_I_fit_a_circle_to_a_set_of_XY_data.3F
pw
pw on 19 Mar 2015
Thanks for your input John and Image Analyst.
The perimeter points do not necessarily cover the entire circumference but they are always equally spaced. In the case I'm working with currently, the points span across 320 degrees. There is some noise in the system with respect to the distances from the point inside the circle to the points on the perimeter.
I think I understand the remark regarding no unique solution. It's more proper for me to ask for the radius of the circle instead of its center (unless there's still no unique solution...). I will look into the minboundcircle() function but still not sure how I can obtain the right perimeter points?

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!