# lsfit.circle: Fit a 2D circle to an (x,y) dataset In circular: Circular Statistics

## Description

Fit a 2D circle to an (x,y) dataset using LS.

## Usage

 ```1 2 3 4 5 6``` ```lsfit.circle(x, y, init = NULL, units = c("radians", "degrees"), template = c("none", "geographics"), modulo = c("asis", "2pi", "pi"), zero = 0, rotation = c("counter", "clock"), ...) ## S3 method for class 'lsfit.circle' print(x, digits = max(3, getOption("digits") - 3), ...) ```

## Arguments

 `x` either a matrix with two columns or a vector. `y` if `x` is a vector then `y` must be a vector with the same length. `init` initial values of the parameters. A vector of length 3 with the following components: radius of the circle, x-coordinate of the center, y-coordinate of the center. If `NULL` the vector is set to `c(max(c(abs(x-mean(x)), abs(y-mean(y)))), mean(x), mean(y)`. `units` the `units` used in defining the angles between observations and the center of the circle. See `circular`. `template` the `template` used in defining the angles between observations and the center of the circle. See `circular`. `modulo` the `modulo` used in defining the angles between observations and the center of the circle. See `circular`. `zero` the `zero` used in defining the angles between observations and the center of the circle. See `circular`. `rotation` the `rotation` used in defining the angles between observations and the center of the circle. See `circular`. `...` further parameters passed to the `optim` function. `digits` the number of digits to be printed.

## Details

`lsfit.circle` uses the `optim` function to minimize the sum of the squared residuals between the observations and the optimally fitting circle.

## Value

An object of class `lsfit.circle`.

 `coefficients` a vector of length 3 with the estimated radius and coordinate of the center of the fitted circle. `x` the x-coordinate. `y` the y-coordinate. `x.centered` the x-coordinate re-centered at the center of the circle. `y.centered` the y-coordinate re-centered at the center of the circle. `angles` angles of the observations with respect to the center coordinate of class `circular`. `radius` the distance between the observations and the center coordinate `convergence` value from the function optim. `optim` the output from the function optim. `call` the `match.call` result.

## Author(s)

Claudio Agostinelli and Ulric Lund

## References

Coope, I. (1993). Circle fitting by linear and non-linear least squares. Journal of Optimization Theory and Applications, 76, 381-388.

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17``` ```data(coope) res <- lsfit.circle(x=x.coope, y=y.coope) res plot(res) par(mfcol=c(1,2)) plot(res\$angles) hist(res\$radius) plot(circular(0), type="n", xlim=c(-5.2, 5.2), ylim=c(-5.2, 5.2), xlab="The Radius of the circle \n is measured from the base line of the axes.") lines(x=res\$angles, y=res\$radius, join=TRUE, type="b") ff <- function(x) sqrt((res\$coefficients[1]*cos(x))^2+(res\$coefficients[1]*sin(x))^2) curve.circular(ff, add=TRUE, join=TRUE, nosort=FALSE, col=2) windrose(x=res\$angles, y=res\$radius) ```

circular documentation built on May 1, 2019, 7:57 p.m.