我知道三个点在圆上的位置,分别是
pt1(x1, y1,z1)
、pt2(x2, y2, z2)
和 pt3(x3, y3,z3)
。我需要找到这个圆的半径。已经有一个用于计算二维空间半径的函数,现在将其复制在这里。public static double ComputeRadius(Location a, Location b, Location c)
{
double x1 = a.x;
double y1 = a.y;
double x2 = b.x;
double y2 = b.y;
double x3 = c.x;
double y3 = c.y;
double mr = (double)((y2 - y1) / (x2 - x1));
double mt = (double)((y3 - y2) / (x3 - x2));
double xc = (double)((mr * mt * (y3 - y1) + mr * (x2 + x3) - mt * (x1 + x2)) / (2 * (mr - mt)));
double yc = (double)((-1 / mr) * (xc - (x1 + x2) / 2) + (y1 + y2) / 2);
double d = (xc - x1) * (xc - x1) + (yc - y1) * (yc - y1);
return Math.Sqrt(d);
}
sqrt(pow(x1-x2,2) + pow(y1-y2,2) + pow(z1-z2,2))
等操作),如果我们将这些长度命名为la
,lb
和lc
,则找到半径的公式将是:2*la*lb*lc / sqrt((la+lb+lc)*(lb+lc-la)*(la+lc-lb)*(la+lb-lc))
。 - Jcl