I have a large set of data recorded by a logging system which rotates at a fixed but unknown speed around an unknown location. The sensor has a very narrow field of view and each time the sensor "sees" an object the object records it's location in two dimensions.

The data set therefore consists of a great many two dimensional points which sit somewhere on the circumference of an unknown number of concentric circles arranged around the location of the rotating logging system.

Is there a way to determine the location of the common centre that joins all of these concentric circles - in other words the logging system ?

The obvious way (looking at tangents drawn between two arbitrary points) fails because there's no way of knowing if any two arbitrary points belong to the same circle or not. In other words there's no way of separating out the different concentric rings.

With a small amount of data I suppose that an iterative solution might be possible but I've got 100,000 locations to work with ! And as my data often only covers an arc then it's not possible to work out the centroid of the shape.

This is - to me at least - a real brain teaser. Could anyone point me in the right direction of a solution that could be automated once I've understood it ...

Thanks in advance

  • $\begingroup$ cant any random point work, any point will create random concentric circles right? $\endgroup$ – avz2611 Nov 20 '17 at 15:25
  • $\begingroup$ The data consists of many 2D points but these numbers are coordinates relative to some coordinate system. Can you describe the coordinate system? Also if you have for each point the time where the data was obtained, this can be a useful information because of the fixed speed of rotation of the logging system. $\endgroup$ – Gribouillis Nov 20 '17 at 15:28
  • $\begingroup$ Yes any single point will be on one if the circles. The coordinate system is latitude and longitude so effectively a Cartesian system. I do have time information as well accurate to around 1/10 second $\endgroup$ – Philip Lee Nov 20 '17 at 15:48

Hint Here is an idea, suppose $A$ and $B$ are 2 data points. Let $\alpha$ be an unknown angle. The following image from Wikipedia shows the arc of circle of points $M$ such that the angle $AMB$ is $\alpha$. Suppose one of these points $M$ is the center of rotation and let $C$ be a third data point. Suppose that the time distance between $B$ and $C$ is $\lambda$ times the time distance between $A$ and $B$. As the rotation speed is constant, we know that the angle $BMC$ is $\lambda \alpha$. This allows us to draw a second arc of circle for which $B C$ is a chord, the set of points $M$ that satisfy this angular constraint. The intersection of the two arcs give us a point $M_\alpha$, the only candidate as center of rotation for this value of $\alpha$.

We don't know $\alpha$, so for this three data points $A, B, C$, we have a curve $\alpha \mapsto M_\alpha$ that must contain the center of rotation. The intersection of two or more such curves should actually allow us to find the center of rotation.

There are many details, for example $\alpha$ belongs to $[0, \pi]$, so what needs to be done when $\lambda \alpha > \pi$ ? There is some work, but at least this is a strategy.

enter image description here

  • $\begingroup$ Thanks for the suggestion. I could see it being the basis of a solution in the case where each of the objects are on the same arc, in other words the same distance from the sensor. However they all vary so I'd get a lot of different estimates for the position of O. That might produce a cluster containing the real position which would get me closer to the answer I suppose .... $\endgroup$ – Philip Lee Nov 21 '17 at 8:43
  • $\begingroup$ Not at all, this solution does not suppose that the objects are at the same distance from the sensor. I may need to explain it better. $\endgroup$ – Gribouillis Nov 21 '17 at 9:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.