急求 已知圆上3点 计算圆心位置及半径的方法

来源:百度知道 编辑:UC知道 时间:2024/06/08 16:17:18
最好是c++语言的 或者是直接用3点坐标xy的公式
急求

#include<iostream>
using namespace std;

struct Point
{
float x;
float y;
};
Point* GetCenter(Point&p1,Point&p2,Point&p3)
{
Point C1,C2,I;
C1.x=(p1.x+p2.x)/2.0;
C1.y=(p1.y+p2.y)/2.0;
C2.x=(p2.x+p3.x)/2.0;
C2.y=(p2.y+p3.y)/2.0;
float k1,k2;
if((p2.y-p1.y)==0.0)
{
if((p3.y-p2.y)==0.0)
{
cout<<"三点共线,无法构成一个圆!"<<endl;
return NULL;
}
else
{
k2=-1*(p3.x-p2.x)/(p3.y-p2.y);
I.x=C1.x;
I.y=k2*(I.x-C2.x)+C2.y;
}
}
else
{
k1=-1*(p2.x-p1.x)/(p2.y-p1.y);
if((p3.y-p2.y)==0.0)
{
I.x=C2.x;
I.y=k1*(I.x-C1.x)+C1.y;
}
else
{
k2=-1*(p3.x-p2.x)/(p3.y-p2.y);
if(k1==k2)
{
cout<<"三点共线,无法构成一个圆!"<<endl;
return NULL;
}
else
{
I.x=(