已知三点求圆心和半径 | 您所在的位置:网站首页 › 已知圆方程求圆心坐标 › 已知三点求圆心和半径 |
https://blog.csdn.net/youhuakongzhi/article/details/86474619 https://blog.csdn.net/qq_43572555/article/details/103470968 很简单的推导,以后用的时候就不用浪费时间了, 圆的一般方程为: 三个已知点为(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 实验室设备网 版权所有 |