在C#中画一段圆弧的其中有个重载方法为Graphics.DrawArc(Pen,X,Y,Width,Heigth,startAngle,sweepAngle)
现在已经知道圆弧经过的两点A(x1,y1),B(x2,y2),我怎么确定圆心坐标呢?

解决方案 »

  1.   

    圆心坐标的轨迹方程为(x-x1)*(x-x1)+(y-y1)*(y-y1)=(x-x2)*(x-x2)+(y-y2)*(y-y2)
      

  2.   

    共享:
    private void center(double x1,double y1,double x2,double y2,double r,ref double[] x,ref double[] y)   
    {   
    double   dx   =   0.5*(y1-y2);   
    double   dy   =   0.5*(x2-x1);   
    double   R   =   dx*dx+dy*dy;  
     
    if(R < 0.0000001 || r*r<R )  
    return ;    r = System.Math.Sqrt(r*r-R)/System.Math.Sqrt(R);   
    dx *= r;   
    dy *= r;   
    x[0] = 0.5*(x1+x2)+dx;   
    y[0] = 0.5*(y1+y2)+dy;   
    x[1] = 0.5*(x1+x2)-dx;   
    y[1] = 0.5*(y1+y2)-dy;    
    }