外接圆问题


问题描述

外接圆问题也可以叫做3点确定一个圆,是求一个三角形的三个顶点所外接的一个圆。该问题也可以推广到三位维求解,要确定一个球体的话就需要四个顶点。 该问题和内切圆/球问题通常放在一起讨论。本文先对外接圆问题进行讨论。
在这里插入图片描述

已知条件

v 0 , v 1 , v 2 v_0,v_1,v_2 v0,v1,v2为三角形的三个顶点,我们需要求得外接圆的圆心坐标C,和半径r。

求解

分析:三点确定一个圆,那么这三个点到圆心点距离相同,可得下式,整理可求解 C,r。该求解方式可应用于三维内切球体求解,但需要注意4个外接顶点
在这里插入图片描述

Code

在这里插入图片描述

clc;
close all;
clear;


rng default;
d = rand(3,2);
p1 = d(1,:);
p2 = d(2,:);
p3 = d(3,:);
[c, r] = calCircle(p1, p2, p3);
showGraph(p1, p2, p3, c, r);


function [c, r] = calCircle(p1, p2, p3)
    v1 = p2 - p1;
    v2 = p3 - p1;
    A = [v1; v2];
    B = 0.5*[norm(v1)^2; norm(v2)^2];
    x = A\B;
    c = p1 + x';
    r = norm(c-p1);
end

function showGraph(p1, p2, p3, c, r)
    t = linspace(0,2*pi,100);
    x = c + [r*sin(t'), r*cos(t')];
    figure;
    p = [p1;p2;p3];
    scatter(p(:,1), p(:,2));
    hold on
    plot(x(:,1), x(:,2));
    hold on
    scatter(c(1), c(2))

end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值