File Exchange

image thumbnail

Fit circle through 3 points

version 1.0.0.0 (3.23 KB) by Danylo Malyuta
A fault-tolerant function for computing a circle's center and radius given three x-y points

29 Downloads

Updated 14 Jun 2016

View License

Mathematical background is provided in http://www.regentsprep.org/regents/math/geometry/gcg6/RCir.htm
Input:
ABC is a [3 x 2n] array. Each two columns represent a set of three points which lie a circle. Example: [-1 2;2 5;1 1] represents the set of points (-1,2), (2,5) and (1,1) in Cartesian (x,y) coordinates.
Outputs:
R is a [1 x n] array of circle radii corresponding to each set of three points.
xcyc is an [2 x n] array of of the centers of the circles, where each column is [xc_i;yc_i] where i corresponds to the {A,B,C} set of points in the block [3 x 2i-1:2i] of ABC

Usage example: I want to compute the centers and radius for:
* A circle passing through points (-1,0), (0,1) and (1,0)
* A circle passing through points (-1 0), (0,0) and (0,1)
The code to do this is the following:
>> ABC=[[-1 0;0 1;1 0] [-1 0;0 0;0 1]]

ABC =

-1 0 -1 0
0 1 0 0
1 0 0 1

>> [R,xcyc] = fit_circle_through_3_points(ABC)

R =

1.0000 0.7071

xcyc =

0 -0.5000
0 0.5000

NOTE: the function is fully fault-tolerant, in other words it always outputs a result "that makes the most sense". See the heavily commented function code for details on how the fault-tolerance is achieved.

Comments and Ratings (5)

amin az

tank u it saved me a lot of time

Saqib Azim

How would you go about plotting this with viscircle?

Updates

1.0.0.0

Changed title

1.0.0.0

Updated screenshot and file comments.

1.0.0.0

Corrected the description

MATLAB Release Compatibility
Created with R2016a
Compatible with any release
Platform Compatibility
Windows macOS Linux