三点外接圆的半径(面积)计算 Matlab实现
三点外接圆的半径(面积)计算 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实现相关推荐
- C语言 从键盘输入圆的半径,计算并输出圆的正内接六边形的面积,以及这个正六边形面积占圆面积之百分比
编一程序,从键盘输入圆的半径,计算并输出圆的正内接六边形的面积,以及这个正六边形面积占圆面积之百分比.圆的正内接六边形的面积计算公式为:area=sqrt(3)*3/2r2.其中,r是圆半径,sqrt ...
- 输入圆的半径,计算圆的面积和周长。
.输入圆的半径,计算圆的面积和周长. #define PI 3.14 #include<stdio.h> #include<math.h> int main() { float ...
- Java_输入圆的半径,计算周长及面积
Java_输入圆的半径,计算周长及面积 import java.util.Scanner; import static java.lang.Math.*;/**输入圆的半径,计算圆的周长及面积并输出* ...
- C# 输入半径,计算圆的面积和周长
一个课下小作业 输入圆的半径,计算圆的面积和周长输出到控制台. 输出格式: 3.14用Math.PI代替 代码如下 .NET 5 using System;namespace Circle {inte ...
- Python 输入圆半径,计算圆周长和面积
用 Python 编写程序:输入圆半径,计算圆周长和面积 """ 功能: 输入圆半径,计算圆周长和面积 作者: Fulling 时间: 2021年10月15日 " ...
- 用python求解:用户分别输入外援半径和内圆半径,计算圆环的面积;及用户分别输入圆柱的底面圆半径和高,输出圆柱和表面积。(附带源码)
用python求解:用户分别输入外援半径和内圆半径,计算圆环的面积:及用户分别输入圆柱的底面圆半径和高,输出圆柱和表面积.(附带源码) 纯分享一下平时练习题: 运算结果如下 源代码如下: import ...
- Learning Log: 输入圆的半径,计算圆的面积
一个Java入门小题目: 输入圆的半径,计算圆的面积 代码及注释如下: package day002;import java.util.Scanner;/*** * @author 左左* @Date ...
- 2021-01输入圆的半径,计算圆的面积
'''根据输入的半径,计算圆的面积.''' import math f1=20 f2=10 alpha=math.pi/3 x_force=f1+f2*math.sin(alpha) y_force= ...
- php编程已知半径求圆周长面积,VB程序题:输入半径,计算圆周长和圆面积,如下图所示。...
VB程序题:输入半径,计算圆周长和圆面积,如下图所示. 进一步要求,为了保证程序运行的正确,对输入的半径要进行合法性检查,数据检查调用IsNumeric函数,参阅教材例2.5:若有错,利用MsgBox ...
最新文章
- PNAS:水稻微生物组
- 数据库防火墙onefirewall,如何防范黑客物理删除?避免携程事件再次上演
- Raft只读操作实现要点
- codeforces685B
- 4路外线(NAT+PBR真实案例)
- 如何取得用户参数文件中的parameters
- 大二暑假周进度总结07
- 在Ubuntu18上搭建K8s集群(1.19.3)
- 全球首个商用5G网络首秀遭吐槽:信号太难找 用起来像4G!
- 人和人之间不要靠的太近
- ARM64 LFS 11.1编译成功
- php mysql日程管理_9.3 日程表数据库设计
- Pandas时间序列数据操作
- rk3399_9.0.1_mid 时区转换
- NNDL 实验五 前馈神经网络(2)自动梯度计算 优化问题
- Qt文件选择复制另存为
- 免费视频教程:嵌入式stm32项目开发之心率检测仪的设计与实现
- 下一代互联网实验:IPv6静态路由和路由汇总 IPv6 to IPv4 隧道 IPv6 NAT-PT 配置
- word硬回车替换为软回车
- 【工具】fis3 - 语法教程(1)之资源嵌入
热门文章
- android 来电压力测试,50次之后,来电无法唤醒屏幕
- cr3格式是什么意思_如何用PS导入佳能CR3格式图片?_科技数码通
- POJ1228 Grandpa's Estate
- win10升级win11后笔记本电脑充不了电解决方法
- 我的世界手机版javaui材质包_教你然后用手机玩电脑版我的世界模组?
- 1. 医院的就诊流程是怎样的?
- 索尼的hlg是什么_索尼HLG的使用方法
- 笔记本电脑鼠标自己乱动怎么办?
- Ubuntu 提供桌面小工具 screenlet,桌面时钟,桌面贴条
- 设计九宫格手机输入法(附C++源码)初学C语言练手小项目!