http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=199
题意:求两圆切线相交点的坐标
当半径相同,两圆平行,所以不可以;
当圆形距小于半径差,有一圆在另一圆内,所以也不可以;
当圆心相同,和上相同,无切线,所以也不可以。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<bitset>
#include<stdlib.h>
using namespace std;
int main()
{
int Case ;
double x1 , y1 , x2 , y2 , r1 , r2 ;
double x , y ;
cin >> Case ;
while( Case-- )
{
cin >> x1 >> y1 >> r1 ;
cin >> x2 >> y2 >> r2 ;
double d = ( double )sqrt( ( x1 - x2 ) * ( x1 - x2 ) + ( y1 - y2 ) * ( y1 - y2 ) );
if( ( x1 == x2 && y1 == y2) || ( r1 == r2 ) || d <= abs( r1 - r2 ) )
{
cout << "Impossible." << endl ;
continue ;
}
// y=(y1-y2)*r1/(r2-r1)+y1;
y = ( y2 * r1 - y1 * r2 ) / ( r1 - r2 ) ;
x = ( x2 * r1 - x1 * r2 ) / ( r1 - r2 ) ;
printf( "%.2f %.2f\n" , x , y );
}
return 0 ;
}