matlab空间三点求圆心

function p = CircleCenter(p1, p2, p3)
% CircleCenter(p1, p2, p3) 根据三个空间点,计算出其圆心
%   p1,p2,p3:三个空间点
 % 圆的法向量
 pf= cross(p1-p2, p1-p3);

 if any(pf == 0)
     error('三个点不能共线!!');
 end

 % 两条线段的重点,之后需要求中垂线
 p12 = (p1 + p2)/2;
 p23 = (p2 + p3)/2;

 % 求两条线的中垂线
 p12f = cross(pf, p1-p2);
 p23f = cross(pf, p2-p3);

 % 求在中垂线上投影的大小
 ds = ( (p12(2)-p23(2))*p12f(1) - (p12(1)-p23(1))*p12f(2) ) / ( p23f(2)*p12f(1) - p12f(2)*p23f(1) );

 % 得出距离
 p = p23 + p23f .* ds;

end
  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
三点确定圆心,可以使用三角形的垂心来解。垂心是指三角形的三条高线的交点,也就是三个顶点到对边的垂线的交点。 假设有三个点 A(x1, y1),B(x2, y2),C(x3, y3)。首先我们需要出三条边的中垂线的斜率,然后通过方程出垂足的坐标,即为圆心的坐标。 步骤如下: 1. 计算三条边的中点坐标: M1 = [(x1 + x2) / 2, (y1 + y2) / 2] M2 = [(x2 + x3) / 2, (y2 + y3) / 2] M3 = [(x3 + x1) / 2, (y3 + y1) / 2] 2. 计算三条边的斜率: k1 = (x2 - x1) / (y1 - y2) k2 = (x3 - x2) / (y2 - y3) k3 = (x1 - x3) / (y3 - y1) 3. 计算三条中垂线的斜率: k1_perpendicular = -1 / k1 k2_perpendicular = -1 / k2 k3_perpendicular = -1 / k3 4. 出垂足坐标: H1 = [((y2 - y1) * (y3 - y1) * (x3 - x1) + (x2 - x1) * (x2 + x3 - 2 * x1)) / ((y2 - y1) * (y3 - y1) + (x2 - x1) * (x3 - x1)), ((y2 - y1) * (y3 - y1) * (y3 + y2 - 2 * y1) + (x2 - x1) * (y3 - y1) * (x3 - x1)) / ((y2 - y1) * (y3 - y1) + (x2 - x1) * (x3 - x1))] H2 = [((y3 - y2) * (y1 - y2) * (x1 - x2) + (x3 - x2) * (x3 + x1 - 2 * x2)) / ((y3 - y2) * (y1 - y2) + (x3 - x2) * (x1 - x2)), ((y3 - y2) * (y1 - y2) * (y1 + y3 - 2 * y2) + (x3 - x2) * (y1 - y2) * (x1 - x2)) / ((y3 - y2) * (y1 - y2) + (x3 - x2) * (x1 - x2))] H3 = [((y1 - y3) * (y2 - y3) * (x2 - x3) + (x1 - x3) * (x1 + x2 - 2 * x3)) / ((y1 - y3) * (y2 - y3) + (x1 - x3) * (x2 - x3)), ((y1 - y3) * (y2 - y3) * (y2 + y1 - 2 * y3) + (x1 - x3) * (y2 - y3) * (x2 - x3)) / ((y1 - y3) * (y2 - y3) + (x1 - x3) * (x2 - x3))] 5. 圆心即为垂足的坐标,即 H1、H2、H3 中任意一个坐标。 希望这可以帮助到你!如果有任何问题,请随时提问。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

littletomatodonkey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值