zoj 1199 Point of Intersection
2011-07-05 09:20
302 查看
求两圆公切线的交点,水题。只求外公切线交点。
不可能有外公切线的情况是,半径相等或者内含,内切的情况。
只求交点的话,画图,根据x y的比例关系就可以求得。
不可能有外公切线的情况是,半径相等或者内含,内切的情况。
只求交点的话,画图,根据x y的比例关系就可以求得。
#include <queue> #include <stack> #include <math.h> #include <stdio.h> #include <stdlib.h> #include <iostream> #include <limits.h> #include <string.h> #include <string> #include <algorithm> using namespace std; struct point {double x,y;}; point a,b; const double eps = 1e-6; bool dy(double x,double y) { return x > y + eps;} // x > y bool xy(double x,double y) { return x < y - eps;} // x < y bool dyd(double x,double y) { return x > y - eps;} // x >= y bool xyd(double x,double y) { return x < y + eps;} // x <= y bool dd(double x,double y) { return fabs( x - y ) < eps;} // x == y double disp2p(point a,point b) { return sqrt( ( a.x - b.x ) * ( a.x - b.x ) + ( a.y - b.y ) * ( a.y - b.y ) ); } bool c2c_ainb(point a,double r1,point b,double r2) { return xyd(disp2p(a,b),r2 - r1) || xyd(disp2p(a,b),r1 - r2); } int main() { int ncases; double r1,r2; scanf("%d",&ncases); while( ncases-- ) { scanf("%lf%lf%lf",&a.x,&a.y,&r1); scanf("%lf%lf%lf",&b.x,&b.y,&r2); if( dd(r1,r2) || c2c_ainb(a,r1,b,r2) ) { printf("Impossible.\n"); continue; } if( dy(r1,r2) ) { swap(r2,r1); swap(a,b); } double x = (r2*a.x - r1*b.x)/(r2 - r1); double y = (r2*a.y - r1*b.y)/(r2 - r1); printf("%.2lf %.2lf\n",x,y); } return 0; }
相关文章推荐
- ZOJ 1199 Point of Intersection(平面几何)
- ZOJ 1199 Point of Intersection
- ZOJ 1199 Point of Intersection
- zoj1199-Point of Intersection
- ZOJ1199Point of Intersection【公式推导】
- zoj 3198 Intersection of Two Sets
- ZOJ 3198 Intersection of Two Sets
- Point of Intersection
- ZOJ 3198 Intersection of Two Sets
- ZOJ 3198 Intersection of Two Sets
- ZOJ 3198 Intersection of Two Sets
- Data Structure Linked List: Write a function to get the intersection point of two Linked Lists.
- ZOJ1199-Point of Intersection
- Find the first intersection of two lists (if the two list are merged at some point)
- Error usage of Smart Point
- TOJ 4369 ZOJ 3632 Watermelon Full of Water / 线段树优化DP
- [leetcode]#160 Intersection of Two Linked Lists
- UVa 10790 - How Many Points of Intersection?
- uva10790 - How Many Points of Intersection?
- zoj 3175 Number of Containers(数论~)