已知两个圆的原心坐标(X1,Y1) ,(X2,Y2) ,两圆心距离L ,两圆有2条外公切线,且两圆半径r1=r2, 求两圆上的切点,共4点

解决方案 »

  1.   

    看清,给出的都是已知条件,x1,y1, x2,y2, L ,r1,r2
      

  2.   

    好像多了个已知条件:Lvar
      x1: integer = 100;
      y1: integer = 150;
      x2: integer = 250;
      y2: integer = 350;
      r1: integer = 75;
      r2: integer = 100;procedure TForm1.Button1Click(Sender: TObject);
    var
      w, h: integer;
      l: integer;
      p11, p12, p21, p22: TPoint;
    begin
      w:=abs(x1-x2);
      h:=abs(y1-y2);
      l:=Round(Sqrt(Sqr(x1-x2)+Sqr(y1-y2)));  p11.X:=x1-r1*h div l;
      p11.Y:=y1+r1*w div l;
      p12.X:=x2-r2*h div l;
      p12.Y:=y2+r2*w div l;  p21.X:=x1+r1*h div l;
      p21.Y:=y1-r1*w div l;
      p22.X:=x2+r2*h div l;
      p22.Y:=y2-r2*w div l;  Canvas.Ellipse(x1+r1, y1+r1, x1-r1, y1-r1);
      Canvas.Ellipse(x2+r2, y2+r2, x2-r2, y2-r2);
      Canvas.MoveTo(p11.X, p11.Y);
      Canvas.LineTo(p12.X, p12.Y);
      Canvas.MoveTo(p21.X, p21.Y);
      Canvas.LineTo(p22.X, p22.Y);
    end;end.
      

  3.   

    上面的代码,我编译不了,我把它们的类型改成double就不行了
    [Error] searchUnit.pas(860): Operator not applicable to this operand type
      

  4.   

    说明一下,我用的是double型,错误就指向了p11.X:=x1-r1*h div l;
    后来就发现,div不支持double,有没有好的方法,搞定它。
      

  5.   

    自己写一个类似div的函数就可以了
      

  6.   

    搞一个div的函数?有没直接点的方法