坐标1(x1,y1)坐标2(x2,y2)弧度:E
圆半径:R
列出方程:
(x-x1)(x-x1)+(y-y1)(y-y1)=R·R
(x-x2)(x-x2)+(y-y2)(y-y2)=R·R
4R·R·Sin(E/2)·Sin(E/2)=(x1-x2)(x1-x2)+(y1-y2)(y1-y2)
以上方程三个未知数,三个独立条件,完整的确定解方程,请自己解吧!我就不动手了,哈哈哈

解决方案 »

  1.   

    告诉你一个苯方法,
    前提:两点a(x1,y1),b(x2,y2),α为对应弧角
    1.先计算垂分线斜率,
    k1,k2为斜率,其中k1=(y2-y1)/(x2-x1)(当然要判断x1<>x2,至于等于时就不用我说了,那简直太好做了)
    k1*k2=-1
    2.写出垂分线方程,并用之导出y用x表示的关系式
    3.用两点间距离公式,求到即((x1+x2)/2,(y1+y2)/2)的距离
    即可.
    至于程序不用我说了,应该很容易实现的
      

  2.   

    补一句,第三点的距离是很好求的,可以用下面的公式直接算出距离的平方:
    dd=r^2-((x1-x2)^2+(y2-y1)^2)/4
    然后dd=(x-(x1+x2)/2)^2+(y-(y1+y2)^2)
    其中x,y为垂分线上一点,不难用2代入上式中,计算出X,继而算出Y
      

  3.   

    呵呵,初中的几何问题哦。
    圆心肯定是在弦两端连线的中垂线上,利用直角三角形及余弦函数就可以搞定啦。
    首先设弦两个端点为(x1,y1)(x2,y2),弧度为alpha
    1.先把弧度转成角度以便计算角度deg:=alphi*180/PI;
    2.计算两端点连线的方程,设方程形式为 Y=a1*X+b1
      则  a1:=(y1-y2)/(x1-x2);
          b1:=y1-a1*x1;
    3.计算上一步中的线段的中垂线,这里设成参数方程比较方便
      设为{X=a2*t+b2
          {Y=a3*t+b3
      t的含义为直线上的点到弦中点的距离
      这里略过求解步骤,直接给出结果
          b2:=(x1+x2)/2;
          b3:=(y2+y3)/2;
          temp:=sqrt(sqr(b2)+sqr(b2/a1));
          a2:=(-b2)/temp;
          a3:=(b2/a1)/temp;
    4.计算圆心到弦的距离,设为od
          temp:=sqrt(sqr(x1-x2)+sqr(y1-y2))/2;
          od:=ctg(deg/2)*temp;
    5.计算出圆心的坐标
          ox1:=a2*od+b2;
          oy1:=a3*od+b3;
          ox2:=a2*(-od)+b2;
          oy2:=a3*(-od)+b3;
    之所以有两个(ox1,oy1)和(ox2,oy2)是因为弧的方向没有给定,这就要根据需要取舍了,自己判断哦!完整代码:
      const
        PI=3.14159265;
      var
        ...
      
      Procedure GetCircleCenter(deg : double; x1,y1,x2,y2 : double; Var ox1,oy1,ox2,oy1 : double);
      var
        a1,b1,a2,a3,b2,b3,temp,od:double;
      begin
        deg:=alphi*180/PI;
        a1:=(y1-y2)/(x1-x2);
        b1:=y1-a1*x1;
        b2:=(x1+x2)/2;
        b3:=(y2+y3)/2;
        temp:=sqrt(sqr(b2)+sqr(b2/a1));
        a2:=(-b2)/temp;
        a3:=(b2/a1)/temp;
        temp:=sqrt(sqr(x1-x2)+sqr(y1-y2))/2;
        od:=ctg(deg/2)*temp;
        ox1:=a2*od+b2;
        oy1:=a3*od+b3;
        ox2:=a2*(-od)+b2;
        oy2:=a3*(-od)+b3;
      end;