1. 直角三角形的外心(即三边垂直平分线交点)在斜边的中点上,因此直角三角形的外接圆半径就等于斜边的一半

2. 求外接圆半径

三角形三边为 a、b、c

半周长     p=(a+b+c)/2
三角形面积 S=√[p(p-a)(p-b)(p-c)]   (海伦公式)
内切圆半径 r = S/p
                       =√[(p-a)(p-b)(p-c)/p]
                       = ½√[(-a+b+c)(a-b+c)(a+b-c)/(a+b+c)]
外接圆半径 R= abc/(4S)
                        = ¼ abc/√[p(p-a)(p-b)(p-c)]
                        = abc/√[(a+b+c)(-a+b+c)(a-b+c)(a+b-c)]
R、r、S 关系

rR = S/p *  abc/(4S) = abc/[2(a+b+c)]

3. 求外接圆圆心

三维矩阵行列式:

4. 实现代码(C++)

/**
处理:如三点共线,则返回false;否则,返回true,并将计算得到的圆心与半径存放在center和radius众返回。
*/
bool  triangleCircle(const Point& p1,const Point& p2,const Point& p3,Point &center,double &radius)
{//检查三点是否共线if( isThreePointsOnOneLine(p1,p2,p3) )return false;double  x1,x2,x3,y1,y2,y3;x1  =  p1.x; x2  =  p2.x;x3  =  p3.x;y1  =  p1.y;y2  =  p2.y;y3  =  p3.y;//求外接圆半径double a=sqrt( (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2) );double b=sqrt( (x1-x3)*(x1-x3)+(y1-y3)*(y1-y3) );double c=sqrt( (x2-x3)*(x2-x3)+(y2-y3)*(y2-y3) );double p=(a+b+c)/2;double S=sqrt( p*(p-a)*(p-b)*(p-c) );radius=a*b*c/(4*S);//求外接圆圆心double t1=x1*x1+y1*y1;double t2=x2*x2+y2*y2;double t3=x3*x3+y3*y3;double temp=x1*y2+x2*y3+x3*y1-x1*y3-x2*y1-x3*y2;double x=(t2*y3+t1*y2+t3*y1-t2*y1-t3*y2-t1*y3)/temp/2;double y=(t3*x2+t2*x1+t1*x3-t1*x2-t2*x3-t3*x1)/temp/2;center.x  =  x  ;center.y  =  y  ;return true;
}
/**
判断3个点是否共线
*/
bool isThreePointsOnOneLine(const Point& p1,const Point& p2,const Point& p3){if(p2.x==p1.x){if(p2.x==p3.x)return true;return false;}else{if(p2.x==p3.x)return true;}//判断依据:p2与p1两点构成直线的斜率=p2与p3两点构成直线的斜率double k1=(p2.y-p1.y)/(p2.x-p1.x);double k2=(p3.y-p2.y)/(p3.x-p2.x);double DIFF=0.00000001;if( fabs(k1-k2)<DIFF  )return true;return false;
}

参考资料:

1. 三角形外接圆半径公式:http://zhidao.baidu.com/link?url=1WKM_z0Vfaejav_OnjsiSJtFf1LFyEKPaS4EPswqkd5xBbCAAJzNZNn3qwVpS_XymmetcTDhCQ4HRShVXEjDI_

2. 三角形外接圆圆心公式:http://zhidao.baidu.com/link?url=-3KVP3Gi5Nqs6gEb_gYt1TfWSDhcI13Etsd8xeMorWiQ64x7v8HMapIU-pVx7GHjIPZbHvfQejx3uGDnmi6UI_

平面三角形外接圆圆心与半径求解算法相关推荐

  1. 求三角形的外接圆圆心个半径

    做华南师范大学校赛初赛的一道计算几何题,无聊暴力推公式. #include<stdio.h> #include<string.h> #include<math.h> ...

  2. 算法笔记4.5.2二分扩展:凸多边形的外接圆之最大半径

    算法笔记4.5.2二分扩展:凸多边形的外接圆之最大半径 二分法求外接圆最大半径 题目描述 思路: 代码如下 二分法求外接圆最大半径 题目描述 给出N个线段长度,试将它们头尾相接组合成一个凸多边形,使凸 ...

  3. MATLAB实现利用三个不共线的点绘制圆(包括圆心和半径的求解)

    通过三个不共线的平面点绘制圆形/MATLAB实现 1: 三个不共线的点求解圆心和半径 假设三个不共线的点的坐标分别为P1(x1,y1).P2(x2,y2)P1(x1,y1).P2(x2,y2)P1(x ...

  4. C++求解圆心、半径、直线与圆交点

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 C++求解圆心.半径.直线与圆交点 前言 一.检测对象 二.检测方法 1.检测圆心和半径 2.求解直线与圆的交点 3.计算圆环残缺比例 ...

  5. c++ 圆上任意点坐标计算_已知圆上任意三点坐标如何编程来计算这个圆的圆心和半径...

    在过去的一周时间里一直在计算师兄交代的任务 ,啥都没学,就一直在干这活.其中呢,我想的一个算法中就用到了本文中的这个小知识(主要就是线性代数和高中的一些知识结合起来).师兄说做的这个东西的内容要保密, ...

  6. java求外接圆圆心_吉软_Java_第六次作业

    编写一个圆类Circle 要求: 1. 该类拥有两个属性: 1) Point p代表圆心 2) float radius代表半径 2. 构造方法 1) Circle() 2) Circle(Point ...

  7. OpenCV检测圆并求出圆心与半径

    对自己的项目有一个简单的想法,想先用OpenCV检测出图片中的圆,并找到圆心与半径.以前从别人的博客学习了很多,现在也把我的一个简单代码贴在下面,并注释.希望能给各位有一点点帮助. int main( ...

  8. 三维重建(8)之三维空间点集拟合圆,获取圆心及半径

    三维重建之三维空间点集拟合圆,获取圆心及半径 给定任意一组三维空间点,通过拟合运算得到圆的圆心和半径,matlab仿真效果如下: 1. 拟合原理 首先,所有离散点尽可能在一个平面上,平面方程可表示为 ...

  9. 最小二乘法拟合圆心与半径

    公众号"轻松玩转机器人",欢迎关注. 1.算法介绍 最小二乘法的目的,通俗来说,就是拟合变量之间的关系. 由于现实世界观测的变量存在噪声,找不到完美.不存在误差的关系,因此我们退而 ...

  10. 技术图文:排序技术在求解算法题中的应用

    背景 前段时间,在知识星球立了一个Flag,这是总结Leetcode刷题的第五篇图文. 理论部分 C# 中的排序 对集合类的排序,我们通常使用位于 System.Core 程序集,System.Lin ...

最新文章

  1. codeforces 293E Close Vertices 点分治+滑窗+treap
  2. 读服务器文件,读取服务器文件
  3. C# 工厂模式 简单入门
  4. python websocket server_用Python实现一个简单的WebSocket服务器
  5. yum groupinstall “Development Tools“查看其软件列表
  6. 糟糕程序员的20个坏习惯
  7. 93.7%的程序员!竟然都不知道Redis为什么默认16个数据库?
  8. (转)淘淘商城系列——maven工程debug调试
  9. 协同过滤算法_基于用户的协同过滤推荐算法原理和实现
  10. C++_类和对象_对象特性_成员变量占用对象内存_成员函数_静态成员函数_静态变量_都不占用对象内存_他们是分开存储的---C++语言工作笔记048
  11. 【网络信息安全】授权与访问控制
  12. 20篇聊天机器人领域必读论文速递!
  13. ubuntu install wiznote
  14. OSChina 周六乱弹 ——你打算怎么和老妈解释
  15. 《阴阳师》RPG游戏体验报告
  16. data backup vs archiving
  17. keep-alive的作用是什么? 使用它的目的是什么?
  18. 有什么提升技术能力的网站
  19. Docker-Windows安装、升级、卸载
  20. Java用Jsoup开发爬虫获取双色球开奖信息

热门文章

  1. JS实现PDF合并功能
  2. K3 Cloud 数据库查询表常用语句
  3. php二维码与电子名片
  4. 问个globle的问题,如何定时更新论坛的数据啊?
  5. Redis常用命令大集合(快速入门)
  6. arm+linux书籍
  7. 使用 Electron 打印到 PDF
  8. LabVIEW编程LabVIEW开发Agilent 4294A 例程与相关资料
  9. 左耳朵耗子的技术书籍建议
  10. Java基础常见面试题及详细答案(总结40个)