三点外接圆的半径(面积)计算 Matlab实现

文章介绍了如何在三维空间中利用Matlab计算过不共线三点的外接圆半径,通过三角形的三边长度结合正弦定理和海伦公式进行求解。提供的`calcRadius`函数接收三个点的坐标,计算外接圆半径,并处理了两点重合或三点共线的情况。示例展示了计算过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三点外接圆的半径(面积)计算 Matlab实现

原理介绍

如下图所示,三维空间内,过任意不共线三点可画出一个空间圆,也称作三角形的外接圆。外接圆的半径为 R,三角形的三个顶点为 A、B、C,三角形的 AB 边上的高 CD 垂直于 AB。设三条边的长度分别为 a、b、c,CD 的长度为 h。

根据三角形的底和高,三角形的面积表示如下 :

S = 0.5 * c * h;		(1)

其中,高可表示为:

h = b * sinA;			(2)

根据正弦定理:

a / sinA = b / sinB = c / sinC = 2R;			(3)

于是有:

S = abc/4R;

另外一方面,根据海伦公式:

S=(p(p-a)(p-b)(p-c));
其中 p = 0.5 * (a + b + c);

两种方法计算的三角形面积相等,这样就可以根据三角形的三边长度计算出外接圆的半径(求出半径也就知道面积),而三个点之间的三边长度是极其容易计算的。

Matlab实现

% function: 根据传入三点坐标计算外接圆半径
% param: 三个点坐标
% rerurn: 外接圆半径(不存在时返回 -1)
function nRadius = calcRadius(P1, P2, P3)
	V1 = P2 - P1;				% 一条边的向量
	na = calcLength(V1);		% 该边的长度

	V2 = P3 - P1;				% 一条边的向量
	nb = calcLength(V2);		% 该边的长度

	V3 = P3 - P2;				% 一条边的向量
	nc = calcLength(V3);		% 该边的长度

	np = ( na + nb + nc) * 0.5;			% 海伦公式中的 p
	pa = np - na;
	pb = np - nb;
	pc = np - nc
	
	nS2 = np * pa * pb * pc;			% 根据海伦公式计算的三角形面积的平方
	
	if (nS2 <= 0)
		nRadius = -1;					% 两个点重合或三点共线时,nS2 为 0 
	else
		nS = sqrt(nS2);
		nRadius = na * nb * nc / ( 4 * nS);
	end
end	

% function: 计算向量的模长
% param: 向量
% rerurn: 模长
function nLen = calcLength(V)
	nLen = sqrt(dot(V,V));
end

使用例子:

%定义三个点的坐标
A = [0 0 0];
B = [0 1 2];
C = [4 5 6];

nR = calcRadius(A, B, C)

输出为 nR = 6.9372

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值