# [R-sig-Geo] Find a circle center with spatial points

Chris Reudenbach reudenbach at uni-marburg.de
Fri Mar 18 23:28:51 CET 2016

```Oops :-[ , Barry thanks for clarification , I got it now.

I don't understand the math either but as a kind of "reparation"
for not reading well enough I found the authors java code.
https://www.spaceroots.org/documents/circle/CircleFitter.java
"package org.spaceroots;"
compile it with:

javac CircleFitter.java -Xlint:unchecked

then you can run it with:

java CircleFitter input.file

The input data should be formated like:

# input
# x y
0 5
1 4.5
2.5 4
3 3.5
4 2
5 0

the above input yields

initial circle: -001.69467803 -000.69446643 006.23578103
converged after 7 iterations
final circle: -001.34339845 -001.34426151 006.44308386

which at least make sense with respect to the data.

You easily can  run it from R by system() and grab the output in a file
using a OS depending pipe
or you may run it using the rJava package which could be more complex.

cheers Chris

if you want you can call it from R with javaR

Am 18.03.2016 um 20:11 schrieb Barry Rowlingson:
> On Fri, Mar 18, 2016 at 6:49 PM, Chris Reudenbach
> <reudenbach at uni-marburg.de> wrote:
>> Because it seems to be an arc and not a circle issue that you can solve the
>> problem by
>> picking arbitrary two points of your assumed "arc" then construct
>> (calculate)  the perpendicular bisector of
>> the line between them and do so for another arbitrary two points of the
>> assumed "arc".
>>
>> The intersection of the perpendicular lines is the assumed center of the
>> arc.
>>
>> If you iterate over all points this should be a pretty good estimation of
>> the real center.
>   This is the  "sample 3 points and find the fitted circle" idea, you
> are likely to get massive "outliers" and if you take the mean
> coordinate it could fail horribly. See the paper I linked to for an
> example. They use the median to get an initial "robust" estimate of
> x,y,R, and then use some specialised optimisation to improve the
> estimate - you can't just throw it into "optim"!
>
>   Not sure I understand the maths in it yet though....
>
> Barry
>

```