求出圆心连线长度和连线中点,就可以推算出交点坐标

解决方案 »

  1.   

    楼主数学没有学好啊。
    先是要判断是否相切,即圆心连线是否大于,等于或小于两圆心半径。
    如果不相切(大于),那就没有交点。
    如果等于,
    设圆心分别为x1,y1和x2,y2.那么交点就是中点即
    P((x1+x2)/2,(y1+y2)/2)。
    如果小于,那么有两个交点。
    设:
    斜率k = (y2-y1)/(x2-x1);
    过中点且与(x1,y1), (x2,y2)相垂直的线是:
    y = k`x + C
    k` = 1/k;
    所以
    y=x/k + C.
    带入中点P,得:
     C = (y1+y2)/2 - (x1+x2)/2k
    所以这条线为
    y = x/k + (y1+y2)/2 - (x1+x2)/2k.
    然后根据圆心算切点(于这条线距离为半径长的点,利用半径,中点到圆心的距离,可以推算)...
      

  2.   

    楼上的分析很对数学是程序的灵魂
    最近在写一些数学算法库 也发现这个问题
    不过使用更加巧妙的方法实现了