rt

解决方案 »

  1.   


    要计算也很简单, 就是算三角形外接圆,假设点 p1(x1,y1) p2(x2,y2) p3(x3,y3)计算 p1, p2 的中垂线方程 f1, 计算 p2, p3 的中垂线方程 f2,计算 f1 ,f2 方程的交点,就是圆心圆心和任意一点的距离就是半径根据中垂线性质很容易知道三点就在这个求得的圆上
      

  2.   

    to tiaoci(我挑刺,我快乐) :
    考虑中垂线斜率无限大的情况了吗?
    我的思路也是这个,可是经常除数为0(我是随机取三点的)
      

  3.   

    to MrKnowNothing(尽管一无所知 却努力无所不知)
       你可以使用向量方式做,不需要考虑斜率的另外,即使对于3维和3维以上的空间,根据张量知识也是必定确定一个圆的,因为首先根据3点,我们可以确定一个平面,平面方程就是 a * (p2 - p1) + b * (p3 - p1)而根据前面的方法,共面非共线的三点就能确定一个圆
      

  4.   

    计算中垂线方程这样做p1(x1, y1) p2(x2, y2) p3(x3, y3)边的中点为 (p1 + p2) / 2, (p2 + p3) / 2, (p3 + p1) / 2
    各边向量为 p2 - p1, p3 - p2, p1 - p3
    各中垂线向量为
      (y1 - y2, x2 - x1), (y2 - y3, x3 - x2), (y3 - y1, x1 - x3)所以三条中垂线方程为V1 = [(x1 + x2)/2 , (y1 + y2)/2 ] + t1 * [y1 - y2, x2 - x1]
    V2 = [(x2 + x3)/2 , (y2 + y3)/2 ] + t2 * [y2 - y3, x3 - x2]
    V3 = [(x3 + x1)/2 , (y3 + y1)/2 ] + t3 * [y3 - y1, x1 - x3]上面三个方程是相关的,谁便取两个计算就可以了,取 V1,V2 化成解方程| y1 - y2, y3 - y2 |   | t1 |   | (x3 - x1) / 2 |
    |                  | * |    | = |               |
    | x2 - x1, x2 - x3 |   | t2 |   | (y3 - x1) / 2 || a b |   | t1 |   | z1 |
    |     | * |    | = |    |
    | c d |   | t2 |   | z2 |二元一次方程很容易解的(列替换法)t1 = (z1 * d - z2 * b) / (a * d - c * b)
    t2 = (z2 * a - z1 * c) / (a * d - c * b)由于 delta 是循环式,所以无论选三个方程中的哪两个都是一样的但这一步的除法不可避免,当 delta 非常小时,最后可能存在误差当然可以使用一定的技巧减少误差
      

  5.   

    上面 delta 是指| y1 - y2, y3 - y2 |
    |                  |
    | x2 - x1, x2 - x3 |希望没有推错,阿门~~