三点定圆程序(matlab实现)

function [center, r] = solve_circle(pt1, pt2, pt3)
%Effect: solve the circle which across points 'pt1', 'pt2' and 'pt3'
%Inputs:
%pt1, pt2, pt3: [x, y]
%center: the circle center [x0; y0]
%r: the radius of the circle
%Author: Su dongcai at 2012/1/2
A = zeros(2, 2); B = zeros(2, 1);
[A(1, :), B(1)] = circle2line(pt1, pt2);
[A(2, :), B(2)] = circle2line(pt2, pt3);
center = A\B;
r = norm(pt1' - center);

function [A, B] = circle2line(pt1, pt2)
%Effect: cast 2 circles equation into 1 linear equation:
%(a-x1)^2 + (b-y1)^2 = r^2 |
% |==> 2(x1-x2)a + 2(y1-y2)b = (x1^2 + y1^2) - (y2^2 + y2^2)
%(a-x2)^2 + (b-y2)^2 = r^2 |
%Inputs:
%pt1, pt2: [x1, y1], [x2, y2]
%Outputs:
%A: 2[x1-x2, y1-y2]
%B: (x1^2 + y1^2) - (x2^2 + y2^2)
%Author: Su dongcai at 2012/1/2
A = 2*(pt1 - pt2);
B = norm(pt1)^2 - norm(pt2)^2;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值