51nod 1298 圆与三角形
2016-11-03 21:06
267 查看
#include <bits/stdc++.h> using namespace std; struct node { long long x,y; node(){}; node(int a,int b) { x=a;y=b; }; }; long long dotmulti(node n1,node n2) { return n1.x*n2.x+n1.y*n2.y; } long long disd(node n1,node n2) { return (n1.x-n2.x)*(n1.x-n2.x)+(n1.y-n2.y)*(n1.y-n2.y); } int main() { long long t,cx,cy,cr,x[5],y[5],A,B,C,d1,d2,i,flag; cin>>t; while(t--) { scanf("%lld%lld%lld",&cx,&cy,&cr); for(i=0;i<3;i++) scanf("%lld%lld",&x[i],&y[i]); flag=0; for(i=0;i<3;i++) { d1=disd(node(x[i],y[i]),node(cx,cy)); d2=disd(node(x[(i+1)%3],y[(i+1)%3]),node(cx,cy)); if(d1<cr*cr&&d2<cr*cr) continue; else if(d1>cr*cr&&d2>cr*cr) { if(dotmulti(node(x[i]-cx,y[i]-cy),node(x[(i+1)%3]-x[i],y[(i+1)%3]-y[i]))<0 && dotmulti(node(x[(i+1)%3]-cx,y[(i+1)%3]-cy),node(x[i]-x[(i+1)%3],y[i]-y[(i+1)%3]))<0) { A=y[i]-y[(i+1)%3]; B=-(x[i]-x[(i+1)%3]); C=x[i]*y[(i+1)%3]-x[(i+1)%3]*y[i]; if((A*cx+B*cy+C)*(A*cx+B*cy+C)<=cr*cr*(A*A+B*B)) flag=1; } } else flag=1; } if(flag) printf("Yes\n"); else printf("No\n"); } }
相关文章推荐
- 51nod 1298 圆与三角形 (计算几何)
- 51Nod 1298 圆与三角形
- 圆与三角形-51NOD 1298
- 51nod--1298 圆与三角形
- 51NOD 1298 圆与三角形
- 51Nod 1298 圆与三角形
- 51nod_1298_圆与三角形
- 51Nod-1298-圆与三角形
- 51nod 1298 圆与三角形(计算几何)
- 51Nod-1298 圆与三角形
- 51Nod 1298 圆与三角形
- 51Nod 1298:圆与三角形(计算几何)
- 51NOD 1298圆与三角形
- 51nod 1298 圆与三角形(计算几何)
- 51nod 1298 圆与三角形
- 51nod 1298:圆与三角形(计算几何)
- 51nod 1298 圆与三角形
- [51nod]1298 圆与三角形
- 51nod 1298 圆与三角形
- 51Nod 1298 圆与三角形 计算几何