已知三点求圆心和半径 您所在的位置:网站首页 已知圆方程求圆心坐标 已知三点求圆心和半径

已知三点求圆心和半径

2023-09-14 00:17| 来源: 网络整理| 查看: 265

https://blog.csdn.net/youhuakongzhi/article/details/86474619

https://blog.csdn.net/qq_43572555/article/details/103470968

很简单的推导,以后用的时候就不用浪费时间了,

圆的一般方程为:

Circle equation

三个已知点为(x1,y1)   (x2,y2)  (x3,y3)

则圆心(x,y)和半径r的计算结果为:

需要注意,如果三个点共线,那么这三个点肯定无法形成圆,这一问题可通过上式的A来判定,A=0说明三点共线;

 

#include #include #include #include using namespace std; int main() { //已知三个点确定圆的半径和圆心 double x1,x2,x3,y1,y2,y3,x,y,r,A,B,C,D; cin>>x1>>y1>>x2>>y2>>x3>>y3; A=x1*(y2-y3)-y1*(x2-x3)+x2*y3-x3*y2; B=(x1*x1+y1*y1)*(y3-y2)+(x2*x2+y2*y2)*(y1-y3)+(x3*x3+y3*y3)*(y2-y1); C=(x1*x1+y1*y1)*(x2-x3)+(x2*x2+y2*y2)*(x3-x1)+(x3*x3+y3*y3)*(x1-x2); D=(x1*x1+y1*y1)*(x3*y2-x2*y3)+(x2*x2+y2*y2)*(x1*y3-x3*y1)+(x3*x3+y3*y3)*(x2*y1-x1*y2); x=-B/(2*A); y=-C/(2*A); r=sqrt((B*B+C*C-4*A*D)/(4*A*A)); //-1表示圆不存在 if(!A) cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有