三点外接圆的半径(面积)计算 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;           % 海伦公式中的 ppa = np - na;pb = np - nb;pc = np - ncnS2 = np * pa * pb * pc;            % 根据海伦公式计算的三角形面积的平方if (nS2 <= 0)nRadius = -1;                  % 两个点重合或三点共线时,nS2 为 0 elsenS = 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

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

  1. C语言 从键盘输入圆的半径,计算并输出圆的正内接六边形的面积,以及这个正六边形面积占圆面积之百分比

    编一程序,从键盘输入圆的半径,计算并输出圆的正内接六边形的面积,以及这个正六边形面积占圆面积之百分比.圆的正内接六边形的面积计算公式为:area=sqrt(3)*3/2r2.其中,r是圆半径,sqrt ...

  2. 输入圆的半径,计算圆的面积和周长。

    .输入圆的半径,计算圆的面积和周长. #define PI 3.14 #include<stdio.h> #include<math.h> int main() { float ...

  3. Java_输入圆的半径,计算周长及面积

    Java_输入圆的半径,计算周长及面积 import java.util.Scanner; import static java.lang.Math.*;/**输入圆的半径,计算圆的周长及面积并输出* ...

  4. C# 输入半径,计算圆的面积和周长

    一个课下小作业 输入圆的半径,计算圆的面积和周长输出到控制台. 输出格式: 3.14用Math.PI代替 代码如下 .NET 5 using System;namespace Circle {inte ...

  5. Python 输入圆半径,计算圆周长和面积

    用 Python 编写程序:输入圆半径,计算圆周长和面积 """ 功能: 输入圆半径,计算圆周长和面积 作者: Fulling 时间: 2021年10月15日 " ...

  6. 用python求解:用户分别输入外援半径和内圆半径,计算圆环的面积;及用户分别输入圆柱的底面圆半径和高,输出圆柱和表面积。(附带源码)

    用python求解:用户分别输入外援半径和内圆半径,计算圆环的面积:及用户分别输入圆柱的底面圆半径和高,输出圆柱和表面积.(附带源码) 纯分享一下平时练习题: 运算结果如下 源代码如下: import ...

  7. Learning Log: 输入圆的半径,计算圆的面积

    一个Java入门小题目: 输入圆的半径,计算圆的面积 代码及注释如下: package day002;import java.util.Scanner;/*** * @author 左左* @Date ...

  8. 2021-01输入圆的半径,计算圆的面积

    '''根据输入的半径,计算圆的面积.''' import math f1=20 f2=10 alpha=math.pi/3 x_force=f1+f2*math.sin(alpha) y_force= ...

  9. php编程已知半径求圆周长面积,VB程序题:输入半径,计算圆周长和圆面积,如下图所示。...

    VB程序题:输入半径,计算圆周长和圆面积,如下图所示. 进一步要求,为了保证程序运行的正确,对输入的半径要进行合法性检查,数据检查调用IsNumeric函数,参阅教材例2.5:若有错,利用MsgBox ...

最新文章

  1. PNAS:水稻微生物组
  2. 数据库防火墙onefirewall,如何防范黑客物理删除?避免携程事件再次上演
  3. Raft只读操作实现要点
  4. codeforces685B
  5. 4路外线(NAT+PBR真实案例)
  6. 如何取得用户参数文件中的parameters
  7. 大二暑假周进度总结07
  8. 在Ubuntu18上搭建K8s集群(1.19.3)
  9. 全球首个商用5G网络首秀遭吐槽:信号太难找 用起来像4G!
  10. 人和人之间不要靠的太近
  11. ARM64 LFS 11.1编译成功
  12. php mysql日程管理_9.3 日程表数据库设计
  13. Pandas时间序列数据操作
  14. rk3399_9.0.1_mid 时区转换
  15. NNDL 实验五 前馈神经网络(2)自动梯度计算 优化问题
  16. Qt文件选择复制另存为
  17. 免费视频教程:嵌入式stm32项目开发之心率检测仪的设计与实现
  18. 下一代互联网实验:IPv6静态路由和路由汇总 IPv6 to IPv4 隧道 IPv6 NAT-PT 配置
  19. word硬回车替换为软回车
  20. 【工具】fis3 - 语法教程(1)之资源嵌入

热门文章

  1. android 来电压力测试,50次之后,来电无法唤醒屏幕
  2. cr3格式是什么意思_如何用PS导入佳能CR3格式图片?_科技数码通
  3. POJ1228 Grandpa's Estate
  4. win10升级win11后笔记本电脑充不了电解决方法
  5. 我的世界手机版javaui材质包_教你然后用手机玩电脑版我的世界模组?
  6. 1. 医院的就诊流程是怎样的?
  7. 索尼的hlg是什么_索尼HLG的使用方法
  8. 笔记本电脑鼠标自己乱动怎么办?
  9. Ubuntu 提供桌面小工具 screenlet,桌面时钟,桌面贴条
  10. 设计九宫格手机输入法(附C++源码)初学C语言练手小项目!