求解过程简单直接上完成的函数
# include <math.h>
void get_circle(double x1, double y1, double x2, double y2, double x3, double y3,)
{
double r, x0, y0;
double x12 = x2 - x1;
double y12 = y2 - y1;
double x13 = x3 - x1;
double y13 = y3 - y1;
double z2 = x12*(x1 + x2) + y12*(y1 + y2);
double z3 = x13*(x1 + x3) + y13*(y1 + y3);
double dt = 2.0 *(x12 * (y3 - y2) - y12* (x3 - x2));
if(fabs(dt) < 1e-5)
{
r = -1;
return;
}
x0 = (y13 * z2 - y12 * z3) / dt;
y0 = (x12 * z3 - x13 * z2) / dt;
r = sqrt((x1 - x0) * (x1 - x0) + (y1 - *y0) * (y1 - *y0));
CString str;
str.Format("R=%0.3f x0=%0.3f y0=%0.3f", r, *x0, *y0);
AfxMessageBox(str);
}